调用了EnableMenuItem为什么变灰那不用说了,我说说为什么不调用也会变灰:
首先要知道,当你点现了一个有子菜单的菜单项时(比如菜单栏上的“文件”),系统会向拥有这个菜单的窗口发送一个WM_INITMENUPOPUP, 下面是MFC对这个消息的默认处理:
void CFrameWnd::OnInitMenuPopup(CMenu* pMenu, UINT nIndex, BOOL bSysMenu)
{
//为了说明问题,我省略了很多代码
CCmdUI state;
state.m_pMenu = pMenu;
state.m_nIndexMax = pMenu->GetMenuItemCount();
for (state.m_nIndex = 0; state.m_nIndex < state.m_nIndexMax;
state.m_nIndex++)
{
state.m_nID =
首先要知道,当你点现了一个有子菜单的菜单项时(比如菜单栏上的“文件”),系统会向拥有这个菜单的窗口发送一个WM_INITMENUPOPUP, 下面是MFC对这个消息的默认处理:
void CFrameWnd::OnInitMenuPopup(CMenu* pMenu, UINT nIndex, BOOL bSysMenu)
{
//为了说明问题,我省略了很多代码
CCmdUI state;
state.m_pMenu = pMenu;
state.m_nIndexMax = pMenu->GetMenuItemCount();
for (state.m_nIndex = 0; state.m_nIndex < state.m_nIndexMax;
state.m_nIndex++)
{
state.m_nID =

当点击有子菜单的菜单项时,系统发送WM_INITMENUPOPUP消息,MFC框架内部通过CCmdUI类进行处理。如果菜单项未响应CN_UPDATE_COMMAND_UI或CN_COMMAND消息,且m_bAutoMenuEnable为真,菜单项可能因缺乏处理函数而变灰。关闭m_bAutoMenuEnable可防止这一行为。
最低0.47元/天 解锁文章
2195

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



