说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在菜单中加入图标 -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
在菜单中加入图标 -VB资料

 
VB菜单编辑器所提供的默认菜单是不能在菜单项中加入图标的,而许多流行的软件大都采用了漂亮的带有小图标的菜单,如果想利用VB实现这种效果就必须要调用API函数来实现了。例中我们使用了三个与菜单操作有关的函数:GetMenu、SetMenuItemBitmaps、GetSubMenu。

  
  我们先来声明API函数,本例中用到的三个函数声明如下:
   Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long

   Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long

   Private Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long

  GetMenu函数的作用得到一个窗口中的菜单的句柄(这个菜单句柄应理解为处于某个窗体上的所有菜单的入口),其中各个参数的意义如下表所示:

参数 意义
hwnd Long,窗口句柄。对于vb,这应该是一个窗体句柄
返回值 Long,依附于指定窗口的一个菜单的句柄(如果有菜单);否则返回零

  GetSubMenu函数用于取得一个弹出式菜单(弹出式菜单是指处于任何一级的菜单,注意不是菜单项)的句柄,它位于菜单中指定的位置,它的各个参数的意义如下:

参数 意义
hMenu Long,菜单的句柄
nPos Long,次级菜单在上级菜单中的位置。第一个位置的编号为0
返回值 Long,位于指定位置的弹出式菜单的句柄(如果有的话);否则返回零

  SetMenuItemBitmaps函数用于设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号(√),它的各个参数的意义如下:

参数 意义
hMenu Long,菜单的句柄
nPosition Long,欲设置位图的一个菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
wFlags Long,常数MF_BYCOMMAND或MF_BYPOSITION,取决于nPosition参数
hBitmapUnchecked Long,撤消复选时为菜单条目显示的一幅位图的句柄。如果为零,表示不在未复选状态下显示任何标志
hBitmapChecked Long,复选时为菜单条目显示的一幅位图的句柄。可设为零,表示复选时不显示任何标志。如两个位图句柄的值都是零,则为这个条目恢复使用默认复选位图
返回值 Long,非零表示成功,零表示失败。

  下面我们看看怎样为菜单的指定项目加上图标,步骤一:取得菜单的句柄并赋值给mHandle,接着取得mHandle句柄所指菜单的第一个弹出式菜单的句柄并赋值给sHandle:
   mHandle = GetMenu(form.hwnd)
   sHandle = GetSubMenu(mHandle, 0)

  然后就为菜单项加入图标,这里我们把wFlags参数设为了MF_BYPOSITION,也就是说使用菜单项的位置(从序号0开始)来标示菜单项:
   lRet = SetMenuItemBitmaps(sHandle, 0, MF_BYPOSITION, imOpen.Picture, imOpen.Picture)
   lRet = SetMenuItemBitmaps(sHandle, 1, MF_BYPOSITION, imSave.Picture, imSave.Picture)

  以上是为菜单项添加图标的基本方法,例中还演示了怎样为次级菜单中的菜单项添加图标,以及菜单项处于复选/非复选状态时,对应图标发生变化的方法,具体的实现方法可以参照程序中的注释。
