gpt4 book ai didi

c++ - 如何在 MFC 中设置菜单项旁边的复选标记?

转载 作者:行者123 更新时间:2023-11-30 04:02:43 25 4
gpt4 key购买 nike

我的对话框顶部有一个菜单栏,其中一个选项是“模式”,其中包含“正常”和“调试”。我试图做到这一点,以便当用户单击这两个选项中的任何一个时,下拉菜单中最后选择的项目旁边会出现一个复选标记。

The menu I'm working with.

这是我通过谷歌搜索发现的,但我无法让它工作:

//event handler for user clicking on mode then normal in the menu
void CNew_RGB_ControlDlg::OnModeNormal()
{
//check the normal option when the user selects normal mode in the menu
CMenu menu;
menu.LoadMenu(IDR_MENU1);
menu.CheckMenuItem(ID_MODE_NORMAL, MF_CHECKED | MF_BYCOMMAND); //returns 8
menu.CheckMenuItem(ID_MODE_DEBUG, MF_UNCHECKED | MF_BYCOMMAND);//returns 0
}

我还有另一个这样的功能,当点击调试时,它是相同的代码,只是选中和未选中被切换。

返回值使它看起来应该根据 MSDN 工作,但菜单项永远不会改变。

我也试过这个:

void CNew_RGB_ControlDlg::OnModeNormal()
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
menu.GetSubMenu(1)->CheckMenuItem(0, MF_BYPOSITION|MF_CHECKED);
menu.GetSubMenu(1)->CheckMenuItem(1, MF_BYPOSITION|MF_CHECKED);
}

我做错了什么?我需要做什么才能完成这项工作?

最佳答案

不是在选择项目时加载新菜单,而是需要获取对话框中使用的当前菜单,例如

CMenu *pMenu = GetMenu();
if (pMenu != NULL)
{ pMenu->CheckMenuItem(ID_MODE_NORMAL, MF_CHECKED | MF_BYCOMMAND);
pMenu->CheckMenuItem(ID_MODE_DEBUG, MF_UNCHECKED | MF_BYCOMMAND);
}

关于c++ - 如何在 MFC 中设置菜单项旁边的复选标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24912134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com