我在UPDATE_COMMAND_UI的映射函数里加入如下代码:
void CCMenuTestDlg::OnUpdateAaBb(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->Enable(FALSE);
}
但只在文档/视图结构的程序才有效,那我该怎么办呢?
void CCMenuTestDlg::OnUpdateAaBb(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->Enable(FALSE);
}
但只在文档/视图结构的程序才有效,那我该怎么办呢?
2.(CButton *)(GetDlgItem(IDC_XXX)->SetCheck(0/1);
第一条是Enable,如果参数为FALSE为Disable如果为TRUE的话为Enable.
第二条是Check,如果参数为0的话为为选中状态,如果参数为1的话为选中状态.
其中 IDC_XXX为你的控件ID.
http://www.codeguru.com/dialog/OnUpdate.shtml
http://www.codeguru.com/dialog/DialogUpdates.shtml
这个SetCheck函数是空的,什么也不作。
而在文档视程序中调用的是CCmdUI的SetCheck()函数。这个函数才能起作用。
void CGameMineDlg::OnUpdateGameSimple(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
::CheckMenuItem( m_hMainMenu,ID_GAME_HIGH,MF_UNCHECKED);
::CheckMenuItem( m_hMainMenu,ID_GAME_CUSTOM,MF_UNCHECKED);
::CheckMenuItem( m_hMainMenu,ID_GAME_SIMPLE,MF_CHECKED);
::CheckMenuItem( m_hMainMenu,ID_GAME_MIDDLE,MF_UNCHECKED);
}
{
private:
HMENU m_hMainMenu;
}BOOL CGameMineDlg::OnInitDialog()
{
CDialog::OnInitDialog(); CMenu MainMenu;
if(!MainMenu.LoadMenu(IDR_GAME_MENU))
{
AfxMessageBox("Can't load main menu!",MB_OK|MB_ICONEXCLAMATION);
return FALSE;
}
SetMenu(&MainMenu);
m_hMainMenu=MainMenu.Detach();
....
}
WM_KICKIDLE (#include "afxpriv.h")该消息需手动添加CYourDlg::OnKickIdle()
{
UpdateDialogControls(AfxGetApp()->m_pMainWnd,true);
}Good Luck!