AppGlu应用辅助工具:帮助开发者处理善后工作 iOS!你这几个方面该向Android好好学习 小于1%,中国有真正自主的移动操作系统吗? 张小龙专访系列(下):不一样的产品思维 Gartner:截止到2016年公有云市场复合增长为17.7% Appcore:在企业内部部署IaaS平台 B轮融资600万美元 超现实主义!用脑电波控制你的计算机设备 搜狐否认“情理之中”的退市 上市仍是最优选择 六大BaaS产品推荐:移动开发必备的后端云服务 未遵守承诺 微软遭遇欧盟7.31亿美元巨额罚单 PaaS正能量:6人团队,仅1人全职后端 支撑6000万用户 三星:我不抽成,收益100%让开发者拿去! 腾讯开放平台推“送红利计划” 承诺半年内不参与分成 JavaEE快速开发框架Wabacus 4.0发布,开发效率提高五倍以上 市盈率创新高 谷歌为什么会在苹果博弈中暂时胜出 从Rovio遇到危机,看现在应用市场的演变 Windows Azure支持Android应用 面向东亚推广云服务 抛弃DRAM、拥抱闪存,Facebook重做Memcached 夏普三星联姻 电子行业或将多元化发展 从下拉菜单设计细节看Amazon对用户体验的把握 Chartboost美女CEO:40人团队服务3亿移动玩家 Distimo:新晋开发者想让产品得到关注越来越难 OpenFeint绝迹后,开源项目OpenKit继续前进 美FDA通过搜索引擎和社交平台预警药品副作用 挖坟三星“眼球追踪技术”背后的技术团队 为什么开发者热衷在Stack Overflow上查阅API文档? Facebook推新News Feed 欲造就“个性化报纸” 女神程序员的一天:暴力测试social爬虫代码 2013IBM云存储路线图:更快,更简单,更安全 二战大数据故事:数学家、物理学家、概率论击败德国潜艇 软件定义网络服务商Pertino B轮融资2000万 菜鸟求助:关于句柄的问题。请高手多多指教 请问什么是存储过程(在SQL 2000SERVER中)? 1000分的大问题!***************怎么突破内存禁区读写的权限 java学什么?怎么学? java学什么?怎么学? 高分急救:Oracle安装完成后,服务可以启动,数据库不与服务一起启动,要手动启动 如何让启动时不自动进入x windows? 下载问题 如何得到CPU的序列号(编程) 向ActiveX控件是否可以传递数组参数 can i read or copy files in windows OS to linux? 什么错误? 将SYBASE数据库移植到SQL SERVER 过程中遇到的问题。急!help session问题 为什么我的web不能进断点? SO_REUSEADDR的疑问 关于web数据库的问题 怎么解??? 再送100分,求jtable例子! 怎样清除在image上画出的线,矩形(在运行时画上去的)?? 寻找在杭州文三路创业大厦11楼上班的朋友 where can i download simsun, and how can i use it? IIS与Apache一起工作,访问Apache时有什么办法不用指定端口? 是不是微软的一个低级漏洞? 谢谢zheng017给你的win2k superuser password的源程序。 在access2000的开发中,text框中如果只输入了空格,用text1.value取数据返回值却是null,如何能够返回空格呢? 强烈推荐:Robocode! 为了全体中国人!请回答我的问题!现在该如何访问google??????????????? =======请大家帮我介绍几个比较好的,LOTUS做的WEB网站。====== 为什么我在 M$ Win2000 使用钩子拦截键盘鼠标消息就那么困难 请问在datagrid里面如何增加记录??? 打算成立程序员单身者协会,欢迎大家发表意见,欢迎加入, snowy_howe请进来接分 邦定问题 高手指点 请问大家如何实现VB导入导出TXT文件(TAB分隔的数据)到数据库中?请具体一点,最好有例子 如何让一个模块在运行过程中中止运行. 请教如何控制目录返回?急!谢谢! 修改const常量问题 高手请进,关于asp远程读取信息的问题!急 关于VB 中的字符串截取 询问:国内有没有好的搜索网站????............... google不能用了,想用“3个代表”来搜索了 对在csdn灌水乐园混的程序员和非程序员突然有了种敬畏的感觉 如何远程获得对方机器的操作系统的类型? 请问Oracle和DB2 都是用什么写的? 有谁知道pbm_keydown事件返回值的含义? 大侠救命,SQL SERVER 访问问题,给高分 讨厌SOHU的请进来! "Mascot"该如何成为公司的中文名字? 我想学习ARM,现有SAMSUNG的ARM7芯片和CYGWIN(WINDOW下的UNIX),不知还需要些什么?可否给些相关的指点,谢谢! 用西班牙语介绍一下智利!特别是旅游的地方 小船渡河,河宽d=180m,水流速度v1=2.5m/s,(1) 若船在静水中的速度为v2=5m/s,求①欲使船在最短的时间内渡河,船头应朝什么方向,用多长时间,位移是多少.②,若航程最短,船头朝什么方向?用多少时 在矿山露天爆破中,什么是炸药单耗?说一下定义,有计算公式最好~ 用英语介绍一下智利的情况原文是这样的:Do you know anything about Chile?我是初三的,不要太复杂的单词与语法.围绕地理、人文、盛产等大方面说就好了.不能超过初中生的水平阿 电打火机里的产生高压电火花的原理是什么? 有机硅对油漆的破坏作用,有人知道么,会发生什么化学反应啊?有机硅或者含硅的胶对喷涂后的漆面有什么影响或者对漆料有什么影响? 焊接电源是如何分类的?共分几类?焊接电源是不是只是指弧焊电源还是弧焊电源只是焊接电源的一种? 打火机里的火花发生器的原理是什么?如题 煤矿爆破有经验的朋友告诉一下,因为现在井下遇到岩石,需要爆破,但是放了3炮一点效果都没有,我下井看了下感觉眼位不对,角度也不对,但不知道怎么去计算,就当一扇门,上面是拱形的半个圆, 电源电池掉了,正负级的代码符号各是什么?在哪焊接? 神东岩石的抗压强度求份神东矿区的岩石物理力学性质的参数,2-2煤顶板的 求有机物的同分异构体要不要考虑顺反异构,(如果题目没说),有些资料书上都没考虑顺反异构,它们不是同一物质啊?为什么不考虑? 飞镖盘最大多少寸的 盒子里有大小相同的20个红黄两种球,想要摸到红球的可能性是五分之二,盒子里应放 为什麼说:“多水的江南是易碎的玻璃,在哪儿,打不得这样的腰鼓?” 地理等高线专项训练,最好是有答案的, 一根圆柱管道,知道长度L直径D入口水压P1 出口水压P2 能算出水流速度V么? 作者为什么说多水的江南是易碎的玻璃,在那儿,打不起腰鼓 地理等高线是啥意思等高线是啥子东东,讲讲哈 哪些是一类电源 多水的江南是易碎的玻璃,在那儿,打不得这样的腰鼓.这句话运用了那些修辞手法? 地理中的等高线什么高于高的、低于低的,怎么判断? 长城电源有哪些系列 数控铣床G02G03中R代表什么意思,还有和I.J.K的区别. 怎样培养初中生的地理学习兴趣和有关经纬网,等高线,地球运动的相关问题呢? 电源的种类及其特点有哪些? 数控加工中心铣整圆弧时I和J怎么使用 如图,有四个正方体,每个正方体的六个面上的A、B、C、D、E、F六个字母徘列顺序相同F对面的字母是() 1.用长为2根号2的细直杆连接两个小球A、B,质量分别为m和2m,置于一个光滑、半径R的半球面碗内.问:达到平衡时,半球面的球心与B球的边线和竖直方向间夹角的正切为?2.竖直平面内有一圆形力 数控铣圆弧的I J K 怎么计算 如图,有四个正方体,每个正方体的六个面上的A、B、C、D、E、F六个字母徘列顺序相同第一个B对面的字母是(B的对面 A的对面 E的对面 安塞腰鼓为什么多水的江南,打不得这样的腰鼓? a+b+c+d=20 abcd都为正整数,问总共的不同的排列有多少? 中国铜排铜材中铜矿物的特点及分布特征? 安塞腰鼓文中写鼓前静鼓后静安塞腰鼓的打鼓前的静和打鼓后的静各有什么作用 四川地震后重建大概需要多少时间 飞镖的训练靶和比赛靶有什么区别 把一个正方体的六个面分别标上字母A、B、C、D、E、F并展开如图所示,已知:A=x2-4xy+3y2,C=3x2-2xy-y2,B=12(C-A),E=B-2C,若正方体相对的两个面上的多项式的和都相等,求D、F.快呀, 那样壮阔、火热、豪放的安塞腰鼓是黄土高原孕育了这样的力量,可文中为何提到多水的江南,与安塞腰鼓有什 飞镖靶上有1-20个区域,打在靶上的任意一镖,落在5的倍数区域上的可能性是( ) 铜矿在中国分布主要在哪几个城市 在哪个省 总结一下简洁一点 比较直齿轮和斜齿轮在几何尺寸计算上有何不同 推荐几本讲高中自然地理的书,比如等高线,昼长夜长之类的书, 江西铜矿的具体分布、、、 安塞腰鼓是否属于延安武鼓下面是节选自《延安武鼓》中的一段文字,请结合文字内容推断,“安塞腰鼓”是否属于“延安武鼓” 一方水土养一方人.延安武鼓以它的“狂”和“野”展示了黄 rotrac六个字母组合成的单词 世界铜矿分布 斜齿轮的相关计算,有没有高手求指导模数1、齿数22、分度圆D=31.11、齿宽13、法向齿形角a=20度、齿定高系数1、螺旋角=45度、螺旋方向=右旋、变位系数Xn=0、公法线长度W=20.003(-0.08 -0.12)、跨 把 reatmk 这六个字母排列成单词 打火机里面的火花是电流还是电压?电人为什么会麻呢?在一根很长的铁棍或者别的金属的一头打一下,火花到了铁棍,另一头的铁棍的人也感觉到手也麻了,这么长的铁棍,为什么,没有电阻呢? 露天非煤矿山实施中深孔爆破的台阶高度为多少合适? 下面六个字母,符合音序排列的一组是A.LHPSQLB.HLNPQSC.HNLQPSD.HLNQPS 电子打火机里面的火花产生是什么原理?为什么会有那么高的电压? 请教煤矿炮采(长臂采煤法、爆破落煤)怎么提高出煤效率本人在煤矿从事采煤工作,看着炮采工作面工人每天工作很辛苦,请教下各位有什么办法能提高出煤、回料的效率?减小工人劳动量,增 AAABBB 六个字母共有多少种不同的排列方法,请一一列出,如:ABABAB AABBAB 打火机里产生火花的那个东东叫叫什么?原理是什么? 煤矿爆破什么叫自由面 氢氧化钠能与水反应吗? 那些橡胶适合做洗衣机皮碗 油漆能与什么发生化学反应
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