首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 开发频道>PB中用Windows API制作位图菜单

PB中用Windows API制作位图菜单

2004-01-16 17:26作者:SCAN出处:论坛责任编辑:方舟

  3)最后给窗口w_main的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
long ll_BitmapCopy
long ll_BitmapCut
long ll_BitmapPaste
long ll_BitmapDelete
//取得菜单句柄
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)
//取得第二个菜单项的句柄
Ll_SubMenuHandle = GetSubMenu(ll_MainHandle,1)
//装入图像数据
ll_BitmapCopy = LoadImageA(0,'copy.bmp',IMAGE_BITMAP,0,0,LR_LOADFROMFILE)
ll_BitmapCut = LoadImageA(0,'cut.bmp',IMAGE_BITMAP,0,0,LR_LOADFROMFILE)
//取得第一个子菜单项的ID并修改菜单
li_MenuItemID = GetMenuItemID(ll_SubMenuHandle,0)
ModifyMenu(ll_SubMenuHandle,li_MenuItemID,MF_BITMAP,li_MenuItemId,ll_BitmapCopy)
//取得第二个子菜单项的ID并修改菜单
li_MenuItemID = GetMenuItemID(ll_SubMenuHandle,1)
ModifyMenu(ll_SubMenuHandle,li_MenuItemID,MF_BITMAP,li_MenuItemId,ll_BitmapCut)
//取得菜单缺省check-mark位图的尺寸
ll_x = GetSystemMetrics(SM_CXMENUCHECK)
ll_y = GetSystemMetrics(SM_CYMENUCHECK)
//按系统尺寸装入图像
ll_BitmapPaste=LoadImageA(0,'paste.bmp', IMAGE_BITMAP ,ll_x,ll_y,LR_LOADFROMFILE)
ll_BitmapDelete=LoadImageA(0,'delete.bmp', IMAGE_BITMAP ,ll_x,ll_y,LR_LOADFROMFILE)
//设置菜单位图
SetMenuItemBitmaps(ll_SubMenuHandle,2,MF_BYPOSITION,ll_BitmapPaste,ll_BitmapPaste)
SetMenuItemBitmaps(ll_SubMenuHandle,3,MF_BYPOSITION,ll_BitmapDelete,ll_BitmapDelete)

  上面的代码知识如何设置File与Edit子菜单项的脚本。至此整个应用程序制作完毕,用户在运行该程序时便可以得到带位图的菜单项,本例在PowerBuilder7.0中运行通过。如下图显示。



  从上面设置菜单位图的脚本中我们可以看到,菜单可以带有两种不同类型的图标:完全位图菜单和文字与位图共存菜单。用户在实际开发中可以根据自己的喜好选择相应的类型。值得注意的是,用户在制作应用程序时,必须提供相应的位图,否则将会出错。
共2页。 9 1 2

关注此文的读者还看过:

返回开发频道首页

共2页。 上一页12

软件频道最新更新

热点推荐

天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络