首页 > 开发 > 综合 > 正文

位图菜单的制作

2024-07-21 02:08:11
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。

  • *******************************************************
    实用环境:pb6.5/pb70/pb80/pb90
    功    能:位图菜单的制作
    方    法:如下
    *******************************************************
    第一步,首先要建立一个menu对象,命名为:m_bitmap。设计格式有
    一个主菜单 file,下面有4个子菜单new/open ave/exit,如下:
     ----file-----
      -new
      -open
      -save
      -exit
    第二步,找4个位图文件,放到exe所在的目录下,命名为:new.bmp/open.bmp ave.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)

    感兴趣的,还不快试试。
    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表