FAQ:WinAPI VCPP:добавить пункт меню
Материал из Весельчак У
Как добавить пункт в меню?
BOOL CMenu::InsertMenu( UINT nPosition, UINT nFlags,, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );
- nPosition - индекс или ID (в зависимости от флага MF_BYCOMMAND или MF_BYPOSITION). Если индекс указать равный -1, то вставка произойдёт в конец меню. Указание ID нужно для изменения данных пункта с идентификатором ID (например переименование).
- nFlags - флаги.
- nIDNewItem - ID или handle подменю в случае pop-up. В последнем случае во флаги надо добавить MF_POPUP.
- lpszNewItem - текст пункта. Если текст есть, во флаги добавить MF_STRING.
Примеры вставки различных пунктов:
//указатель на меню CMenu *pM = ...; //вставка обычного пункта в начало меню pM->InsertMenu(0, MF_BYPOSITION | MF_STRING, ID_MyItem, "item1"); //переименование пункта ID_MyItem pM->InsertMenu(ID_MyItem, MF_BYCOMMAND | MF_STRING, ID_MyItem, "my item"); //вставка сепаратора в конец меню pM->InsertMenu(-1, MF_SEPARATOR, 0, 0); HMENU hM = ...;//хендл под-меню //вставка пункта с подменю (pop-up) в конец меню pM->InsertMenu(-1, MF_BYPOSITION | MF_STRING | MF_POPUP, hM, "popup item");