有关菜单的API

 
有关菜单的API
2.13.1 CheckMenuRadlol
函数功能:该函数校核一个指定的菜单项并使其成为一个圆按钮项。同时不校核相关组里的其他菜单项并清除这些项的国按钮的类型标志。
函数原型:BOOL CheckMenuRadioltem(HMEN hMENU,UINT idFirst,UINT idLast,UINT uFlags);
参数:
hMenu:包含一组菜单项的菜单的句柄。
idFirst:菜单组里第一个菜单项的标识符或位置。
idLast:菜单组里最后一个菜单项的标识符或位置。
IdCheck:要选取的菜单项的标识符或位置。
uFlag:指定idFirst,idLast,idCheck含义的值。如果此参数为MF_BYCOMMAND,则其他参数指定菜单项标识符。如果此参数为MF_BYPOSITION,则其他参数指定菜单项位置。
返回值:如果函数调用成功,返回值非零。如果函数调用失败,返回值为零。若想获得更多的错误信息,请调用GetLastError函数。
备注:CheckMenuRadioltem设置了MFT_RADIOCHECK类型标志,并为由idCheck指定的项设置 MFS_CHECKED状态,同时,清除组里所有其他项目的上述两个标志。被选取的项用项目目标表示,而不是用复选标记目标。要得到更多的关于菜单项类型和状态标志的信息,参看MENUITEMINFO结构。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上
版本;头文件;winuser.h;输入库:user32.lib。

2.13.2 CreateMenu
函数功能:该函数创建一个菜单。此菜单最初是空的,但可用函数InserMenultem,
AppendMenu,和lnsertMenu来填入菜单项。
函数原型:HMENU CreateMenu(VOID)
参数:无。
返回值:如果函数调用成功,返回值是新创建菜单的句柄。如果函数调用失败,返回值是NULL。若想获得更多的错误信息,请调用GetLastError函数。
备注:与被分配给一个窗口的菜单相联系的资源会被自动释放。如果此菜单未被分配给一个
窗口,应用程序必须在关闭之前释放与菜单相连的资源。应用程序通过调用函数DestroyMenu来释放菜单资源。
Windows 95环境下,系统可支持最多16,364个菜单句柄。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上
版本;头文件:winuser.h;输入库:user32.lib。

2.13.3 CreatePopupMenu
函数功能:该函数创建一个下拉式菜单、子菜单或快捷菜单。此菜单最初是空的,但可用函数InserMenultem来插入或追加菜单项。也可用函数InsertMenu来插人菜单项,用AppendMenu来追加菜单项。
函数原型:HMENU CreatePopupMenu(VOID)
参数:无。
返回值:如果函数调用成功,返回值是新创建菜单的句柄。如果函数调用失败,返回值是NULL。若想获得更多的错误信息,请调用GetLastError函数。
备注:一个应用程序可增加新菜单到已存在的菜单上,或者可以调用函数TrackPopupMenuEx或TrackPopupMenu来显示快捷菜单。
与被分配给一个窗口的菜单相联系的资源会被自动释放。如果此菜单未被分配给一个窗口,应用程序必须在关闭之前释放与菜单相连的资源。应用程序通过调用函数DestroyMenu来释放菜单资源。Windows95环境下,系统可支持最多16,364个菜单句柄。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows cE:1.0及以上
版本:头文件:winuser.h;输入库:user32.lib。

2.13.4 DeleteMenu
函数功能:该函数从指定菜单里删除一个菜单项。如果此菜单项打开了一个菜单或子菜单,则此函数销毁该菜单或子菜单的句柄,并释放该菜单或子菜单使用的存储器。
函数原型:BOOL DelefeMenu(HMENU hMenu,UINT uPosition,UINT uFlags);
参数:
hMenu:要被的修改菜单的句柄。
UPosition:指定将被删除的菜单项,按参数uFlagS确定的含义。
UFlags:确定参数UPosition加如何被解释。此参数可取下列值之一:
MF_BYCOMMAND:表示uPosition给出菜单项的标识符。如果MF_BYCOMMAND和MF_BYPOSITION
都没被指定,则MF_BYCOMMAND为缺省的标志。
MF_BYPOSITION:表示uPosition给出菜单项基于零的相对位置。
返回值:如果函数调用成功,返回值非零;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:只要一个菜单被修改,无论它是否被显示在窗口里,应用程序都应调用DrawMenubar。
速查:Wihdows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上
版本;头文件:Winuser.h;输入库:user32.lib。

2.13.5 DestroyMenu
函数动能:该函数销毁指定的菜单,并释放此菜单占用的存储器。
函数原型:BOOL DestroyMenu(HMENU hMenu);
参数:
hMenu:要销毁的菜单的句柄。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:一个应用程序在关闭之前,必须调用函数DestroyMenu来销毁一个没被分配给窗口的菜单。分配给窗口的菜单,当应用程序关闭时,被自动销毁。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版
本;头文件:winuser.h;输入库:user32.lib。

2.13.6 DrawMenuBar
函数功能:该函数重画指定菜单的菜单条。如果系统创建窗口以后菜单条被修改,则必须调用此函数来画修改了的菜单条。
函数原型:BOOL DrawMenuBar(HWND hWnd);
参数:
hWnd:其菜单条需要被重画的窗口的句柄。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
速查:Windows NT:及以上版本;Windows:95及以上版本;Windows:2.0及以上版本;头文件:winuser.h;输入库:user32.lib。

