MFC 菜单 选中
作者[weylan] 发表于[2007-6-6 0:02:00]
还没解决么?下面是我记录的一点心得,已全部测试通过:
SDI或MDI工程中,在菜单项前打上或取消复选框标志。先给CMainFrame类添加一个BOOL类的成员变量m_stat,然后在菜单项的响应函数体中加入:
m_stat=!m_stat;
并在菜单项的UPDATE_COMMAND_UI响应函数中加入:
pCmdUI->SetCheck(m_stat);
注:如果是自绘风格(MF_OWNERDRAW)的菜单,就不会在菜单前显示小钩的。
-----------------------------------------------------------
对话框工程的话,先同样在对话框类中添加一个BOOL类的成员变量m_stat,然后用下面代码实现:
HMENU hMenu=::LoadMenu(NULL,MAKEINTRESOURCE(IDR_MENU1)); //IDR_MENU1为资源中菜单的ID
::SetMenu(m_hWnd,hMenu);
if(m_stat)
CheckMenuItem(hMenu,IDC_ENABLE,MF_UNCHECKED); //IDC_ENABLE为菜单前要打钩的子项
else
CheckMenuItem(hMenu,IDC_ENABLE,MF_CHECKED);
m_stat=!m_stat;
---------------------------------------------
也反复试过了,对话框工程中用pCmdUI->SetCheck(m_stat);的方法无效。
SDI或MDI工程中,在菜单项前打上或取消复选框标志。先给CMainFrame类添加一个BOOL类的成员变量m_stat,然后在菜单项的响应函数体中加入:
m_stat=!m_stat;
并在菜单项的UPDATE_COMMAND_UI响应函数中加入:
pCmdUI->SetCheck(m_stat);
注:如果是自绘风格(MF_OWNERDRAW)的菜单,就不会在菜单前显示小钩的。
-----------------------------------------------------------
对话框工程的话,先同样在对话框类中添加一个BOOL类的成员变量m_stat,然后用下面代码实现:
HMENU hMenu=::LoadMenu(NULL,MAKEINTRESOURCE(IDR_MENU1)); //IDR_MENU1为资源中菜单的ID
::SetMenu(m_hWnd,hMenu);
if(m_stat)
CheckMenuItem(hMenu,IDC_ENABLE,MF_UNCHECKED); //IDC_ENABLE为菜单前要打钩的子项
else
CheckMenuItem(hMenu,IDC_ENABLE,MF_CHECKED);
m_stat=!m_stat;
---------------------------------------------
也反复试过了,对话框工程中用pCmdUI->SetCheck(m_stat);的方法无效。