The problem is a "glitch" (that's how I refer to it) in BCG's design of these extensions. The correct code is below (an example for removing an item), but be sure to look below the code for the important part. NOTE: "n" = your sub menu and "ID" = the ID of the menu item you want to remove. CMenu* pMenu = CMenu::FromHandle( m_wndMenuBar.GetHMenu() ); CMenu* pSubMenu = pMenu ? pMenu->GetSubMenu( 0 ) : NULL; if( pSubMenu ) pSubMenu->RemoveMenu( ID, MF_BYCOMMAND ); IMPORTANT (see below, too): You must FIRST go to the registry and DELETE the entry for you product. HKCU/Software/Your Product. You can just delete the correct folder for the menu, but that's up to you to figure out which one it is. PROBLEM: This will solve it for you and new users of your product. However, existing users will never see the changes. There is a function CWinAppEx::CleanState(), which is supposed to remove memory from the registry. But, you will then have an app with no memory of toolbars, menus, etc...meaning customization is pointless. Good luck!