2.13.7 EnableMenultem
函数功能:该函数使指定的菜单项有效、无效或变灰。
函数原型:BOOL EnableMenutem(HMENU hMenu,UINT ulDEnablttem,UINT uEnable;
参数
hMenu:菜单句柄。
ulDEnableltem:指定将使其有效、无效或变灰的菜单项,按参数uEnable确定的含义。此参数可指定菜单条、菜单或子菜单里的菜单项。
uEnable:指定控制参数uIDEnableltem如何解释的标志,指示菜单项有效、无效或者变灰。此参数必须是MF_BYCOMMAND或MF_BYPOSITION,MF_ENABLED和MF_DISABLE或MF_GRAYED的
组合。
MF_BYCOMMAND:表明参数uIDEnableltem给出了菜单项的标识符。如果MF_BYCOMMAND和
MF_POSITION都没被指定,则MF_BYCOMMAND为缺省标志。
MF_BYPOSITION:表明参数uIDEnableltem给出了菜单项的以零为基准的相对位置。
MF_DISABLED:表明菜单项无效,但没变灰,因此不能被选择。
MF_ENABLED:表明菜单项有效,并从变灰的状态恢复,因此可被选择。
MF_GRAYED:表明菜单项无效并且变灰,因此不能被选择。
返回值:返回值指定菜单项的前一个状态(MF_DISABLED,MF_ENABLED或MF_GRAYED)。如果此菜单项不存在,则返回值是OXFFFFFFFF。
备注:一个应用程序必须用MF_BYPOSITION来指定正确的菜单句柄。如果菜单条的菜单句柄被指定,顶层菜单项(菜单条上的菜单项)将受到影响。若要根据位置来设置下拉菜单中的菜单项或子菜单的状态,应用程序指定下拉菜单或子菜单的句柄。
当应用程序指定MF_BYCOMMAND标志时,系统在由指定菜单句柄标识的菜单里选取那些打开了子菜单的菜单项。因此除非要复制菜单项,指定菜单条的句柄就足够了。
函数InsertMenu,InsertMenultem,LoadMenulndirect,ModifyMenu和SetMenultemlnfo也可设置菜单项的状态(有效、无效或变灰)。
Windows CE:Windows CE不支持参数uEnable取MF_DISABLED标志。
如果没有变灰,菜单项不能无效。要使菜单项无效,用MF_RAYED标志。
速查:Windows NT:3.1及以上版本;Windows:95的及以上版本;Windows CE:1.0及以上
版本;头文件:winuser.h;输入库:user32.lib。

2.13.8 GetMenu
函数功能:该函数取得分配给指定窗口的菜单的句柄。
函数原型:HMENU GetMenu(HWND hWnd);
参数:
hWnd:其菜单句柄被取得的窗口的句柄。
返回值:返回值是菜单的句柄。如果给定的窗口没有菜单,则返回NULL。如果窗口是一个子窗口,返回值无定义。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;输入库:user32.lib。

2.13.9 GetMenuDefaultltem
函数功能:该函数确定指定菜单上的缺省项。
函数原型:UINT GetMenuDefaultltem(HMENY hMenu,UINT fByPos,UINT gmdiFlags);
参数:
hMenu:获取缺省项的菜单的句柄。
fByPos:用于确定是取得菜单项的标识符还是位置的值。如果此参数值为FALSE,返回标识符,否则返回位置。
gmdiFlags:指定函数如何查找菜单项。此参数可取灵或多个下列值:
GMDI_GOINTOPOPUPS:如果缺省项打开了子菜单,此函数在相应的子菜单里递归查找。如果子菜单没有缺省项,返回值表示打开了子菜单的项。缺省情况下,函数返回指定菜单的第一个缺省项,不管它是否打开了一个子菜单。
GMDI_USEDISABLED:指定函数返回一个缺省项,即使该项无效。缺省情况下,函数跳过无效或变灰的项。
返回值:如果函数调用成功,返回值是菜单项的标识符或位置;如果函数调用失败,返回值是C1。若想获得更多的错误信息,请调用GetLastError函数。
速查:Windows:4.0及以上版本;Windows:95及以上版本:Windows CE:不支持;头文件:
winuser.h;输入库:user32.lib。

2.13.10 GetMenultemlD
函数功能:该函数确定指定菜单里的菜单项个数。
函数原型:int GetMenultemCount(HMENU hMenu);
参数:
hMenu:被检查的菜单的句柄。
返回值:如果函数调用成功,返回值是菜单里指定的菜单项数;如果函数调用失败,返回值是C1。若想获得更多的错误信息,请调用函数GetLastError函数。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头
文件:winuser.h;输入库:user32.fib。

[此贴子已经被作者于2005-8-7 12:11:17编辑过]

zhx200 2005-08-07 12:09
2.13.11 GetMenultemID
函数功能:该函数取得菜单里指定位置处的菜单项的标识符。
函数原型:UINT GetMenultemID(HMENU hMenu,int nPos);
参数:
hMenu:其菜单项标识符将被取得的菜单的句柄。
nPos:指定将取得其标识符的菜单项相对于零的位置。
返回值:返回值是给定菜单项的标识符。如果菜单项标识符是NULL或指定的菜单打开了子菜单,返回值是OXFFFFFFFF。
速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;输人库:user32.fib。

2.13.12 GetMenultemlnfo
函数功能:该函数取得一个菜单项的信息。
函数原型:BOOL GetMenultemlnfo(HMENU hMenu,UINT ultem,BOOL fByPosition, LPMENUITEMINFOlpmii);
参数:
hMenu:包含指定菜单项的菜单的句柄。
Ultem:将取得其信息的菜单项的标识符或位置。此参数的含义取决于参数fByPosition的值。
FbyPosition:此值用于指定参数Ultem的含义。如果此参数是FALSE,则ultem表示菜单项的标识符。否则,表示菜单项的位置。
lpmii:指向结构MENUITEMINFO的指针;该结构指定要取得的信息并接收菜单项的信息。返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:Windows CE环境下,由参数lpmii指向的MENUITEMINFO结构的fMask成员不能取MIM_CHECKMARKS标志。
速查:Windows NT:4.0及以上版本;Windows:95及以上版本;Windows cE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib Unicode:在Windows NT环境下以Unicode和ANSI方式实现。

2.13.13 GetMenultemRect
函数功能:该函数取得指定菜单项的边界矩形。
函数原型:BOOL GetMenultemRect(HWND hWnd,HMENU hMenu,UINT ultem,LPRECT lprcltem);
参数:
hWnd:含有指定菜单的窗口的句柄。
在Windows NT和Windows 98环境中,如果此值为NULL且hMenu代表一个弹出式菜单,此函数将找到菜单窗口。
ultem:菜单项相对于零的位置。
lprcltem:指向结构RECT的指针,该结构接收指定菜单项的边界矩形(按屏幕坐标)。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
速查:Windows NT:4.0及以上版本;Windows:95及以上版本;Windows CE:1.0及以上
版本;头文件:winuser.h;输入库:user32.lib。

2.13.14 getSubMenu
函数功能:该函数取得被指定菜单激活的下拉式菜单或子菜单的句柄。
函数原型:HMENU GetSubMenu(HMENU hMenu,int nPos);
参数:
hMenu:菜单句柄。
nPos:激活下拉式菜单或子菜单的菜单项相对于零的位置。返回值:如果函数调用成功,返回值是菜单项激活的下拉式菜单或子菜单的句柄。如果菜单项没有激活一个下拉式菜单或子菜单,返回值是NULL。
速查:Windows NT:3.1及以上版本;Wiodows:95及以上版本;Windows CE:1.0及以上
版本;头文件:Winuser.h;输入库:user32.lib。

2.13.15 GetSystemMenu
函数功能:该函数允许应用程序为复制或修改而访问窗口菜单(系统菜单或控制菜单)。
函数原型:HMENU GetSystemMenu(HWND hWnd,BOOL bRevert);
参数:
hWvd:拥有窗口菜单拷贝的窗口的句柄。
BPevert:指定将执行的操作。如果此参数为FALSE,GetSystemMenu返回当前使用窗口菜单的拷贝的句柄。该拷贝初始时与窗口菜单相同,但可以被修改。如果此参数为TRUE,GetSystemMenu重置窗口菜单到缺省状态。如果存在先前的窗口菜单,将被销毁。
返回值:如果参数bRevert为FALSE,返回值是窗口菜单的拷贝的句柄:如果参数bRevert为TRUE,返回值是NULL。
备注:任何没有用函数GetSystemMenu来生成自己的窗口菜单拷贝的窗口将接受标准窗口菜单。
窗口某单最初包含的菜单项有多种标识符值,如SC_CLOSE,SC_MOVE和SC_SIZE。
窗口菜单上的菜单项发送WM_SYSCOMMAND消息。
所有预定义的窗口菜单项的标识符数大于OxFOOO。如果一个应用程序增加命令到窗口
菜单,应该使用小于OxFOOO的标识符数。
系统根据状态自动变灰标准窗口菜单上的菜单项。应用程序通过响应在任何某单显示之前发送的WM_INITMENU消息来实现选取和变灰。
Windows CE环境下,不支持系统菜单,但GetSyemMenu以宏的方式实现,以保持和已存在代码的兼容性。可以使用该宏的返回菜单句柄使关闭框无效,与在Windows桌面平台上一样。Windows CE下的返回值没有其他用处。参数bRevert无用。
用下面的代码使关闭按钮无效:
EnableMenultem(GetSystemMenu(hwnd,FALSE),SC_CLOSE,MF_BYCOMMAND I MF_GRAYED);
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上
版本;头文件:winuser.h;输人库:user32.lib。

2.13.16 HlllteMenultem
函数功能:该函数对菜单条中的菜单项加亮或清除亮度。
函数原型:BOOL HiliteMenultem(HWND hwnd,HMENU hMenu,UINT ultemHilite,UINT uHilite);
参数:
hWnd:具有菜单的窗口句柄。
hMenu:含有将被加亮的菜单项的菜单条句柄。
UltmHilite:指定将被加亮的菜单项。此参数可以是菜单项的标识符,也可为菜单项在菜单条中的偏移量,其含义由参数uHilite的值确定。
yHilite:控制参数ultemHilite如何解释的标志,并确定菜单项是否被加亮。此参数必须
是MF_BYCOMMAND或MF_BYPOSITION和MF_HILITE或MF_UNHILITE的组合。
MF_BYCOMMAND:表示参数ultemHilite给出了菜单项的标识符。
MF_BYPOSITION:表示参数ultemHilite给出了菜单项相对于零的位置。
MF_HILITE:加亮菜单项。如果此标志未被指定,则清除菜单项的亮度。
MF_UNHILITE:清除菜单项的亮度。
返回值:如果菜单项被设置为指定的加亮状态,返回非零值;如果菜单项未被设置为指定的加亮状态,返回零。
备注:MF_HILITE和MF_UNHILITE标志只能被函数HiliteMenutem使用,不能被函数ModifyMenu使用。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头
文件:winuser.h;输入库:user32.lib。

2.13.17 InsertMenultem
函数功能:该函数在菜单的指定位置插入一个新菜单项。
函数原型:BOOL WINAPI InsertMenutem(HMENU hMenu,UINT ultem,BOOL fByPosition,
LPMENUITEMINFO lpmii );
参数:
hMenu:新菜单项将被插入其中的菜单的句柄。
ultem:在其前面插入新菜单项的菜单项的标识符或位置。此参数的含义取决于参数
fByPosition的值。
fByFosition:用于确定ultem的含义的值。如果此参数为FALSE,Ultem表示菜单项的标识符。否则,ultem 表示菜单项的位置。
lpmii:指向结构MENUITEMINFO的指针,该结构中包含了新菜单项的信息。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:为了使键盘加速键能控制位图或自己绘制的菜单项,菜单的拥有者必须处理WM_MENUCHAR消息。
参见自绘制菜单和WM_MENUCHAR消息。
速查:Windows NT:4.0及以上版本;Windows:95及以上版本;Windows CE:不支持;头
文件:winuser.h; 输入库:user32.lib Unicode:在Windows NT环境下,以Unicode和ANSI方式实现。

2.13.18 IsMenu
函数功能:该函数确定一个句柄是否为菜单句柄。
函数原型:BOOL lsMenu(HMENU hMenu);
参数:
hMenu:被测试的句柄。
返回值:如果hMenu是一个菜单句柄,返回非零值。如果hMenu不是一个菜单句柄,返回值是零。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文
件:Winuser.h;输入库:user32.lib。

2.13.19 LoadMenu
函数功能:该函数从与应用事例相联系的可执行文件(.EXE)中加载指定的菜单资源。
函数原型:HMENU LoadMenu(HINSTANCE hlnstance,LPCTSTR lpMenuName);
参数:
hlnstance:含有被加载菜单资源的事例模块的句柄。
LpMenuName:指向含有菜单资源名的以空结束的字符串的指针。同时,此参数可由低位字上的资源标识符和高位字上的零组成。要创建此值,用MAKEINTRESOURCE宏。
返回值:如果函数调用成功,返回值是菜单资源句柄;如果函数调用失败,返回值是NULL。若想获得更多的错误信息,请调用GetLastError函数。
备注:关闭应用程序之前,用函数DestroyMenu来销毁菜单并释放加载菜单占用的内存。
Windows CE 1.0不支持层叠式菜单。Windows CE 2.0及更高版本支持层叠式菜单。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头
文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下,以Unicode和
ANSI方式实现。

2.13.20 LoadMenulndirect
函数功能:该函数加载指定的菜单模板到内存。
函数原型:HMENU LoadMenulndirect(CONST MENUTEMPLATE”lpMenuTemplate);
参数:
lpMenuTemplate:指向菜单模板或扩展菜单模板的指针。
一个菜单模板由一个MENUITEMTEMPLATEHEADER结构和一个或多个连续的
MENUITEMTEMPLATE结构组成。一个扩展菜单模板由一个MENUEX_TEMPLATE_HEADER结构和一
个或多个MENUEX_TEMPLATE_ITEM结构组成。
返回值:如果函数调用成功,返回值是菜单句柄;如果函数调用失败,返回值为NULL。若
想获得更多的错误信息,请调用GetLastError函数。
备注:此函数的ANSI和Unicode版本中,在MENUITEMTEMPLATE结构中的字符串必须是Unicode串。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头
文件:winuser.h;输入库:User32.lib;Unicode:在Windows NT环境下,以Unicode和
ANSI方式实现。

zhx200 2005-08-07 12:13
2.13.21 MenultemFromPo
函数功能:该函数确定指定位置的菜单项(如果存在)。
函数原型:UINT WINAPI MenultemFromPoint(HWND hWnd,HMENU hMenu,POINT ptScreen);
参数:
hWnd:含有菜单的窗口的句柄。
在Windows NT 5.0和Windows 98环境下,如果此值为NULL并且参数hMenu指定一个弹出式菜单,则此函数将会找到菜单窗口。
hMenu:将被命中测试的菜单项所在的菜单的句柄。
PtScreen:用于指定测试位置的POINT结构。如果hMenu指定一个菜单条,此参数按窗口坐标,否则按客户坐标定义。
返回值:返回指定位置的菜单项相对于零的位置,或者当指定位置没有菜单项时返回C1。
速查:Windows NT:4.0及以上版本:Windows:95及以上版本;Windows CE:不支持;头
文件:winuser.h;输入库:user32.lib。

2.13.22 RemoveMenu
函数功能:该函数从指定菜单删除一个菜单项或分离一个子菜单。如果菜单项打开一个下拉式菜单或子菜单,RemoveMenu不消毁该菜单或其句柄,允许菜单被重用。在调用此函数前,
函数GetSubMenu应当取得下拉式菜单或子菜单的句柄。
函数原型:BOOL RemoveMenu(HMENU hMenu,UINT uPosition,UINT uFlgs);
参数:
hMenu:将被修改的菜单的句柄。
UPosition:指定将被删除的菜单项,其含义由参数uFlages决定。
uFlags:指定参数uPosition如何解释。此参数必须为下列之一值:
MF_BYCOMMAND:表示uPositon给出菜单项的标识符。如果MF_BYCOMMAND和MF_BYPOSITION
都没被指定,则MF_BYCOMMAND是缺省标志。
Mu_BYPOSITION:表示uPositon给出菜单项相对于零的位置。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:只要一个菜单被修改,无论它是否在显示窗口里,应用程序都必须调用函数DrawMenuBar。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上
版本;头文件:winuser.h;输入库:user32.lib。

2.13.23 SetMenu
函数功能:该函数分配一个新菜单到指定窗口。
函数原型:BOOL SetMenu(HWND hWnd,HMENU hMenu);
参数:
hWnd:菜单被分配到其中的窗口的句柄。
HMenu:新菜单的句柄。如果菜单参数为NULL,则窗口的当前菜单被删除。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLaSError函数。
备注:窗口被重画来反映菜单的修改。函数SetMenu替换原来的菜单(如果存在),但并不将其销毁。应用程序必须调用函数DestroyMenu来销毁菜单。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;输人库:user32.lib。

2.13.24 SetMenuDefaultltem
函数功能:该函数给指定的菜单设置缺省菜单项。
函数原型:BOOL SetMenuDefaultltem(HMENU hMenu,UINT ultem,UINT fByPo );
参数:
httenu:将为其设置缺省菜单项的菜单的句柄。
Uttrne:新缺省菜单项的标识符或位置,无缺省项时,取值为C1。此参数的含义由参数fByPoS的值决定。
ByPos:用于确定参数ultem的值的含义。如果此参数为FALSE,参数ultem表示菜单项的标识符。否则,表示菜单项的位置。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
速查:Windows NT:4.0及以上版本;Windows: 95及以上版本;Windows CE:不支持;头文件:winuser.h;输入库:user32.lib。

2.13.25 SetMenultemBitm
函数功能:该函数将指定的位图与一个菜单项相联系。无论该菜单项是否被选取,系统都将适当的位图显示在菜单项旁边。
函数原型:BOOL SetMenultemBitmaPs(HMENU hMenu,UINT uPosition,UINT uFlags,HBITMAP
hBitmapUnchecked,HBITMAP hBitmspChecked);
参数:
hMenu:其菜单项将接受新选取标记位图的菜单的句柄。
uPosition:指定将被修改的菜单项。其含义由参数uFlags决定。
UFlags:指定参数uPosition将如何解释。此参数必须是下列值之一:
MF_BYCOMMAND:表示参数uPosition给出菜单项的标识符。如果MF_BYCOMMAND和MF_POSITION
都没被指定,则MF_BYCOMMAND是缺省标志。
MF_BYPOSITION:表示参数uPosition给出菜单项相对于零的位置。
hBitmapUnchecked:当菜单项没被选取时显示的位图的句柄。
hBitmapChecked:当菜单项被选取时显示的位图的句柄。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:如果参数hBitmapUnchecked或hBitmapChecked的值为NULL,系统将不为相应选取状态显示任何位图到菜单项旁边。如果两参数值均为NULL,系统在菜单项被选取时显示缺省的选取标志位图,菜单项未被选取时删除位图。当菜单项被销毁时,位图并没被销毁,需要应用程序来将其销毁。
已选取或未选取的位图应当是单色的。系统将用布尔AND运算符组合位图和菜单。这样,位图中白色部分变成透明的,而黑色部分成为菜单项的颜色。如果使用彩色位图,结果会不符合需要。以CXMENUCHECK和CYMENUCHECK来使用函数GetSystemMetrics将取得位图的尺寸。
速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;输入库:user32.lib。

2.13.26 SetMenultemlnfo
函数功能:该函数改动一个菜单项的信息。
函数原型:BOOL SetMenultemlnfo(HMENU hMenu,UINT uitem,BOOL fByPosition,
LPMENUITEMINFO lpmii);
参数:
hMenu:包含菜单项的菜单的句柄。
ultem:将被修改的菜单项的标识符或位置。此参数的含义由参数fByPosition确定。
FByPosition:用于指定参数ultem的含义的值。如果此参数值为FALSE,则参数ultem是
菜单项的标识符,否则,表示菜单项的位置。
lpmii:指向结构MENUITEMINFO的指针。该结构含有菜单项的信息,并且.指定将被修改的菜单项的属性。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多
的错误信息,请调用GetLastError函数。
备注:为了使键盘加速键能控制位图或自己绘制的菜单项,菜单的拥有者必须处理
WM_MENUCHAR消息。参见自绘制菜单和WM_MENUCHAR消息。Windows CE环境下,只有下列值
对参数lpmii指向的MENUITEMINFO结构中的fMask成员有效:MIIM_DATA;MIIM_;MIIM_TYPE;
如果MIIM-TYPE被指定,结构MENUITEMINFO的fType成员必须为菜单项的当前类型,也就是说,该类型不能被改变。
速查:Windows NT:4.0及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下,以Unicode和
ANSI方式实现。

2.13.27 TrackPopupMenu
函数功能:该函数在指定位置显示快捷菜单,并跟踪菜单项的选择。快捷菜单可出现在屏幕上的任何位置。
函数原型:BOOL TrackPopupMenu(HMENU hMenu,UINT uFlags,int x,int y,int nReserved,
HWND hWnd,CONST RECT”prcRect);
参数
hMenu:被显示的快捷菜单的句柄。此句柄可为调用CreatePopupMenu创建的新快捷菜单的句柄,也可以为调用GetSubMenu取得的与一个已存在菜单项相联系的子菜单的句柄。
uFlags:一种指定功能选项的位标志。用下列标志位之一来确定函数如何水平放置快捷菜单:
TPM_CENTERALLGN:若设置此标志,函数将按参数x指定的坐标水平居中放置快捷菜单。
TPM_LEFTALLGN:若设置此标志,函数使快捷菜单的左边界与由参数X指定的坐标对齐。
TPM_RIGHTALLGN:若设置此标志,函数使快捷菜单的右边界与由参数X指定的坐标对齐。
用下列标志位之一来确定函数如何垂直放置快捷菜单:
TPM_BOTTOMALLGN:若设置此标志,函数使快捷菜单的下边界与由参数y指定的坐标对齐。
TPM_TOPALLGN:若设置此标志,函数使快捷菜单的上边界与由参数y指定的坐标对齐。
TPM_VCENTERALLGN;若设置此标志,函数将按参数y指定的坐标垂直居中放置快捷菜单
用下列标志位之一来确定在菜单没有父窗口的情况下用户的选择:
TPM_NONOTIFY:若设置此标志,当用户单击菜单项时函数不发送通知消息。
TPM_RETURNCMD;若设置此标志;函数将用户所选菜单项的标识符返回到返回值里。
用下列标志位之一来确定在快捷菜单跟踪哪一个鼠标键:
TPM_LEFTBUTTON:若设置此标志,用户只能用鼠标左键选择菜单项。
TPM_RIGHTBUTTON:若设置此标志,用户能用鼠标左、右键选择菜单项。
X:在屏幕坐标下,快捷菜单的水平位置。
Y:在屏幕坐标下,快捷菜单的垂直位置。
NReserved:保留值,必须为零。
HWnd:拥有快捷菜单的窗口的句柄。此窗口接收来自菜单的所有消息。函数返回前,此窗口
不接受来自菜单的WM_COMMAND消息。
如果在参数uFlags里指定了TPM_NONOTIFY值,此函数不向hWnd标识的窗口发消息。 但
必须给hWnd里传一个窗口句柄,可以是应用程序里的任一个窗口句柄。
PrcRect:未用。
返回值:如果在参数uFlags里指定了TPM_RETURNCMD值,则返回值是用户选择的菜单项的标识符。如果用户未作选择就取消了菜单或发生了错误,则退回值是零。如果没在参数uFlags里指定TPM_RETURNCMD值,若函数调用成功,返回非零值,若函数调用失败,返回零。若想获得更多的错误信息,清调用GetLastError
函数:
备注:Windows CE不支持参数uFlags取下列值:TPM_NONOTIFY;TPM_LEFTBUTTON;
TPM_RIGHTBUTTON。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上
版本;头文件:winuser.h;输入库:user32.lib。

2.13.28 TrackPopupMenuEx
函数功能:该函数在指定位置显示快捷菜单,并跟踪菜单项的选择。快捷菜单可出现在屏幕上的任何位置。
函数原型:BOOL TrackPopupMenuEX(HMENU hMenu,UINT uFlags,int x,int y,HWND hWnd,
LPTPMPARAMS lptpm);
参数:
hMenu:被显示的快捷菜单的句柄。此句柄可为调用CreatePoPuPMenu创建的新快捷菜单的句柄,也可以为调用GetSubMenu取得的与一个已存在菜单项相联系的子菜单的句柄。
UFlags:定位或其他选项。此参数可为零或取在函数CreatePopupMenu里所列的值,也可取下列之一值:
TPM_HORIZONTAL:在不覆盖排斥矩形就不能在指定位置显示菜单时,系统将先考虑水平对齐的要求。
TPM_VERTICAL:在不覆盖排斥矩形就不能在指定位置显示菜单时,系统将先考虑垂直对齐的要求。排斥矩形是指屏幕上菜单不能覆盖的部分,由Iptpm指定。
X:在屏幕坐标下,快捷菜单的水平位置。
Y:在屏幕坐标下,快捷菜单的垂直位置。
hWnd:拥有快捷菜单的窗口的句柄。此窗口接收来自菜单的所有消息。函数返回前,此窗口
不接受来自菜单的WM_COMMAND消息。
如果在参数uFlags里指定了TPM_NONOTIFY值,此函数不向hwnd标识的窗口发消息。但必须给hwnd里传一个窗口句柄,可以是应用程序里的任一个窗口句柄。
lptpm:指向结构TPMPARAMS的指针,该结构指定屏幕上菜单不能覆盖的区域。此参数可为NULL。
返回值:如果在参数UFlags里指定了TPM_RETURNCMD值,则返回值是用户选择的菜单项的标识符。如果用户未作选择就取消了菜单或发生了错误,则返回值是零。如果没在参数uFlags里指定TPM_RETURNCMD值,函数调用成功,返回非零值,若函数调用失败,返回零。若想获得更多的错误信息,请调用GetLastError函数。
备注:Womdpws CE不支持参数uFlags取下列值:
TPM_NONOTIFY;TPM_LEFTTBUTTON;TPM_RIGHTBUTTTON;TPM_HORIZONTAL;TPM_VERTICAL;
参数lptpm必须设为NULL。
速查:Windows NT:4.0及以上版本;Windows:95及以上版本;Windows CE:1.0及以上
版本;头文件:winuser.h;输入库:user32.lib。

2.13.29 AppendMenu
函数功能:该函数在指定的菜单条、下拉式菜单、子菜单或快捷菜单的末尾追加一个新菜单项。此函数可指定菜单项的内容、外观和性能。函数AppendMenu己被lnsertMenultem取代。但如果不需要lnsertMenultem的扩展特性,仍可使用AppendMenu。
函数原型:BOOL AppendMenu(hMenu hMenu,UINT uFlags,UINT uIDNewltem,LPCTSTR
lpNewltem);
参数:
hMenu:将被修改的菜单条、下拉式菜单、子菜单、或快捷菜单的句柄。
UFlags:控制新菜单项的外观和性能的标志。此参数可以是备注里所列值的组合。
UIDNewltem:指定新菜单项的标识符,或者当uFlags设置为MF_POPUP时,表示下拉式菜单或子菜单的句柄。
LpNewltem:指定新菜单项的内容。此参数的含义取决于参数uFlags是否包含MF_BITMAP, MF_OWNERDRAW或MF_STRING标志,如下所示:
MF_BITMAP:含有位图句柄。MF_STRING:以`\O’结束的字符串的指针。
MF_OWNERDRAW:含有被应用程序应用的32位值,可以保留与菜单项有关的附加数据。当菜
单被创建或其外观被修改时,此值在消息WM_MEASURE或WM_DRAWITEM的参数IParam指向的结构,成员itemData里。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
备注:一旦菜单被修改,无论它是否在显示窗口里,应用程序必须调用函数DrawMenuBar。
为了使键盘加速键能控制位留或自己绘制的菜单项,菜单的拥有者必须处理
WM_MENUCHAR消息。
参见自绘制菜单和WM_MENUCHAR消息。
下列标志可被设置在参数uFlags里:
MF_BITMAP:将一个位图用作菜单项。参数lpNewltem里含有该位图的句柄。
MF_CHECKED:在菜单项旁边放置一个选取标记。如果应用程序提供一个选取标记,位图(参
见SetMenultemBitmaps),则将选取标记位图放置在菜单项旁边。
MF_DISABLED:使菜单项无效,使该项不能被选择,但不使菜单项变灰。
MF_ENABLED:使菜单项有效,使该项能被选择,并使其从变灰的状态恢复。
MF_GRAYED:使菜单项无效并变灰,使其不能被选择。
MF_MENUBARBREAK:对菜单条的功能同MF_MENUBREAK标志。对下拉式菜单、子菜单或快捷菜单,新列和旧列被垂直线分开。
MF_MENUBREAK:将菜单项放置于新行(对菜单条),或新列(对下拉式菜单、子菜单或快捷菜单)且无分割列。
MF_OWNERDRAW:指定该菜单项为自绘制菜单项。菜单第一次显示前,拥有菜单的窗口接收一个WM_MEASUREITEM消息来得到菜单项的宽和高。然后,只要菜单项被修改,都将发送WM_DRAWITEM消息给菜单拥有者的窗口程序。
MF_POPUP:指定菜单打开一个下拉式菜单或子菜单。参数uIDNewltem下拉式菜单或子菜单的句柄。此标志用来给菜单条、打开一个下拉式菜单或于菜单的菜单项、子菜单或快捷菜单加一个名字。
MF_SEPARATOR:画一条水平区分线。此标志只被下拉式菜单、于菜单或快捷菜单使用。此区分线不能被变灰、无效或加亮。参数IpNewltem和uIDNewltem无用。
MF_STRING:指定菜单项是一个正文字符串;参数lpNewltem指向该字符串。
MF_UNCHECKED:不放置选取标记在菜单项旁边(缺省)。如果应用程序提供一个选取标记位
图(参见SetMenultemBitmaps),则将选取标记位图放置在菜单项旁边。
下列标志组不能被一起使用:
MF_DISABLED,MF_ENABLED和MF_GRAYED;MF_BITMAP,MF_STRING和MF_OWNERDRAW
MF_MENUBARBREAK和MF_MENUBREAK;MF_CHECKED和MF_UNCHECKED
Windows CE环境下,不支持参数fuFlags使用下列标志:
MF_BITMAP;MF_DOSABLE;MF_GRAYED
MF_GRAYED可用来代替MF_DISABLED和MFS_GRAYED。
Windows CE 1.0不支持层叠式菜单。在使用Windows CE 1.0时,不能将一个MF_POPUP菜单插入到另一个下拉式菜单中。Window CE 1.0不支持下列标志:
MF_POPUP;MF_MENUBREAK;MF_MENUBARBREAKWindows CE 2.0或更高版本中,支持上述标志,也支持层叠式菜单。

2.13.30 CheckMenultem
函数功能:该函数设置指定菜单项的校核标记属性为选取或不选取。该函数已被函数
SetMenultemlnfo取代。但若不需要SetMenultemlnfo的扩展特性,仍可使用CheckMenultem。
函数原型:DWORD CheckMenultem(HMENU hMenu,UINT ulDCheckltem,UINT uCheck);
参数:
hMenu:有关菜单的句柄。
UlDCheckltem:指定要设置其选取标记属性的菜单项。其含义由参数uCheck决定。
uCheck:指定控制参数uIDCheckltem的含义的标志,并指定菜单项的选取标记属性的状态。
此参数可为MF_BYCOMMAND或MF_BYPOSITON和MF_CHECKED或MF_UNCHECKED的组合。
MF_BYCOMMAND:表示参数uIDCheckltem给出了菜单项的标识符。若标志MF_BYCOMMMAND和
MF_BYFOSITION都没被指定,则MF_BYCOMMMAND为缺省值。
MF_CHECKED:设置选取标记属性为选取。
MF_UNCHECKED:设置选取标记属性为未选取。
返回值:返回值指定菜单项的前一状态(MF_CHECKED或MF_UNCHECKED)。如果菜单项不存在,
返回值是OXFFFFFFFF。
备注:莱单条里的项不能有选取标记。参数uIDCheckltem标识一个打开子菜单的菜单项或命令项。对打开子菜单的菜单项,参数uIDCheckltem必须指定菜单项的位置。对命令项,参数uIDCheckltem可指定其位置或标识符。

zhx200 2005-08-07 12:14
2.13.31 GetMenuCheckMarkDimensions
函数功能:返回缺省选取标记位图的尺寸。系统在选取的菜单项旁边显示该位图。调用SetMenultemBitmaPs为菜单项放置选取标记为图前,应用程序必须调用GetMenuCheckMarkDimensions来确定恰当的位图大小。
函数原型:LONG GetMenuCheckMarkDimensions(VOID)
参数:无。
返回值:返回值指定缺省选取标记位图的高度和宽度(按像素)。高位字包含高度,低位字包含宽度。

1.13.32 GetMenuState
函数功能:该函数取得与指定菜单项相联系的菜单标志。如果该菜单项打开了一个子菜单,该函数也返回子菜单里的菜单项数。
函数原型:UINT GetMenuState(HMENU hMenu,UINT uld,UINT uFlags);
参数:
hMenu:含有其菜单项的标志将被提取得的菜单的句柄。
uld:其某单标志将被取得的菜单项,此参数含义由参数uFlags决定。
UFlags:用于指定参数uld的含义的值。此参数可取下列值之一:
MF_BYCOMMAND:表示参数uld给出菜单项的标识符。如果MF_BYCOMMAND和MF_BYPOSITION
都没被指定,则MF_BYCOMMAND是缺省值。
MF_BYPOSITION:表示参数uld给出菜单项相对于零的位置。
返回值:如果指定的项不存在,返回值是OXFFFFFFFF;如果菜单项打开了一个子菜单,则返回值的低位含有与菜单相联系的菜单标志,高位含有子菜单的项数。否则,返回值是莱单标志的掩码(布尔OR)。
下面列出与菜单项相关的菜单标志。
MF_CHECKED:放置选取标记于菜单项旁边(只用于下拉式菜单、子菜单或快捷菜单)。
MF_DISABLED:使菜单项无效。MF_GRAYED:使菜单项无效并交灰。MF_HILITE:加亮菜单项。
MF_MENUBARBREAK:对下拉式菜单、子菜单和快捷菜单,新列和旧列由垂直线隔开,其余功能同MF_MENUBREAK标志。
MF_MENUBREAK:将菜单项放于新行(对菜单条)或无分隔列地放于新列(对下拉式菜单、子菜单或快捷菜单)。
MF_SEPARATOR:创建一个水平分隔线(只用于下拉式菜单、子菜单或快捷菜单)。

2.13.33 GetMenuString
函数功能:该函数将指定菜单项的正文字符串拷贝到指定缓冲区。
函数原型:int GetMenuString(HMENU hMenu,UINT uIDItem,LPTSTR lpString,int
nMaxCount,UINT uFlag);
参数:
hWenu:菜单句柄。
uIDItem:指定将被修改的菜单项,其含义由参数uFlag决定。
lpString:指向缓冲区的指针,该缓冲区接受以`\0’结束的字符串。如果此参数为NULL,则函数返回菜单字符串的长度。
nMaxCount:指定将被拷贝的字符串的最大字符数。如果字符串长度比此参数指定的最大值还大,则多余的字符被截去。如果此参数为0,则函数退回菜单字符串的长度。
uFlag:指定参数ulDltem如何被解释。此参数可取下列值之一:
MF_BYCOMMAND:表示参数uIDltem给出菜单项的标识符。如果MF_BYCOMMAND和MF_BYPOSITION
都没被指定,则MF_BYCOMMAND是缺省值。
MF_BYPOSITION:表示参数uIDltem给出菜单项相对于零的位置。
返回值:如果函数调用成功,返回值是拷贝到缓冲区的字符数,不包括末尾‘\0’结束符:如果函数调用失败,返回值是零。
备注:参数nMaxCount的值必须比正文字符串的长度大一,以容纳末尾的‘\0’结束符。如果参数nMaxCount的值为零,函数返回菜单字符串的长度。

2.13.34 InsertMenu
函数功能:该函数插入一个新菜单项到菜单里,并使菜单里其他项下移。
函数原型:BOOL InsertMenu(HMENU hMenu,UINt uPosition,UINT uFlags,UINT
uIDNewltem,LPCTSTR lpNewltem);
参数:
hMenu:将被修改的菜单的句柄。
uPosition:指定新菜单项将被插入其前面的菜单项,其含义由参数uFlagS决定。
uFlags:指定控制参数uPosition的解释的标志、新菜单项的内容、外观和性能。此参数必
须为下列值之一和列于备注里的一个值的组合。
MF_BYCOMMAND:表示uPosition给出菜单项的标识符。如果MF_BYCOMMAND和MF_BYPOSITION
都没被指定,则MF_BYCOMMAND为缺省的标志。
MF_BYPOSITION:表示uPosition给出新菜单项基于零的相对位置。如果uPosition为OxFFFFFFFF新菜单项追加于菜单的末尾。
uIDNewltem:指定新菜单项的标识符,或者当参数uFlags设置为MF_POPUP时,指定下拉式菜单或子菜单的句柄。
LpNewltem:指定新菜单项的内容。其含义依赖于参数UFlags是否包含标志
MF_BITMAP,MF_OWNERDRAW或MF_STRING。如下所示:
MF_BITMAP:含有位图句柄。MF_STRING:以`\0’结束的字符串的指针(缺省)。
MF_OWNERDRAW:含有被应用程序应用的32位值,可以保留与菜单项有关的附加数据。当菜
单被创建或其外观被修改时,此值在消息WM_MEASURE或WM_DRAWITEM的参数IParam指向的
结构中、成员itemData里。
返回值:如果函数调用成功,返回值非零;如果函数调用失败,返回值为零。若想获得更多
的错误信息,请调用GetLastError函数。
备注:一旦菜单被修改,无论它是否在显示窗口里,应用程序必须调用函数DrawMenuBar。
下列标志可被设置在参数uFlagS里:
MF_BITMAP:将一个位图用作菜单项。参数IpNewltem里含有该位图的句柄。
MF_CHECKED:在菜单项旁边放置一个选取标记。如果应用程序提供一个选取标记位图(参见
SetMenultemBitmaps),则将选取标记位图放置在菜单项旁边。
MF_DISABLED:使菜单项无效,使该项不能被选择,但不使菜单项变灰。
MF_ENABLED:使菜单项有效,使该项能被选择,并使其从变灰的状态恢复。
MF_GRAYED:使莱单项无效并变灰,使其不能被选择。
MF_MENUBARBREAK:对菜单条的功能同MF_MENUBREAK标志。对下拉式菜单、子菜单或快捷菜单,新列和旧列被垂直线分开。
MF_MENUBREAK:将菜单项放置于新行(对菜单条),或新列(对下拉式菜单、子菜单或快捷菜单)且无分割列。
MF_OWNERDRAW:指定该菜单项为自绘制菜单项。菜单第一次显示前,拥有菜单的窗口接收一个WM_MEASUREITEM消息来得到菜单项的宽和高。然后,只要菜单项被修改,都将发送
WM_DRAWITEM消息给菜单拥有者的窗口程序。
MF_POPUP:指定菜单打开一个下拉式菜单或子菜单。参数uIDNewltem下拉式菜单或子菜单的句柄。此标志用来给菜单条、打开一个下拉式菜单或子菜单的菜单项、子菜单或快捷菜单加一个名字。
MF_SEPARATOR:画一条水平区分线。此标志只被下拉式菜单、子菜单或快捷菜单使用。此区分线不能被变灰、无效或加亮。参数IpNewltem和uIDNewltem无用。
MF_STRING:指定菜单项是一个正文字符串:参数IpNewltem指向该字符串。
MF_UNCHECKED:不放置选取标记在菜单项旁边(缺省)。如果应用程序提供一个选取标记位图(参见SetMenultemBitmaps),则将选取标记位图放置在菜单项旁边。
下列标志组不能被一起使用:
MF_BYCOMMAND和MF_BYPOSITION
MF_DISABLED,MF_ENABLED和MF_GRAYED
MF_BITMAJP,MF_STRING,MF_OWNERDRAW和MF_SEPARATOR
MF_MENUBARBREAK和MF_MENUBREAK
MF_CHECKED和MF_UNCHECKED
Windows CE环境下,不支持参数fuFlags使用下列标志:
MF_BTMAP;MF_DISABLE
参数项如果没变灰,不能使其无效。要使菜单项无效,用MF_GRAYED标志。Windows CE 1.0不支持层叠式菜单。在使用Windows CE 1.0时,不能将一个MF_POPUP菜单插入到另一个下拉式菜单中。

2.13.35 ModifyMenu
函数功能:该参数修改已存在的菜单项,并指定菜单项的内容、外观和性能。
函数原型:BOOL ModifyMenu(HMENU hMnu,UINT uPosition,UINT uFlags,UINT
uIDNewltem,LPCTSTR IpNewltem);
参数:
hMnu:将被修改的菜单的句柄。
uPosition:指定将被修改的菜单项,其含义由参数UFlags决定。
UFlags:指定控制参数uPosition的解释的标志、菜单项的内容、外观和性能。此参数必须为下列值之一和列于备注里的一个值的组合。
MF_BYCOMMAND:表示uPostion给出菜单项的标识符。如果MF_BYCOMMAND和MF_BYPOSITION
都没被指定则MF_BYCOMMAND为缺省的标志。
MF_BYPOSITION:表示uPosition给出菜单项基于零的相对位置。
UIDNewltem:指定被修改菜单项的标识符,或者当参数uFlags设置为MF_POPUP时,指定下拉式菜单或子菜单的句柄。
lpNewltem:指定被修改菜单项的内容。其含义依赖于参数UFlags是否包含标志
MF_BITMAP,MF_OWNERDRAW或MF_STRING。如下所示:
MF_BITMAP:含有位图句柄;MF_STRING:以`\0’结束的字符串的指针(缺省)。
MF_OWNERDRAW:含有被应用程序应用的32位值,可以保留与菜单项有关的附加数据。当菜单被创建或其外观被修改时,此值在消息WM_MEASURE或WM_DRAWITEM的参数lparam指向的结构中,成员itemData里。
返回值:如果函数调用成功,返回值非零;如果函数调用失败,返回值为零。若想获得更多的错误信息,请调用GetLastError函数。
备注:如果函数ModifyMenu替换了打开下拉式菜单或子菜单的菜单项,则函数销毁旧的下拉式菜单或子菜单,并释放它们占用的内存。
为了使键盘加速键能控制位图或自绘制的菜单项,菜单的拥有者必须处理WM_MENUCHAR消息。参见自绘制菜单和WM_MENUCHAR消息。
一旦菜单被修改,无论它是否在显示窗口里,应用程序必须调用函数DrawMenuBar。要修改已存在菜单项的属性,使用函数CheckMenultem和EnableMenultem更快。

你可能感兴趣的:(api,windows,user,null,string,winapi)