### 函数功能

该函数插入一个新菜单项到菜单里，并使菜单里其他项下移。

### 函数原型

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菜单插入到另一个下拉式菜单中。