在基于对话框的程序中,仅仅使用pCmdUI->Enable(FALSE),只能使其不可用,但是没法将其变灰,解决步骤如下: 1.在放置菜单的那个类的头文件中,声明 afx void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu); 2.在响应的cpp文件中增加消息映射: ON_WM_INITMENUPOPUP() 添加定义 void CTcswDlg::OnInitMenuPopup(CMenu *pPopupMenu, UINT nIndex, BOOL bSysMenu) { if (!bSysMenu) { ASSERT(pPopupMenu != NULL); // check the enabled state of various menu items CCmdUI state; state.m_pMenu = pPopupMenu; ASSERT(state.m_pOther == NULL); state.m_nIndexMax = pPopupMenu->GetMenuItemCount(); for (state.m_nIndex = 0; state.m_nIndex < state.m_nIndexMax; state.m_nIndex+