方法一:
第一步:
响应WM_INITMENUPOPUP消息
void C***::OnInitMenuPopup(CMenu* pPopupMenu, UINT /*nIndex*/, BOOL /*bSysMenu*/)
{
CCmdUI CmdUI;
for(UINT Idx = 0;Idx < pPopupMenu->GetMenuItemCount();Idx++)
{
CmdUI.m_nID = pPopupMenu->GetMenuItemID(Idx);
CmdUI.m_nIndex = Idx;
CmdUI.m_nIndexMax = pPopupMenu->GetMenuItemCount();
CmdUI.m_pMenu = pPopupMenu;
CmdUI.DoUpdate(this,FALSE);
}
}
第二步:
响应ON_UPDATE_COMMAND_UI或者ON_UPDATE_COMMAND_UI_RANGE消息就可以了.
http://blog.youkuaiyun.com/laiyiling/archive/2004/08/27/87027.aspx
英文:
http://support.microsoft.com/default.aspx?scid=kb;en-us;242577
本文介绍了一种在Windows应用程序中更新菜单的有效方法。通过响应WM_INITMENUPOPUP消息并使用CCmdUI类来遍历菜单项,可以实现菜单项状态的动态更新。此外,还介绍了如何通过响应ON_UPDATE_COMMAND_UI或ON_UPDATE_COMMAND_UI_RANGE消息来进一步定制菜单行为。
3274

被折叠的 条评论
为什么被折叠?



