怎么给菜单加上选中标记(注意是基于对话框的程序)??
怎么给菜单项加上选中标记啊???????
这是一个基于对话框的程序,IDD_TEST_DLG与IDR_MENU1关联了,现在想动态的改变 IDR_MENU1下面的一个子项 IDR_ITEM1 的选中状态,就像 2000里的任务管理器菜单里的“总在最前面”那样,听人们说是 映射 ON_UPDATE……消息,再在响应函数里写入 pCmdUI->SetCheck(0或者1),这样就能使其选中或者取消选中,开始这个方法对与 单文档程序是有用的,开始对于 基于对话框的程序就不管用了???
请问这个怎么回事啊??该怎么解决啊???
另外,会提示为 IDR_MENU1 选择一个类,无论是选择 TestDlg类或者不理它,上述方法都不管用的啊。
问题点数:20、回复次数:3Top
1 楼mestars(米豆)(☆☆)回复于 2006-06-08 09:28:51 得分 0
我也遇到这个问题,帮你顶一下Top
2 楼hailongxl(吹雪)回复于 2006-06-08 10:12:50 得分 0
hook msg WM_KICKIDLE
LRESULT CXXXDlg::OnKickIdle(WPARAM wParam, LPARAM lParam)
{
UpdateDialogControls(this, FALSE);
CMenu* pMainMenu = GetMenu();
//if( pMainMenu == NULL )return 0;
CCmdUI cmdUI;
// update menu enable/disable state
for (UINT n = 0; n < pMainMenu->GetMenuItemCount(); ++n)
{
CMenu* pSubMenu = pMainMenu->GetSubMenu(n);
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);
}
}
// enable/disable toolbar buttons
if (m_wndToolBar.IsWindowVisible())
{
// OnUpdateCmdUI expects a CFrameWnd pointer, so let's fake it ..
CFrameWnd *pParent = (CFrameWnd *)this;
if (pParent)
m_wndToolBar.OnUpdateCmdUI(pParent, TRUE);
}
return Default();
}Top
3 楼lixiaosan(小三)回复于 2006-06-08 13:58:53 得分 0
http://support.microsoft.com/kb/242577/en-usTop




