调用了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 = pMenu->GetMenuItemID(state.m_nIndex);
if (state.m_nID == (UINT)-1)
{
//m_nID==-1表示它下面还有popup menu(就那种带右箭头的菜单项),
首先要知道,当你点现了一个有子菜单的菜单项时(比如菜单栏上的“文件”),系统会向拥有这个菜单的窗口发送一个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 = pMenu->GetMenuItemID(state.m_nIndex);
if (state.m_nID == (UINT)-1)
{
//m_nID==-1表示它下面还有popup menu(就那种带右箭头的菜单项),