*******************************************************
实用环境:pb6.5\pb70\pb80\pb90
功 能:位图菜单的制作
方 法:如下
*******************************************************
第一步,首先要建立一个menu对象,命名为:m_bitmap。设计格式有
一个主菜单 file,下面有4个子菜单new\open\save\exit,如下:
----file-----
-new
-open
-save
-exit
第二步,找4个位图文件,放到exe所在的目录下,命名为:new.bmp\open.bmp\save.bmp\exit.bmp
第三步,编代码
主窗体w_main,窗体类型main,加入主菜单m_menu。
实例变量声明:
//win32常量
constant integer image_bitmap = 0
constant integer lr_loadfromfile = 16
constant integer sm_cxmenucheck = 71
constant integer sm_cymenucheck = 72
constant integer mf_bitmap = 4
constant integer mf_byposition = 1024
全局外部函数引入api:
function ulong loadimagea(ulong hintance, string filename,uint utype,&
int x,int y,uint fload) library "user32.dll"
function boolean setmenuitembitmaps(ulong hmenu,uint upos,uint flags,&
ulong handle_bm1,ulong handle_bm2) library "user32.dll"
function int getsystemmetrics( int nindex ) library "user32.dll"
function ulong getmenuitemid(ulong hmenu,uint uitem) library "user32.dll"
function int getsubmenu(ulong hmenu,int pos) library "user32.dll"
function ulong getmenu(ulong hwindow) library "user32.dll"
function boolean modifymenu(ulong hmnu, ulong uposition, ulong uflags, &
ulong uidnewitem, long lpnewi) alias for modifymenua library "user32.dll"
open事件中:
long ll_mainhandle
long ll_submenuhandle
integer li_menuitemid
long ll_x
long ll_y
long ll_bitmapnew
long ll_bitmapopen
long ll_bitmapsave
long ll_bitmapexit
//取得菜单句柄
ll_mainhandle = getmenu(handle(this))
//取得第一个菜单项的句柄
ll_submenuhandle = getsubmenu(ll_mainhandle,0)
//装入图像数据
ll_bitmapnew = loadimagea(0,’new.bmp’,image_bitmap,0,0,lr_loadfromfile)
ll_bitmapopen = loadimagea(0,’open.bmp’,image_bitmap,0,0,lr_loadfromfile)
//取得第一个子菜单项的id并修改菜单
li_menuitemid = getmenuitemid(ll_submenuhandle,0)
modifymenu(ll_submenuhandle,li_menuitemid,mf_bitmap,li_menuitemid,ll_bitmapnew)
//取得第二个子菜单项的id并修改菜单
li_menuitemid = getmenuitemid(ll_submenuhandle,1)
modifymenu(ll_submenuhandle,li_menuitemid,mf_bitmap,li_menuitemid,ll_bitmapopen)
//取得菜单缺省check-mark位图的尺寸
ll_x = getsystemmetrics(sm_cxmenucheck)
ll_y = getsystemmetrics(sm_cymenucheck)
//按系统尺寸装入图像
ll_bitmapsave = loadimagea(0,’save.bmp’, image_bitmap ,ll_x,ll_y,lr_loadfromfile)
ll_bitmapexit = loadimagea(0,’exit.bmp’, image_bitmap ,ll_x,ll_y,lr_loadfromfile)
//设置菜单位图
setmenuitembitmaps(ll_submenuhandle,2,mf_byposition,ll_bitmapsave,ll_bitmapsave)
setmenuitembitmaps(ll_submenuhandle,3,mf_byposition,ll_bitmapexit,ll_bitmapexit)
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器