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");