书上有这么一段话:
UPDATE_COMMAND_UI机制用于处理菜单和工具条,例如设置工具条按钮的状态enabled/disenabled。但是,该机制只能直接用于基于文档/视图结构的应用程序,对于对话框,MFC还没有提供类似的功能来处理按钮状态。(再下在就是在工具条中增加UPDATE_COMMAND_UI机制的实例)问题:
此机制的功能是不是使按钮、菜单禁用(变灰)?
据查阅资料得知:使按钮、菜单禁用(变灰)不是还有:EnableWindow()和EnableMenuItem()吗?
上文中提到:“MFC还没有提供类似的功能来处理按钮状态”什么意思?
请各位指教。谢谢。
如果方便的话,给我举个简单的实例,解释UPDATE_COMMAND_UI机制的用途好么?谢谢。
UPDATE_COMMAND_UI机制用于处理菜单和工具条,例如设置工具条按钮的状态enabled/disenabled。但是,该机制只能直接用于基于文档/视图结构的应用程序,对于对话框,MFC还没有提供类似的功能来处理按钮状态。(再下在就是在工具条中增加UPDATE_COMMAND_UI机制的实例)问题:
此机制的功能是不是使按钮、菜单禁用(变灰)?
据查阅资料得知:使按钮、菜单禁用(变灰)不是还有:EnableWindow()和EnableMenuItem()吗?
上文中提到:“MFC还没有提供类似的功能来处理按钮状态”什么意思?
请各位指教。谢谢。
如果方便的话,给我举个简单的实例,解释UPDATE_COMMAND_UI机制的用途好么?谢谢。
解决方案 »
- 100分!请问在VC中以ado的方式,如何以SYSDBA或者SYSOPER登陆oracle?
- VC6.0如何编写activeX控件供VB工程使用
- 关于Image::FromStream的问题
- MFC编程中遇到的困难!(关于打开与保存的问题)
- 如何对RichEdit控件进行操作
- 【二千(2000)专家分求一程序】
- 十分感谢tangss,来这里拿分吧!
- ??? 程序不明原因退出
- [新手]vc++调用OpenGL窗口显示.3ds模型做成DLL动态数据库 VC++调用出现问题
- 关于mfc中窗口分割后的问题
- 那位大仙可以相告:用Socket编程,在局域网上测试通过,可是在Internet上,客户端找不到服务器,怎么回事?
- 求两个时间点的时差(毫秒级)
-----------------------------------------------
是为了标识按钮、菜单当前的状态
不只是变灰pCmdUI->Enable(m_bXXX);
还有如:pCmdUI->SetCheck()
pCmdUI->SetRadio();
在触发命令的同时,改变按钮、菜单当前的状态
以记录操作
不知道你指的是这个问题么?
实现一个问题的方法有很多种,自己可以选择,UI机制提供了对工具栏和菜单项改变状态的有效控制,因为工具栏和菜单项是Windows自己绘制的,工具栏上的按钮并不是Button控件,而Button是Button自己绘制的,实现机制不同。
最简单的应用,就是在响应UPDATE_COMMAND_UI消息的时候根据某种状态变量改变工具栏或者菜单项的状态。
然后你可以在消息函数里面设置各个菜单项的状态
如果不用UPDATE_COMMAND_UI,你想一下你如何实现在我点
文件菜单,但是文件菜单的菜单项没有弹出来之前改变
”打开“菜单项为灰色???例子就是。假如有个菜单,里面有个菜单项叫ID_MEMU1,我现在要实现
当GetCurrentTime()返回的时间中,分钟值为偶数时让ID_MEMU1无效,
如12:30:10无效12.31.10有效,,,
可以响应UPDATE_COMMAND_UI消息
在消息函数中写
{
int m;//当分时间的分
//得到时间,并把分数赋给m
//.........
if(m%2 == 0)//偶数
pCmdUI->Enable(false);
else
pCmdUI->Enable(true);
}反正通过这个消息你可以动态设置菜单的状态
不过工具栏上按钮的状态是在消息循环有空的时候设置,不是象菜单一样在
弹出时设置