VC6.0中基于对话框程序中菜单栏和工具条按钮的状态同步更新问题
来源:互联网 发布:集思宝如何导出数据 编辑:程序博客网 时间:2024/06/03 12:09
这几天用VC6.0改一个基于对话框程序,把原来对话框上散落的Button改成菜单栏和工具条的形式,并加上按钮状态(按下、禁用)更新功能。本来在单文档应用程序中比较容易实现的事,在基于对话框程序中却好棘手。
首先得为对对话框加入自定义的菜单栏和工具条,这一步不是问题,可是在对话框程序中没有CFrameWnd这个基类,就算用类向导生成了UpdateCommandUI()函数,运行程序后也不能正常响应,这个问题的解决办法是加入OnInitMenuPopup()函数,具体方法也可以在网上找到,确实能解决无法响应UpdateCommandUI()函数的问题,但最后还是留了个"后患",也就是我要解决的关键问题: UpdateCommandUI()只能改变菜单栏中按钮的状态,而与之对应的工具条上的按钮却不能相应的跟着改变。
造成这个问题的原因我也不知道,反正你打开个单文档应用程序,里面Menu和ToolBar的ID全是IDR_MAINFRAME,然后人家的菜单栏和工具条就能同步变化,而我们自己的程序里Menu与ToolBar的ID却不能相同,气愤~
说了一堆废话,讲重点: 一个函数
CToolBar.SendMessage(TB_ENABLEBUTTON,ID_TOOLBAR_START,TRUE/FALSE);
使用它可以手动来修改工具条按钮的可用状态,所以只要在需要修改菜单栏和工具条按钮状态的地方(比如一个Button的Click响应函数中) 加入这个函数,就能修改工具条上按钮的状态了,而至于菜单栏中按钮的状态,只要设一个类变量的标志位,在UpdateCommandUI()函数中判断这个标示位 并作出相应的修改就可以了。
这样下来,SendMessage()修改了工具栏的按钮状态,而标志位改变后,UpdateCommandUI()函数会更新菜单栏的状态,我们想要的状态同步更新功能就实现了。
- VC6.0中基于对话框程序中菜单栏和工具条按钮的状态同步更新问题
- 对话框中加入工具条,并设置按钮的状态
- 为基于对话框程序添加菜单栏、工具条
- 基于MFC对话框程序中添加菜单栏
- 在vc6中,toolbar按钮的状态
- 基于MFC对话框程序中添加菜单栏 (CMenu)
- 基于MFC对话框程序中添加菜单栏 (CMenu)
- 基于MFC对话框程序中添加菜单栏 (CMenu)
- VS2010的MFC对话框程序中添加菜单栏的过程
- VS2010的MFC对话框程序中添加菜单栏的过程
- 对话框中添加工具条
- 关于VC6中基于对话框的程序,往Combox 添加一个CComboBox变量,然后程序编译运行,窗口不出现的问题
- mfc中怎样在一个基于对话框程序中添加菜单栏
- VC6.0中控件及按钮的设置和使用
- 如何在对话框中加入工具条/状态条?
- 对话框中工具条的空闲处理
- 在基于对话框的应用中执行空闲状态处理(比如用ON_UPDATE_COMMAND_UI更新控件)
- 在基于对话框的应用中执行空闲状态处理(比如用ON_UPDATE_COMMAND_UI更新控件)
- Uboot 怎样传递参数启动内核
- Windows下的日志机制
- uboot启动感悟
- VS2010项目转化为VS2008项目
- 打印Djvu文件,导致打印机驱动堵塞,
- VC6.0中基于对话框程序中菜单栏和工具条按钮的状态同步更新问题
- 我的专业、我的编程
- 飞鸽传书2007 一个自己开发的软件
- MySql Limit使用
- poj 1042 gone fishing
- C++ 虚函数
- 安装deb软件
- 利用GDB进行多线程调试
- DB---数据模型的三要素