• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

位图菜单的制作

发布: 2007-7-02 11:08 | 作者: admin | 来源: | 查看: 16次 | 进入软件测试论坛讨论

领测软件测试网
*******************************************************
实用环境: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)

感兴趣的,还不快试试。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网