如何用按钮禁用主菜单项
我用自创建按钮在view类中创建了一个按钮,要实现这个按钮的单击对主菜单中某个子菜单的禁用,请问如何完成?请回帖人回复的程序经过调试正确满足该要求后再回帖,本人试过了很多方法不行,请高手指点,万分感谢。。
[最优解释]
首先,在CMainFrame加上
CMainFrame::CMainFrame()
{
// TODO: 在此添加成员初始化代码
m_bAutoMenuEnable = FALSE;
}
然后,创建按钮
CButton m_btn;
m_btn.Create("按钮",WS_CHILD
[其他解释]
MF_DISABLED
[其他解释]
BS_DEFPUSHBUTTON , CRect(20,20,100,35),this,IDB_BTN);
m_btn.ShowWindow(SW_SHOWNORMAL);
在View类的头文件中加入宏定义 #define IDB_BTN 123
在View类中添加OnComaand
重写
BOOL CTextView::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
switch(wParam)
{
case IDB_BTN:
AfxMessageBox("BTN CLICKED!");
GetParent()->GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION
[其他解释]
不用这些你的代码可以禁用么?如果可以,直接在按钮里发条消息,消息处理函数去禁用呢?
[其他解释]
MF_GRAYED);
}
return CView::OnCommand(wParam, lParam);
}
就可以禁止指定菜单,已测试!
[其他解释]
你可以响应子菜单的ON_UPDATE_COMMAND_UI消息
在这个里面做.
ON_UPDATE_COMMAND_UI(ID_APP_ABOUT, &CMainFrame::OnUpdateAppAbout)
void CMainFrame::OnUpdateAppAbout(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代码
pCmdUI->Enable(TRUE);
}