您的批评和鼓励都是我把编程无限办好的动力! 您编程时遇到困难,或遇到不顺心的事想发发牢骚尽管到这里来吧! 虽然本网力求全面,但也不能包罗万象,这些我筛选出的优秀网站连接就是对本站最好的补充! 学习编程当然也离不开书本了,这里收集大量编程书籍! 编程无限之源码超市,这里收集的代码令你意想不到的全面! 欢迎光临编程网校,这里专门收集VB/CB入门文章及技术文章! 欢迎光临编程无限!
     
       
 
当前位置:中文资料 >> 窗口界面
在菜单中加入图标
  资料类型: 窗口界面 上传时间: 2001-02-21 阅读次数: 3145



在菜单中加入图标

 
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)

  以上是为菜单项添加图标的基本方法,例中还演示了怎样为次级菜单中的菜单项添加图标,以及菜单项处于复选/非复选状态时,对应图标发生变化的方法,具体的实现方法可以参照程序中的注释。

推荐给朋友 点 评( 0 ) 返回前页 关闭此页
   
  本类最热文章排名:
  1.制作半透明窗体和形状不规则的窗体
2.自制IE风格按纽控件
3.制作方向按钮
4.字体闪烁
5.制造出透明的Form
6.在VB中制作透明按钮
7.自动改变控件大小
8.用Visual Basic设计更好的用户界面
9.用VB尝试新的界面风格
10.在程序中调用关闭Windows对话框
   
   
  评论:
 
 
 

 

关于本站 版权声明 联系方法
编程无限 V4.1 Copyright © 1999-2008 21code.com

京ICP备05006938号