I'm trying to add a menu to a CMFCToolbar. Following advice I found online, I'm doing it like this:
CMenu m_Menu;
m_Menu.LoadMenu(IDR_MYMENU);
m_Toolbar.ReplaceButton ( ID_DOTHISWHENCLICKED,
CMFCToolBarMenuButton( ID_DOTHISWHENCLICKED,
m_Menu,
10,
nullptr,
FALSE));
So the above gives me a button with a drop-down arrow. When I click the button, it does the action ID_DOTHISWHENCLICKED
. When I click the drop-down arrow, I get a menu with one item in it. The item is the title of IDR_MYMENU
and this has a sub-menu that is the menu I would like to be displayed. Something like this:
[BUTTON]
My Menu
Submenu Item 1
Submenu Item 2
Submenu Item 3
Obviously what I want to see is:
[BUTTON]
Submenu Item 1
Submenu Item 2
Submenu Item 3
So my question is.... why aren't all of the menu items in IDR_MYMENU
in the menu, instead of being in a sub-menu off of it?
Thanks.
This problem is fixed simply by passing in .GetSubMenu(0)->GetSafeHmenu()
, instead of the CMenu
in question, when creating the menu button. Why this should be so is a complete mystery to me, and one of those MFC'isms that you know if you know.
Not sure whether to delete this question or tick it solved in case anyone else ever has this issue.