带有编程构造菜单的CMFCMenuButton
CMFCMenuButton with a programmatically constructed menu?
我是CMFCMenuButton
控件的新手;以下是我在OnInitDialog()
中的代码:
// Load application list into menu button
m_ApplicationMenu = CreateMenu();
m_MenuInfoSize = 2;
m_MenuInfo = new MENUITEMINFO[m_MenuInfoSize];
memset(m_MenuInfo, 0, sizeof(MENUITEMINFO) * m_MenuInfoSize);
UINT menuIndex = 0;
BOOL b;
// 1st menu item
memset(m_MenuInfo + menuIndex, 0, sizeof(MENUITEMINFO));
m_MenuInfo[menuIndex].cbSize = sizeof(MENUITEMINFO);
m_MenuInfo[menuIndex].fMask = MIIM_ID | MIIM_STRING | MIIM_DATA;
m_MenuInfo[menuIndex].wID = menuIndex;
m_MenuInfo[menuIndex].dwTypeData = new WCHAR[10];
swprintf_s(m_MenuInfo[menuIndex].dwTypeData, 10, L"%s", L"A1");
m_MenuInfo[menuIndex].cch = wcslen(m_MenuInfo[menuIndex].dwTypeData) + 1;
b = InsertMenuItem(m_ApplicationMenu, menuIndex, TRUE, &(m_MenuInfo[menuIndex]));
menuIndex++;
// 2nd menu item
memset(&m_MenuInfo[menuIndex], 0, sizeof(MENUITEMINFO));
m_MenuInfo[menuIndex].cbSize = sizeof(MENUITEMINFO);
m_MenuInfo[menuIndex].fMask = MIIM_ID | MIIM_STRING | MIIM_DATA;
m_MenuInfo[menuIndex].wID = menuIndex;
m_MenuInfo[menuIndex].dwTypeData = new WCHAR[10];
swprintf_s(m_MenuInfo[menuIndex].dwTypeData, 10, L"%s", L"B2");
m_MenuInfo[menuIndex].cch = wcslen(m_MenuInfo[menuIndex].dwTypeData) + 1;
b = InsertMenuItem(m_ApplicationMenu, menuIndex, TRUE, &(m_MenuInfo[menuIndex]));
menuIndex++;
// Attach menu to CMFCMenuButton
m_ApplicationList.m_bOSMenu = TRUE;
m_ApplicationList.m_bRightArrow = FALSE;
m_ApplicationList.m_bStayPressed = TRUE;
m_ApplicationList.m_bDefaultClick = FALSE;
m_ApplicationList.m_hMenu = m_ApplicationMenu;
// Testing the constructed menu with the dialog's menu bar
::SetMenu(this->m_hWnd, m_ApplicationMenu);
当我运行应用程序时,当我点击它时,CMFCMenuButton
显示了一个下拉菜单…但这两个条目是空的,没有文本和图像。
我添加了最后一行来测试我构建的菜单;这两个项目正确地显示在菜单栏上。
我还尝试使用从资源编辑器创建的菜单。菜单栏显示正常,但在CMFCMenuButton
中,又出现了空白。
我错过了什么?
Try
m_ApplicationMenu = CreatePopupMenu();
另外,如果你想在单击事件中获得CMFCMenuButton
的m_nMenuResult
,你最好使用1
作为第一个menuIndex
。因为:
CMFCMenuButton::m_nMenuResult
一个整数,指示用户从弹出式菜单中选择哪个项。
如果用户取消菜单,则此成员变量的值为零
相关文章:
- 无法获取菜单选择以运行函数.C++
- C++ 中的图形菜单
- C++ 程序菜单使用做同时和切换
- 我正在尝试创建一个菜单,但我的代码一直在循环
- 触发另一个窗口的菜单按钮
- 从子菜单返回后,正确的输入至少进入验证循环一次
- C++ 我的开关格式中的循环不允许我显示菜单选项或接受输入?
- 如何为我的游戏设置主菜单场景?QT C++
- C++循环菜单时做
- 难以从 CImageList 设置菜单项位图
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 如何以编程方式显示功能区按钮的下拉菜单?
- 如何在win32的窗口类中设置动态菜单?
- 为什么我的 Do-while 循环无法在C++中运行菜单
- 我正在尝试用 c++ 制作菜单,但不明白为什么它不循环
- 如何使用IExecuteCommand和动词在上下文菜单外壳扩展中显示本地化文本和自定义图标?
- 连接资源文件中的字符串,并将其传递给菜单项字符串 (winapi) c++
- 需要帮助主菜单C++
- 获取 c++ mfc vs2015 中弹出资源菜单项的 id
- QT 窗口模式禁用菜单中的操作