Menu Operations
Submitted by date of submission user level
Mahesh Chand July 10, 2000 Beginner
How to get a sub menu on runtime?
CMenu menu; /* Main menu */
CMenu* pContextMenu;
menu.LoadMenu(IDR_TVMCONTEXTMENU); /* IDR_TVMCONTEXTMENU is main menu resource ID */
//Get sub menu - index 0
pContextMenu = menu.GetSubMenu(0);
How to Enable/Disable/Grayed out menus on runtime?
CMenu menu; /* Main menu */
CMenu* pContextMenu;
menu.LoadMenu(IDR_TVMCONTEXTMENU); /* IDR_TVMCONTEXTMENU is main menu resource ID */
//Get sub menu
pContextMenu = menu.GetSubMenu(0);
// Enabling menu item
pContextMenu->EnableMenuItem(IDR_MANU1, MF_BYCOMMAND|MF_ENABLED);
// Disabling menu item
pContextMenu->EnableMenuItem(IDR_MANU1, MF_BYCOMMAND|MF_DISABLED);
// Grayed out menu item
pContextMenu->EnableMenuItem(IDR_MANU1, MF_BYCOMMAND|MF_GRAYED):
OR you can use MF_BYPOSITION parameter instead of MF_BYCOMMAND if you don't know the resource ID of the menu item but you know the index of the menu item. pContextMenu->EnableMenuItem(IDR_MANU1, MF_BYPOSITION|MF_ENABLED);
The best way to Enable/Disable menu items in your menu is using CMenu MFC class's EnableMenuItem function. You can Enable/Disable menu items in two ways. Either using menu item resource ID or using its position in the menu. Here is code :
How to Delete a menu item on runtime?
pContextMenu->DeleteMenu( 1, MF_BYPOSITION );
OR pContextMenu->DeleteMenu(IDR_MENU1, MF_BYCOMMAND );
How to Insert a menu item on runtime?
pContextMenu->InsertMenu(IDR_NEWMENU1, MF_BYCOMMAND );