【发布时间】: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);}
标签: c++ visual-c++ mfc