如何让MFC对话框中的Menu菜单变灰或恢复

如题所述

第1个回答  2016-10-01
MFC中,菜单按钮的使能问题是在系统空闲时候处理的。
一个菜单项用于处理一个功能,功能处理问题和使能问题,写代码上基本相同:

假如一个菜单项的 ID 为 ID_COMMAND
功能处理:

在窗口的 h 文件中定义函数

afx_msg void OnGrapFenJie();
afx_msg void OnUpdateFenjie(CCmdUI * pCmdUI);

然后在窗口的 CPP 文件中实现代码:

void OnGrapFenJie()
{
菜单的功能代码
}
void OnUpdateFenjie(CCmdUI * pCmdUI);
{
pCmdUI->Enable(菜单可用 ? TRUE : FALSE);
}

最后 窗口 CPP 文件是 BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 之间加入代码,相应消息就可以了。

ON_COMMAND(ID_COMMAND, OnGrapFenJie)
ON_UPDATE_COMMAND_UI(IDID_COMMAND, OnUpdateFenjie)本回答被提问者和网友采纳

MFC怎么使用按钮控件使子菜单项变灰和激活(按下变灰,再次按下激活...
如果是绑定的菜单,响应UPDATE_COMMAND_UI消息,响应函数中pCmdUI->Enable(控制变量);然后在按钮中修改控制变量就可以了。如果是自定义菜单,获取子菜单对应的MENUITEM指针,同样是Enable控制。

MFC中关于Menu的灰化
1.使用类向导响应菜单项的UPDATE_COMMAND_UI 消息 在资源视图->Menu下找到你想要操作的菜单,右键ClassWizard,然后左侧选中菜单ID,在右侧双击ON_UPDATE_COMMAND_UI 2.可手动为菜单项添加ON_UPDATE_COMMAND_UI消息 \/\/.h afx_msg void OnUpdateDisplayAllHole(CCmdUI* pCmdUI);\/\/.cpp BEGIN_MESSAGE_MA...

mfc 菜单项变灰
首先,要想控制系统的初始化效果,需要添加Test的InitInstance()虚函数,在里面写菜单栏的置灰操作,代码如下:CMenu* submenu = m_pMainWnd->GetMenu();submenu->EnableMenuItem(1,MF_BYPOSITION | MF_ENABLED | MF_GRAYED);用到了变量m_pMainWnd,这个是系统定义的窗口句柄;函数EnableMenuItem(),...

MFC中,怎么让弹出菜单的某一个菜单项变灰(不可用)?
指定参数给出已存在菜单项的位置。第一项所在的位置是0。·MF_DISABLED 使菜单项无效,以便它不能被选择,但不变灰。·MF_ENABLED 使菜单项有效,以便它能够被选择,并可从变灰的状态中恢复出来。·MF_GRAYED 使菜单项无效,以便它不能被选择并同时变灰。说明:使菜单项有效、无效或变灰。CreateMenu...

MFC中让菜单按钮变灰
在窗口的 h 文件中定义函数 afx_msg void OnGrapFenJie();afx_msg void OnUpdateFenjie(CCmdUI * pCmdUI);然后在窗口的 CPP 文件中实现代码:void OnGrapFenJie(){ 菜单的功能代码 } void OnUpdateFenjie(CCmdUI * pCmdUI);{ pCmdUI->Enable(菜单可用 ? TRUE : FALSE);} 最后 窗口 CPP 文件是...

MFC怎么设置菜单项灰色不可用状态
CMenu* mmenu = GetMenu();CMenu* submenu = mmenu->GetSubMenu(0); \/\/子菜单指针 \/\/某项菜单无效,变灰 submenu->EnableMenuItem(0, MF_BYPOSITION | MF_DISABLED | MF_GRAYED);

CMFCMenuBar如何改变子菜单的状态
首先我们新建一个MFC的单文档工程:DynamicMenu,基本设置如下:这里要提一下的是VS Feature Pack的应用程序其中的菜单栏操作主要由CMFCMenuBar来负责。因此下面的编码也主要针对该类来进行。首先我们实现编码实现删除默认的所有系统菜单项,其代码如下:[cpp] view plaincopy \/\/ 删除默认的所有系统菜单项 ...

MFC 怎样使对话框右上角的红叉变灰,即不可用??
在OnInitDialog()中添加以下两句即可:CMenu* menu = this->GetSystemMenu(FALSE);menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);

mfc创建的单文档菜单栏按钮是灰的
因为你添加消息响应不是在MainFrame里面添加的,所有是灰色的

MFC菜单灰显
pMenu()->GetSubMenu(0)->EnableMenuItem(ID_MENUITEM32771,MF_BYPOSITION|MF_GRAYED);在CMainFrame的构造函数中加一句:m_bAutoMenuEnable=FALSE;我这行的啊 是在构造函数中加的吗 还有pMenu后有(),

相似回答