发信人: winsy(鹰派)
整理人: winsy(2003-03-12 08:56:12), 站内信件
|
GetMenuItemRect
VB声明
Declare Function GetMenuItemRect Lib "user32" Alias "GetMenuItemRect" (ByVal hWnd As Long, ByVal hMenu As Long, ByVal uItem As Long, lprcItem As RECT) As Long
说明
在一个矩形中装载指定菜单条目的屏幕坐标信息
返回值
Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError
参数表
参数 类型及说明
hWnd Long,包含指定菜单或弹出式菜单的一个窗口的句柄
hMenu Long,菜单的句柄
uItem Long,欲检查的菜单条目的位置或菜单ID
lprcItem RECT,在这个结构中装载菜单条目的位置及大小(采用屏幕坐标表示)
GetMenuState
VB声明
Declare Function GetMenuState Lib "user32" Alias "GetMenuState" (ByVal hMenu As Long, ByVal wID As Long, ByVal wFlags As Long) As Long
说明
取得与指定菜单条目状态有关的信息
返回值
Long,在api32.txt文件的常数定义的一系列标志的组合,请看下表。如条目是个弹出式菜单,那么结构的最低字节就包含了状态标志,而第二个字节包含条目在弹出式菜单中的数量
MF_HILITE 菜单条目加亮显示(处于选定状态)
MF_CHECKED 菜单条目处于复选状态
MF_DISABLED 菜单条目处于禁止状态
MF_GRAYED 菜单条目以灰色显示,处于禁用状态
MF_MENUBARBREAK 为这个条目指定一条分隔线。参考ModifyMenu函数
MF_MENUBREAK 为这个条目指定一个菜单分隔标志。参考ModifyMenu函数
MF_SEPARATOR 菜单条目是一个分隔符
参数表
参数 类型及说明
hMenu 菜单句柄
wID 欲检查的菜单条目的标识符。如果在wFlags参数中设置了MF_BYCOMMAND标志,这个参数就用于指定要改变的菜单条目的命令ID。如果设置的是MF_BYPOSITION标志,这个参数就用于指定条目在菜单中的位置(第一个条目的位置为0)
wFlags 常数MF_BYCOMMAND或MF_BYPOSITION,取决于wID参数的设置
GetMenuString
VB声明
Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
说明
取得指定菜单条目的字串
返回值
Long,在lpString中返回的字串的长度(不包括空中止字符)。零意味着出错
参数表
参数 类型及说明
hMenu Long,菜单句柄
wIDItem Long,欲接收的菜单条目的标识符。如果在wFlags参数中设置了MF_BYCOMMAND标志,这个参数就用于指定要改变的菜单条目的命令ID。如果设置的是MF_BYPOSITION标志,这个参数就用于指定条目在菜单中的位置(第一个条目的位置为0)
lpString String,指定一个预先定义好的字串缓冲区,以便为菜单条目装载字串
nMaxCount Long,载入lpString缓冲区中的最大字符数量+1
wFlag Long,常数MF_BYCOMMAND或MF_BYPOSITION,取决于wID参数的设置
GetSubMenu
VB声明
Declare Function GetSubMenu Lib "user32" Alias "GetSubMenu" (ByVal hMenu As Long, ByVal nPos As Long) As Long
说明
取得一个弹出式菜单的句柄,它位于菜单中指定的位置
返回值
Long,位于指定位置的弹出式菜单的句柄(如果有的话);否则返回零
参数表
参数 类型及说明
hMenu Long,菜单的句柄
nPos Long,条目在菜单中的位置。第一个条目的编号为0
GetSystemMenu
VB声明
Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
说明
取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时出现的菜单
返回值
Long,如执行成功,返回系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会返回零(简单的恢复原始的系统菜单)
参数表
参数 类型及说明
hwnd Long,窗口的句柄
bRevert Long,如设为TRUE,表示接收原始的系统菜单
注解
在vb里使用:系统菜单会向窗口发送一条WM_SYSCOMMAND消息,而不是WM_COMMAND消息
HiliteMenuItem
VB声明
Declare Function HiliteMenuItem Lib "user32" Alias "HiliteMenuItem" (ByVal hwnd As Long, ByVal hMenu As Long, ByVal wIDHiliteItem As Long, ByVal wHilite As Long) As Long
说明
控制顶级菜单条目的加亮显示状态
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hwnd Long,拥有顶级菜单的一个窗口的句柄
hMenu Long,hwnd窗口的顶级菜单的句柄
wIDHiliteItem Long,欲加亮或撤消加亮的菜单条目的标识符。倘若在wHilite参数中设置了MF_BYCOMMAND标志,这个参数就用于指定要改变的菜单条目的命令ID。如果设置的是MF_BYPOSITION标志,这个参数就用于指定条目在菜单中的位置(第一个条目的位置为0)
wHilite Long,一系列常数标志的组合。其中包括MF_BYCOMMAND或MF_BYPOSITION,指出要改变的条目。也包括MF_HILITE,用于设置加亮状态;或者MF_UNHILITE,用于撤消加亮状态
InsertMenu
VB声明
Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
说明
在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,菜单的句柄
nPosition Long,定义了新条目插入点的一个现有菜单条目的标志符。如果在wFlags中指定了MF_BYCOMMAND标志,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION标志,这个参数就代表菜单条目在菜单中的位置,第一个条目的位置为零
wFlags Long,一系列常数标志的组合。参考ModifyMenu
wIDNewItem Long,指定菜单条目的新菜单ID。如果在wFlags中指定了MF_POPUP标志,就应该指定弹出式菜单的一个句柄
lpNewItem 如果在wFlags参数中设置了MF_STRING标志,就代表要设置到菜单中的字串(String)。如设置的是MF_BITMAP标志,就代表一个Long型变量,其中包含了一个位图句柄
注解
在vb里使用:这个函数做出的许多改变都可以正常发挥作用,但却不能由vb菜单对象反映出来。添加的命令ID必须能由vb菜单系统识别
InsertMenuItem
VB声明
Declare Function InsertMenuItem Lib "user32" Alias "InsertMenuItemA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, ByVal lpcMenuItemInfo As MENUITEMINFO) As Long
说明
用一个MENUITEMINFO结构指定的特征插入一个新菜单条目
返回值
Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,菜单的句柄
un Long,菜单条目的菜单ID。新条目会插入由这个参数指定的项目之前
bool Boolean,如un指定的是条目的位置,就为TRUE,如指定的是菜单ID,就为FALSE
lpcMenuItemInfo MENUITEMINFO,用于设置指定菜单条目的特征
注解
IsMenu
VB声明
Declare Function IsMenu Lib "user32" Alias "IsMenu" (ByVal hMenu As Long) As Long
说明
判断指定的句柄是否为一个菜单的句柄
返回值
Long,如句柄是菜单句柄,就返回TRUE;否则返回零
参数表
参数 类型及说明
hMenu Long,欲测试的菜单的句柄
LoadMenu
VB声明
Declare Function LoadMenu Lib "user32" Alias "LoadMenuA" (ByVal hInstance As Long, ByVal lpString As String) As Long
说明
从指定的模块或应用程序实例中载入一个菜单
返回值
Long,已装载的菜单的句柄;零意味着出错。会设置GetLastError
参数表
参数 类型及说明
hInstance Long,一个动态链接库的模块句柄。或指定了特定可执行文件的一个实例句柄,那个可执行文件中包含了菜单资源
lpString String,作为字串使用时,指定欲载入的菜单资源的名字;作为Long值使用时,指定欲载入的菜单ID。
注解
在vb里使用:由于vb不能控制那些不与现有vb菜单兼容的菜单,所以不建议使用这个函数
LoadMenuIndirect
VB声明
Declare Function LoadMenuIndirect Lib "user32" Alias "LoadMenuIndirectA" (ByVal lpMenuTemplate As Long) As Long
说明
在包含了MENUITEMTEMPLATE数据结构的一个内存块的基础上,载入一个菜单
返回值
Long,已载入的菜单句柄,零意味着出错。会设置GetLastError
参数表
参数 类型及说明
lpMenuTemplate Long,指向一个MENUITEMTEMPLATEHEADER结构的指针。在内存中,该结构的后面跟随有一个或多个MENUITEMTEMPLATE数据结构。在windows 95及windows nt 4.0中,可能是指向一个MENUEX_HEADER_TEMPLATE结构的指针;在那个结构后跟随有一个或多个MENUEX_HEADER_ITEM结构,用于指定扩展菜单
MenuItemFromPoint
VB声明
Declare Function MenuItemFromPoint Lib "user32" Alias "MenuItemFromPoint" (ByVal hWnd As Long, ByVal hMenu As Long, ByVal ptScreen As POINTAPI) As Long
说明
判断哪个菜单条目包含了屏幕上一个指定的点
返回值
Long,包含了指定点的条目的位置。如果没有菜单条目包含了指定的点,就返回-1
参数表
参数 类型及说明
hWnd Long,包含了指定菜单的那个窗口的句柄
hMenu Long,菜单句柄
ptScreen POINTAPI,点的位置。如hMenu是一个顶级菜单条,这个点就用hWnd窗口的窗口坐标表示。否则,它采用窗口的客户区坐标表示
ModifyMenu,ModifyMenuBynum
VB声明
Declare Function ModifyMenu& Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As String)
Declare Function ModifyMenuBynum& Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Long)
说明
改变菜单条目。在vb里这个函数做出的许多改变都会有效的执行,但不能由vb菜单对象反映出来
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,菜单句柄
nPosition Long,欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
wFlags Long,一系列常数标志的组合。详见菜单常数标志表
wIDNewItem Long,指定菜单条目的新命令ID。如在wFlags参数中指定了MF_POPUP标志,就应是一个弹出式菜单的句柄
lpString String或Long,如在wFlags参数中指定了MF_STRING标志,就代表欲设置到菜单的字串。如设置的是MF_BITMAP,就代表一个Long变量,其中包含了一个位图句柄。如设置的是MF_OWNERDRAW,那么这个值就会包括到DRAWITEMSTRUCT和MEASUREITEMSTRUCT结构中,并由windows在条目需要重画的时候发出
注解
标志的下述组合形式是不允许的:MF_BYCOMMAND和MF_BYPOSITION;MF_CHECKED和MF_UNCHECKED;MF_MENUBARBREAK和MF_MENUBREAK;MF_DISABLED,MF_ENABLED和MF_GRAYED;MF_BITMAP,MF_STRING,MF_OWNERDRAW和MF_SEPARATOR
菜单常数标志表
MF_BITMAP 菜单条目是一幅位图。一旦设入菜单,这幅位图就绝对不能删除。所以不应该使用由vb的image属性返回的值
MF_BYCOMMAND 菜单条目由菜单的命令ID指定
MF_BYPOSITION 菜单条目由条目在菜单中的位置决定。零代表菜单中的第一个条目
MF_CHECKED 检查指定的菜单条目。不能与vb的checked属性兼容
MF_DISABLED 禁止指定的菜单条目。不与vb的enabled属性兼容
MF_ENABLED 允许指定的菜单条目。不与vb的enabled属性兼容
MF_GRAYED 禁止指定的菜单条目,并用浅灰色描述它。不与vb的enabled属性兼容
MF_MENUBARBREAK 在弹出式菜单中,将指定的条目放置于一个新列,并用一条垂直线分隔不同的列
MF_MENUBREAK 在弹出式菜单中,将指定的条目放置于一个新列。在顶级菜单中,将条目放置到一个新行
MF_OWNERDRAW 创建一个物主绘图菜单(由您设计的程序负责描绘每个菜单条目)
MF_POPUP 将一个弹出式菜单置于指定的条目。可用于创建子菜单及弹出式菜单
MF_SEPARATOR 在指定的条目处显示一条分隔线
MF_STRING 在指定的条目处放置一个字串。不与vb的caption属性兼容
MF_UNCHECKED 检查指定的条目。不能与vb的checked属性兼容
RemoveMenu
VB声明
Declare Function RemoveMenu Lib "user32" Alias "RemoveMenu" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
说明
删除指定的菜单条目。如删除的条目属于一个弹出式菜单,那么这个函数不会同时删除弹出式菜单。首先应该用GetSubMenu函数取得弹出式菜单的句柄,再在以后将其删除
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hMenu Long,菜单的句柄
nPosition Long,欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
wFlags Long,常数MF_BYCOMMAND或MF_BYPOSITION,取决于nPosition参数
注解
强烈建议大家使用vb菜单的visible属性从菜单中删除条目,而不要用这个函数,否则会造成指定菜单中其他菜单条目的visible属性对错误的菜单条目产生影响
SetMenu
VB声明
Declare Function SetMenu Lib "user32" Alias "SetMenu" (ByVal hwnd As Long, ByVal hMenu As Long) As Long
说明
设置窗口菜单
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,窗口的句柄
hMenu Long,窗口的新菜单的句柄
注解
不建议在vb里使用这个函数。如坚持使用,务必留意新菜单中的命令ID并不兼容于原始的vb窗口。只有窗体窗口才应通过这个函数指定。窗口的前一个菜单不会由这个函数删除
SetMenuContextHelpId
VB声明
Declare Function SetMenuContextHelpId Lib "user32" Alias "SetMenuContextHelpId" (ByVal hMenu As Long, ByVal dw As Long) As Long
说明
设置用SetMenuContextHelpId函数分配给一个菜单的帮助场景ID
返回值
Long,TRUE(非零)表示成功,否则返回零
参数表
参数 类型及说明
hMenu Long,菜单的句柄
dw Long,要设置的帮助场景ID
注解
用这个函数设置的场景ID并不对应于用vb菜单栏设计程序分配的场景ID。vb在内部保存有它自己的帮助场景ID。vb的帮助场景ID应是我们优先考虑的方案。尽可能不要用这个函数
|
|