时间: 2021-08-13 作者:daque
******************************************************* 适用情况: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)