对话框的菜单和控件无法使用COMMAND_UI
下面方法最简单、最实用的实现了。
//CXxxDlg.h ///////////////
//重载WM_MENUSELECT
afx_msg void OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu);
//CXxxDlg.cpp ///////////////
//消息映射
ON_WM_MENUSELECT()
//消息映射结束
void CXxxDlg::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu)
{
//CDialog::OnMenuSelect(nItemID, nFlags, hSysMenu);
CCmdUI cmdUI;
CMenu* pMainMenu = GetMenu();
CMenu* pSubMenu = pMainMenu-> GetSubMenu(nItemID);
if(IsMenu(pSubMenu->GetSafeHmenu()))
{
cmdUI.m_nIndexMax = pSubMenu->GetMenuItemCount();
for (UINT i = 0; i < cmdUI.m_nIndexMax;++i)
{
cmdUI.m_nIndex = i;
cmdUI.m_nID = pSubMenu->GetMenuItemID(i);
cmdUI.m_pMenu = pSubMenu;
cmdUI.DoUpdate(this, FALSE);
}
}
}
//十分简单,十分好用:)