FAQ:WinAPI VCPP:добавить пункт меню

Материал из Весельчак У
Версия от 14:39, 30 июля 2008; RXL (обсуждение | вклад) (Новая: ===Как добавить пункт в меню?=== <code cpp> BOOL CMenu::InsertMenu( UINT nPosition, UINT nFlags,, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );...)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Как добавить пункт в меню?

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