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

在菜单中加入图标 -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)

  以上是为菜单项添加图标的基本方法,例中还演示了怎样为次级菜单中的菜单项添加图标,以及菜单项处于复选/非复选状态时,对应图标发生变化的方法,具体的实现方法可以参照程序中的注释。
海外1GB大容量游戏,国内渠道如何分发? 真正的能源大户是WiFi网络 数据中心只是“伪军” CloudFlare创始人传奇人生:7岁编程,法学博士,获哈佛商学院最高荣誉 2013云计算深入实践 jQuery 2.0发布 不再支持IE 6/7/8 Google再发力,更新Dart M4! 【多图】鼠标、光驱等13个即将消失的PC技术 直击OpenStack美国峰会:分享五大经验收获 Project Savanna:让Hadoop运行在OpenStack之上 看Go桌面技术副总,如何解读Facebook Home 增长最快的游戏公司Supercell 你学得会? 移动周报:为什么我们出不了IT神童? AWS、VMware和OpenStack谁是赢家? 消息称苹果正在寻找新任CEO取代库克 请别人云亦云 PC仍然重要且活得很好 比预想晚几年!IBM x86服务器或终将卖给联想 App推广的节操呢? iMessage垃圾短信产业链暗访 Apkudo CEO访谈:免费为Android开发者提供测试 Web API核查表:设计、测试、发布API时需思考的43件事 开源Android构建工具Buck 速度超Ant两倍 从史上八大MySQL事故中学到的经验 OpenStack Heat向应用市场更近一步 初创公司Ionic Security:云安全必须与时俱进 谷歌董事长:一年后消费者才能用上Goolge Glass Windows 8.1重新推出的“开始按钮”毫无意义 手眼并用 代码泄露三种Google Glass手势操作 Google新论文 CPI²:基于Linux的世界级跨数据中心服务器CPU监控 20款非常实用的Web工具和资源列表 数据库界大事件 随机写性能巨好的TokuDB开源了 CMDN Club 26期:数字渠道营销主题沙龙 暴强:用iOS设备控制的HTML5“小蜜蜂”游戏 怎么把图片设为桌面? 3000-5000元寻求软件开发合作!!! tfilesteam怎么才能显示出文本 pb中如何执行sp_who并得到结果 3000-5000元寻求软件开发合作!! 怎么用IHTMLDocument2接口查询IHTMLElement接口 3000-5000元寻求软件开发合作!!!!! 日期数据类型的问题;MDI子窗口的问题。 top851 用VC打开SQL数据库问题! QR怎樣讓報表分列 诚征工程外包 我的AOUTOCAD总装不上? 如何实现在asp页面上操作,备份数据库? PB中发送HTML邮件问题 各位仁兄。我要在内存位图上作画。怎么搞。help.255' 刷新另一个页面的问题 ■■BCB没有PTR函数?DELPHI中的PTR对应BCB中的函数是什么?请高手指教■■ 我加不起分,怎么回事? 求一个位运算的算试 《深入浅出MFC》中一个小问题不明白! 关于键盘消息的问题 谁有《Linux内核源代码分析》.发给我或告诉我连接都给分 在SESSION STARTZ()中是不是不能用ASP脚本程序? 问一个菜鸟级的问题。答者有分。 为何我用CDialogBar生成的停靠栏上Button都是灰色的? Help!!help!!请教如何在vc程序将我的信息发到别人的手机中?? tapi播放语音 关于变量传递问题,请高手帮忙! 有谁在OnDraw()中用过MessageBox()?为什么不是死循环?怎么解释发生的现象? 关于播放flash的问题 把0显示成0.00怎么弄? 简单问题,怎样得到ListView一单元格中的内容,如用GetItemText请问里面的参数怎样添? 全新安装的redhat 7.2为什么启动kde后不能打开Konqueroer浏览器和主目录 研究生在毕业时真的比本科生有优势吗? 请教:谁知道自动控制原理根轨迹乃试图。。,的算法? 我的AOUTOCAD总装不上??? 爱恋是什么东西?是好人就来看!!! 新闻组(NNTP)怎么用? 为何我用 Delphi写的 MDI Child Window关闭后无法打开? 为什么这样画不行呢? 语句char a='\72'则变量a包含几个字符 急,不难的问题(有代码) 问一个幼稚的问题,delphi6.0分为那几个版本,你们都用的哪一个。 呵呵,下网了,今天捞了150多的专家分,太少了~~,明天在我星期5发布的帖子里给大家分,每个人大概都有10分左右吧~~ 请问各位,现在什么版本的LIUX比较好,你们一般用那种? 快毕业了才心动!怎么办? 为什么我的可用分越来越少,参与分加得少,怎么回事啊 快毕业了才心动,怎么办? 有什么办法可以加快ACCESS的速度 快毕业了才心动~怎么办? 322 ng/ml 等于多少 μg/ml 佳佳的写字台的抽屉长45厘米,宽35厘米,高14厘米,做这样一个抽屉至少需要木板多少平方分米? 0.15μg/10ml怎样换算成以mg/m3的单位的浓度 ml等于多少g 某停车场,停了24辆汽车,客车比汽车少8分之小汽车5,汽车的数量比小汽车少25分之13.客车、小汽车各多少辆 停车场里有小轿车,它的数量是大客车的四倍.小轿车比大个十多36辆.小轿车和大客车各有多少量? 停车场停着货车,六个车轮,和轿车,四个车轮共六十辆,有280个车轮,停车场的货车,轿车合多少辆? 停车场有18辆大客车,大客车的车辆数比小汽车多7分之1.小汽车有多少辆?要算式.是少不是多 一个圆的周长减少五分之一,面积就减少30平方厘米,原来圆的面积是多少是三分之一 计算题:在25℃60ml0.1mol·L-1 HAc溶液中,加人40ml0.1mol·L-1 NaOH溶液后,计算在25℃60ml0.1mol·L-1 HAc溶液中,加人40ml0.1mol·L-1 NaOH溶液后,计算该溶液的pH值和缓冲容量。 停车场大客车比小汽车多3辆,小汽车的辆数是大客车的七分之六,大客车有多少辆? 大圆的周长是小圆周长的1.5倍,大圆的面积是小圆的面级的百分之几 一张办公桌有4个抽屉.每个抽屉长60厘米,宽45厘米,深15厘米.做两张办公桌的抽屉共需要木板多少平方米? 1iu等于多少克 向10ml 2mol/L的氯化铝溶液中加入0.5mol/L的烧碱溶液,反应后得到沉淀0.78g,则加入烧碱溶液的体积可能是()或() 加加的写字台抽屉长48厘米,宽12厘米,做这样一个抽屉至少需要木板多少平方分米?一个无盖的长方体铁皮水桶,底面是边长为4分米的正方体,桶高0.5米,做一对这样的水桶至少要多少铁皮?小辉拿 一个木制的抽屉,宽4分米.做这样的一个抽屉至少需用木板多少平方分米? 向1mol/L,10ml的Alcl3溶液中加入1mol/L的NaOH溶液,得到沉淀0.312g,求所加NaOH溶液的体积 一张办公桌有5个抽屉,每个抽屉长55厘米,宽45厘米,深7米,做这个办公桌的抽屉至少需要多少平方米木板【得数保留整数】开始时厘米最后换算单位到米 0.1mol/L HCL 滴定 20ml 0.1mol/L NaOH 实验的相对偏差如何计算 往20ml1mol/l的ALCL3溶液中滴加0.2mol/l的NAOH溶液最后有0.78g沉淀,问加入NAOH溶液的体积是多少毫升 一张办公桌有五个抽屉,每个抽屉长55厘米,款45厘米,深7厘米,做两个办公桌地抽屉,共需多少平方米 制作一个长6分米,宽4分米,高2分米的抽屉,至少需要多少平方分米的木板、 周长是10分米的正方形的面积是1平方米.这句话是对的还是错的,为什么? 停车场上,小汽车的数量是大货车的2.5倍,小汽车开走45辆后,剩下的两种车的数量相等,原来各有多少辆车? 用0.1mol/L的NaOH溶液滴定0.1mol/L的盐酸20ml,计算滴加的NaOH体积不同时,溶液的ph如加如NaOH溶液15.00mL 19.05mL 这两个随便一个就够 一个正方形,当他的边长都增加一分米后,面积比原正方形增加五平方米,求原正方形周长是多少分米? 停车场上,小汽车的数量是大货车的2.5倍,小汽车开走45,剩下的两种车的数量相等,原来各有多少辆车? 木匠师傅要做一个长60厘米、宽4分米、深1.8分米的抽屉,至少要用木板多少平方分米?要求快速解答, 一个停车场里大汽车辆数的5/6正好是小汽车辆数的1/3,大汽车的辆数是小汽车的几分之几?说理由 停车场上,小汽车的数量是大货车的2.5倍,小汽车开走45辆后,剩下的两种车的数量相等,原来各有多少辆车 .用0.1mol.L-1 NaOH溶液滴定0.lmol.L-1盐酸,如达到滴定的终点时不慎多加了1滴NaOH溶液(1滴溶液的体积约为0.05mL).继续加水至50mL,所得溶液的pH是( )A.4 B.7.2 C.10 D.11.3 仃车场里有小汽车的辆数是大汽车的4分之3,大汽车的辆数是小汽车的几分之几? 停车场内大货车和小汽车数量的比是是2:5,场内停有有75辆小汽车,有大货车多少辆? 停车场上,大客车的数量是小汽车的4倍,大客车比小汽车多60辆,大客车.小汽车各有多少辆列出公式最好要设X的 停车场里大汽车的辆数比小汽车少25辆,小汽车的辆数是大汽车的1.5倍,大汽车和小汽车各多少辆? 用0.1mol/L的氢氧化钠溶液滴定20mL 0.1mol/L的醋酸溶液,写出下图各点粒子大小关系( 停车场里小轿车的辆数是大客车的4倍.小轿车比大客车多36辆.问小轿车和大客车各多少辆. 1mol/L的硫酸与2mol/L的硫酸等质量混合,所得溶液的物质的量浓度为 向20mL 0.5mol/L的醋酸溶液中逐滴加入等物质的量浓度的烧碱溶液,下列关于混合溶液的相关说法错误的是向20mL 0.5mol/L的醋酸溶液中逐滴加入等物质的量浓度的烧碱溶液,测定混合溶液的温度变化 停车场停的大客车和小轿车数量比是5:7,停的小轿车有35辆,停车场的大客车和小轿车一共有多少辆? 将2mol/L硫酸铜溶液和1mol/L硫酸溶液等体积混合,问①混合液中硫酸铜和硫酸的物质的量浓度②混合液中铜离氢离子,硫酸根离子的物质的量浓度 一个抽屉长5分米,宽4分米高3分米做8个这样的抽屉至少要木板多少平方分米?小学五年级数学 停车场的小轿车和大客车共有27辆,小轿车的数量是大客车的2倍.小轿车和大客车各有多少辆?最好讲讲 1L稀硝酸和稀硫酸的混合溶液,其溶质的物质的量浓度分别为0.1mol/L和0.2mol/L.若向该混合溶液中加入足量的铜粉.则最多能溶解铜粉的质量为? A 2.4g B 3.2g C 6.4g D 9.6g 求详细的解题过程! 做一个体积为96立方分米的长方体抽屉,长8分米,宽6分米,做一个这样的抽屉至少要木板多少平方分米?谁知道 一个木制的抽屉,宽4分米.做这样的一个抽屉至少需用木板多少平方分米 一块正方形瓷砖的周长是9分之8米,这块正方形瓷砖的边长是多少米?面积是多少平方米? 停车场里有36辆大汽车,大汽车数量的1/2等于小汽车的1/3,小汽车有多少辆? 有一个抽屉长50厘米,宽40厘米,高12厘米.做这个抽屉至少需要多少平方分米的木板? 面积是4分之1平方分米的正方形周长是 多少分米 求做一个长方体抽屉至少需要多少木板,就是求这个长方体抽屉的( ) c1驾驶证能开什么样的车?几座以下的客车?什么样子的货车可以开,最好有数据,能开的货车,开哪种车需要办从业资格证吗最好详细点啊 一个圆里最大的正方形的面积是10平方厘米,问圆的面积是多少? 要做一个长6分米,宽40厘米,高3分米的长方体木质抽屉,至少需要用多少平方米的木板? 0.2mol/L HAC与0.2mol/L NaOH等体积混合后,求溶液的PH,基础很差……若0.2mol/L氨水与0.2mol/L盐酸 等体积混合,溶液的PH又该怎么计算呢?HAC(Ka = 1.76×10-5)……… 现有200mlH2SO4和NaSO4的混合溶液.其中,硫酸的物质的量浓度为1mol/L,硫酸钠的物质的量的量浓度为0.5mol/L.若要配置硫酸和硫酸钠的物质的量的浓度分别为2mol/L和0.2mol/L的溶液,应加入55.8%的H2SO4溶 DL 等于ML 吗?求大神帮助 一张办公桌有3个抽屉,每个抽屉长50厘米,宽30厘米,高10厘米,需要木板做这张桌的抽屉至少需要木板( )平方厘米,合( )平方米 20ml某氢氧化钠溶液用30ml 0.1mol/L的硫酸溶液继续滴定,耗去硫酸35ml中性.求氢氧化钠溶液的物质的量浓度要明白、清晰的过程、
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn