对话框中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息

在对话框程序中添加工具栏其实很简单,网上能找到很多的例子。一般的步骤就是:1、在资源中添加工

具栏资源;2、在对话框类中定义一个工具栏变量;3、在对话框的OnInitDialog函数中Create工具栏。程

序如下:
在对话框类中定义工具栏成员变量:
CToolBar m_ToolBar;
在OnInitDialog函数中Create之:
if(!m_ToolBar.CreateEx(this, TBSTYLE_FLAT,

WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC)
  ||!m_ToolBar.LoadToolBar(IDR_TOOLBAR_GRAPHICS))
 {
  TRACE0(_T("创建工具条失败/n"));
  return FALSE;
 }
 RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

但是要让对话框中的工具栏响应UPDATE_COMMAND_UI消息,做到按下保持的状态仅仅重载

UPDATE_COMMAND_UI消息并使用SetCheck是不行的,因为此时的工具栏上的按钮属性为普通的按钮,可以

通过下面的方法测试:
      if(m_ToolBar.GetButtonStyle(0) == TBBS_BUTTON)
 {
  AfxMessageBox("This is Button Style");
 }
必须添加以下的设置:
      m_ToolBar.SetButtonStyle(0,TBBS_CHECKBOX);
 m_ToolBar.SetButtonStyle(1,TBBS_CHECKBOX);
SetButtonStyle函数的原型及其相关的说明:(引自MSDN)
1、void SetButtonStyle( int nIndex, UINT nStyle );

Parameters

nIndex

Index of the button or separator whose information is to be set.

nStyle

The button style. The following button styles are supported:

TBBS_BUTTON   Standard pushbutton (default)

TBBS_SEPARATOR   Separator

TBBS_CHECKBOX   Auto check-box button

TBBS_GROUP   Marks the start of a group of buttons

TBBS_CHECKGROUP   Marks the start of a group of check-box buttons
Remarks

Call this member function to set the style of a button or separator, or to group buttons. A

button's style determines how the button appears and how it responds to user input.

2、还有一种修改Button属性的函数
void SetButtonInfo( int nIndex, UINT nID, UINT nStyle, int iImage );

Parameters

nIndex

Index of the button or separator whose information is to be set.

nID

The value to which the button’s command ID is set.

nStyle

The new button style. The following button styles are supported:

TBBS_BUTTON   Standard pushbutton (default)

TBBS_SEPARATOR   Separator

TBBS_CHECKBOX   Auto check-box button

TBBS_GROUP   Marks the start of a group of buttons

TBBS_CHECKGROUP   Marks the start of a group of check-box buttons
iImage

New index for the button’s image within the bitmap.

Remarks

Call this member function to set the button's command ID, style, and image number. For

separators, which have the style TBBS_SEPARATOR, this function sets the separator's width in

pixels to the value stored in iImage.

For information on bitmap images and buttons, see the CToolBar Overview and

CToolBar::LoadBitmap.

MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息相关推荐

  1. MFC——基于MFC对话框程序中添加菜单栏 (CMenu)解决方案

    开发环境 Visual C++ 6.0 MFC 解决方案 一.将Menu加入Resource视图中 在WorkSpace中的Resource视图下,在任意一个文件夹图标上,右击选择Insert(插入) ...

  2. MFC应用程序中添加控制台窗口

    在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息:另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行. 其实有一种方法可以更 ...

  3. MFC应用程序中添加控制台窗口---debug输出窗口

    在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息:另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行. 其实有一种方法可以更 ...

  4. MFC对话框程序如何添加菜单

    一般创建MFC有四种程序类型,分别是单个文档,多个文档,基于对话框和顶级文档.其中只有基于对话框的类型是不自带菜单栏的,但是如果需要,也可以手动创建,也是非常简单的. 如何添加菜单? 此处以VS201 ...

  5. VS2010环境下用c++语言在MFC对话框程序中连接及操作Mysql 数据库

    小编近来由于工作需要,需要折腾一下MySql据库, 由于以前用的数据库不是 MySql, 也不是在 VS2010 , 更不是在 MFC 中连接数据库.所以还颇费了一番周折才实现了把数据插入到数据库表格 ...

  6. GUI程序中添加控制台调试

    本文转自:http://blog.csdn.net/pkueecser/article/details/7469761 在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Outpu ...

  7. MFC应用程序中嵌入一个谷歌cef浏览器

    声明:文章来自http://www.codeproject.com/Articles/1105945/Embedding-a-Chromium-browser-in-an-MFC-applicatio ...

  8. VS2017 MFC对话框程序打印及打印预览的实现

    VS2017 MFC对话框程序打印及打印预览的实现 花了一个星期,研究了网上大量的MFC对话框打印及打印预览功能的demo之后,网上现有的版本都比较旧,所以选中了几个版本,合并修改,得到这个比较完美的 ...

  9. 如何在RCP程序中添加一个banner栏

    前言:这段时间还算比较空闲,我准备把过去做过的有些形形色色,甚至有些奇怪的研究总结一下,也许刚好有人用的着也不一定,不枉为之抓耳挠腮的时光和浪费的电力.以前有个客户提出要在RCP程序中添加一个bann ...

最新文章

  1. 链表题目总结(第一篇)
  2. SharedPointer
  3. Bitwise Exclusive-OR Sequence 异或,dfs,菊花图(2021.11.沈阳)
  4. php去除数组中的第一个元素,php如何删除数组的第一个元素和最后一个元素
  5. 无法嵌入互操作类型“……”,请改用适用的接口的解决方法
  6. 黑客开始利用云计算暴力破解密码
  7. 论文浅尝 | LGESQL: 结合线性有向图以及普通有向图的自然语言转换SQL语句模型...
  8. 最短路径问题(信息学奥赛一本通-T1342)
  9. 天勤计算机考研高分笔记(一)绪论1数据结构
  10. UEFI 启动 win7
  11. OMNeT 例程 Tictoc9 学习笔记
  12. 三步建立自己的电影网站 1 (安装MacCMS10)
  13. opendevops_codo项目研究
  14. wps交叉表_使用WPS图表功能中的堆叠条形图制作日程交叉图
  15. js框架jquery实现的幸运大转盘抽奖程序代码,兼容多种浏览器(Internet Explorer 6.0+ 、Firefox 2.0 、Safari 3 、Opera 9 、Chrome)
  16. Cesium实现自定义的广告牌效果
  17. 求解大规模稀疏多目标优化问题的一种进化算法(SparseEA)笔记
  18. Hi3559AV100芯片内部温度检测
  19. 微信小程序怎么长按复制_微信小程序基于Parser添加长按复制、代码高亮等功能...
  20. Salient Image Matting

热门文章

  1. 这些数据分析方法你都掌握了么
  2. 写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出1 9 9 0。
  3. 国家高性能计算环境的虚拟数据空间运行支撑技术研究
  4. 【面向对象】泛化与继承
  5. 质数筛(洛谷P5736题题解,Java语言描述)
  6. 笨小猴(洛谷P1125题题解,Java语言描述)
  7. 巧用HashSet装载非重数据(洛谷P2250题题解,Java语言描述)
  8. 一步步yum安装LNMP,脱坑笔记!!!
  9. [转]mysql优化——show processlist命令详解
  10. 机器人中的轨迹规划(Trajectory Planning )