【问题标题】: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);}

标签: c++ visual-c++ mfc


【解决方案1】:

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

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

【讨论】:

  • 你应该详细说明你的答案。如果您的链接失效,您的答案的价值就会受到影响。
猜你喜欢
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
  • 2012-09-13
相关资源
最近更新 更多