函式原型
BOOL InsertMenu(HMENU hMenu,UINT uPosition,UINT uFlags,UINT uIDNewltem,LPCTSTR lpNewltem);
參數:
1. hMenu:將被修改的選單的句柄。
2. uPosition:指定新選單項將被插入其前面的選單項,其含義由參數uFlagS決定。
3. uFlags:指定控制參數uPosition的解釋的標誌、新選單項的內容、外觀和性能。此參數必須為下列值之一和列於備註里的一個值的組合。
(1). MF_BYCOMMAND:表示uPosition給出選單項的標識符。如果MF_BYCOMMAND和MF_BYPOSITION都沒被指定,則MF_BYCOMMAND為預設的標誌。
(2). MF_BYPOSITION:表示uPosition給出新選單項基於零的相對位置。如果uPosition為OxFFFFFFFF新
選單項追加於選單的末尾。
4. uIDNewltem:指定新選單項的標識符,或者當參數uFlags設定為MF_POPUP時,指定下拉式選單或子選單的句柄。
5. LpNewltem:指定新選單項的內容。其含義依賴於參數UFlags是否包含標誌MF_BITMAP,MF_OWNERDRAW或MF_STRING。如下所示:
(1). MF_BITMAP:含有點陣圖句柄。MF_STRING:以`\0’結束的字元串的
指針(預設)。
(2). 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_BITMAP,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選單插入到另一個下拉式選單中。