了解用户是不是选择了子菜单项 MFC

Posted

技术标签:

【中文标题】了解用户是不是选择了子菜单项 MFC【英文标题】:Know whether user selected a sub menu item or not MFC了解用户是否选择了子菜单项 MFC 【发布时间】:2016-03-24 16:34:29 【问题描述】:

我有一个 MFC 应用程序,它在菜单的矩形项下有一个子菜单。当用户从 GUI 中单击时,没有选择黑色子菜单。我想要用户选择子菜单等界面,旁边应该出现一个勾号。却无能为力。这是我尝试在用户点击时获得焦点的代码。

This is for ON_COMMAND:  

ON_COMMAND(ID_IMAGEOPTIONS_IMAGEWITHBLACKRECTANGLES, &CMainFrame::OnToggleTestBlackRectangles)      

void CMainFrame::OnToggleTestBlackRectangles()

 CMenu menu;
 menu.LoadMenu(IDR_MAINFRAME);
 menu.CheckMenuItem(ID_IMAGEOPTIONS_IMAGEWITHBLACKRECTANGLES, MF_CHECKED);
 UINT SST = menu.GetMenuState(ID_RECTANGLE_BLACK, MF_BYCOMMAND);
 

This is for ON_UPDATE_COMMAND_UI:

ON_UPDATE_COMMAND_UI(ID_IMAGEOPTIONS_IMAGEWITHBLACKRECTANGLES, &CMainFrame::OnCheckMenu)
void CMainFrame::OnCheckMenu(CCmdUI *pCmdUI)


   pCmdUI->SetCheck(0);


即使用户单击子菜单,也不会出现刻度线,甚至 getmenustate 返回 0 而不是非零值。

任何帮助表示赞赏!!!

【问题讨论】:

该代码没有任何作用。是否要在命令旁边添加复选标记? @BarmakShemirani 我刚刚更新了我的帖子并编写了我实现的完整功能。 声明一个成员变量BOOL m_black;将其初始化为真或假。将OnToggle() 更改为m_black = !m_black;OnCheckMenu 更改为pCmdUI->SetCheck(m_black); 【参考方案1】:

UI 不会自行更新,您必须自己更新。

请阅读:How to: Update User-Interface Objects

【讨论】:

你应该详细说明你的答案。如果您的链接失效,您的答案的价值就会受到影响。

以上是关于了解用户是不是选择了子菜单项 MFC的主要内容,如果未能解决你的问题,请参考以下文章

MFC 菜单项复选框行为

MFC中添加的菜单项为啥始终是灰色的

mfc 菜单项变灰

MFC - 选中/取消选中菜单项

如何设置检查菜单项 mfc c++

MFC的UI更新机制和加速键的创建