会MFC的高手请进来

来源:百度知道 编辑:UC知道 时间:2024/06/03 03:32:06
OnUpdate32771(CCmdUI *pCmdUI)和On32771()这个两个消息有什么区别,32771是我的菜单ID,帮我说说区别,还有用OnUpdate32771(CCmdUI *pCmdUI)后On32771就没有效果了,还有
pCmdUI->Enable(0);在pCmdUI->Enable(0);为什么没效果了

On32771() 响应的是ON_COMMAND消息,就是当你点击菜单后,所执行的东西

OnUpdate32771 响应的是ON_UPDATE_COMMAND消息。当用户拉出一个菜单时,每个菜单项都需要知道它应该被显示为可用还是禁用。CMainFrame框架会寻找并调用各个ON_UPDATE_COMMAND_UI处理程序,每个处理程序调用CCmdUI中像Enable和Check这样的成员函数,然后框架将按照其合适的方式显示各个菜单项。说白了,就是当用户拉下菜单时,实时的更新菜单显示,也就是拉下菜单后,这些子菜单的界面显示(包括菜单是否可用,菜单前的点或勾 还有菜单的标题)。常见的做法是通过一个变量来判断是否需要调用这些函数(这个变量在别的地方被赋值)
Enable 是否可用
SetCheck 是否有对号
SetRadio 是否有点
SetText 设置新的文本

你设置pCmdUI->Enable(0);后, 然后点击菜单,框架发现你设置了Enable(0),也就是菜单不可用,于是实时的更新为不可用,你可以使用个变量来控制它。如
if (m_xxx) {
pCmdUI->Enable(0);
} else {
pCmdUI->Enable(1);
}