作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的对话框顶部有一个菜单栏,其中一个选项是“模式”,其中包含“正常”和“调试”。我试图做到这一点,以便当用户单击这两个选项中的任何一个时,下拉菜单中最后选择的项目旁边会出现一个复选标记。
这是我通过谷歌搜索发现的,但我无法让它工作:
//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/
我是一名优秀的程序员,十分优秀!