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