MFC工具栏资源及CToolBar类:
MFC工具栏:
一个工具栏是一个Windows控件,它允许用户通过点击一个按钮,而不是使用菜单执行窗体上的一些行动。
1.工具栏提供了一组方便的按钮,通过将最易访问的操作作为按钮来简化了用户的工作
2.工具栏可以使此类常用操作更接近用户
3.工具栏通常显示在主菜单下
4.它们可以配备按钮,但有时其按钮或某些按钮带有标题
5.工具栏也可以配备其他类型的控件

环境WIN10,VS2013
1.新建一个对话框工程(单文档默认有工具栏)

2.切换到资源视图,右键–添加–资源

3.选择Toolbar,然后点击新建

这样就多了一个Toolbar文件夹

4.点开文件夹,在IDR_TOOLBAR1右键–属性,给他改一个有意义的名字,这里我改为IDR_TOOLBAR_X

更改后名字就发生改变

5.然后双击IDR_TOOLBAR_X,可以看到下图的窗口,上面的A是可以在工具栏上的每一个东西上面写字,默认只有一个,当你给第一个写了字 或者画了东西,他会再创建一个出来

6.我们在工具栏上分别写上XY, 如下图

7.工具栏资源已经创建完毕,接下来就是使用
先给对话框类添加一个成员:CToolBar m_wndToolBar;

8.然后在对话框初始化函数中添加创建以及显示工具栏的代码:
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |
WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS |
CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_TOOLBARDEMO))
{
EndDialog(IDCANCEL);
}
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST, 0);
m_wndToolBar.MoveWindow(10, 10, 500, 25, 1);

RepositionBars()函数–显示状态、工具栏
运行之后工具栏就显示了:

但是点击X、Y按钮并没有反应,因为没有写消息响应函数,现在切换到资源视图,双击IDR_TOOLBAR_X,我们就看到了:

9.左键点击X按钮,然后右键属性修改下ID,这里我改为ID_BUTTON_X,然后按钮Y也一样的步骤改为ID_BUTTON_Y
10.切换到类视图,找到对话框类,右键–类向导

11.在类向导对话框中,找到我们的对话框类,然后找到工具栏按钮的ID,添加COMMAND消息的处理函数

12.在消息处理函数中添加代码:

13.运行,然后点击按钮X:

工具栏上面的按钮可以跟菜单的ID一样,这样点击工具栏上的按钮和点击某个菜单的功能就是一样的了,如果工具栏某个按钮和菜单ID一样,写了菜单的消息响应 就可以不用写工具栏按钮的消息处理函数了。

CToolBar类的主要成员函数:
1.virtual BOOL CreateEx(
CWnd* pParentWnd,
DWORD dwCtrlStyle = TBSTYLE_FLAT,
DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,
CRect rcBorders = CRect(0, 0, 0, 0),
UINT nID = AFX_IDW_TOOLBAR
);创建工具栏对象。
参数pParentWnd为工具栏父窗口的指针。
参数dwCtrlStyle为工具栏按钮的风格,默认为TBSTYLE_FLAT,即“平面的”。
参数dwStyle为工具栏的风格,默认取值WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,由于是主 框架窗口的子窗口,所以要有WS_CHILD和WS_VISIBLE风格,CBRS_ALIGN_TOP风格表示工具栏位于父窗口的顶部, 各种风格可以参见MSDN的Toolbar Control and Button Styles中的定义。
参数rcBorders为工具栏边框各个方向的宽度,默认为CRect(0, 0, 0, 0),即没有边框。
参数nID为工具栏子窗口的ID,默认为AFX_IDW_TOOLBAR。
2.BOOL LoadBitmap(UINT nIDResource);为工具栏加载位图。
参数nIDResource为位图资源的ID。
成功则返回TRUE,否则返回FALSE。
注意,这里的位图资源应当为每个工具栏按钮都提供位图,如果图片不是标准大小(16像素宽,15像 素高),则需要调用SetSizes成员函数调整按钮大小和图片大小。
3.BOOL LoadToolBar(UINT nIDResource);加载由nIDResource指定的工具栏。
参数nIDResource为要加载的工具栏的资源ID。
成功则返回TRUE,否则返回FALSE。
4.void SetSizes(SIZE sizeButton,SIZE sizeImage);设置工具栏按钮的大小和图片的大小。
参数sizeButton为工具栏按钮的像素大小。
参数sizeImage为图片的像素大小。
5.void SetButtonStyle(int nIndex,UINT nStyle);设置工具栏按钮或分隔线的风格,或者为按钮分组。
参数nIndex为将要进行设置的按钮或分隔线的索引。
参数nStyle为按钮风格,可以是以下取值:
TBBS_BUTTON 标准按钮(默认)
TBBS_SEPARATOR 分隔条
TBBS_CHECKBOX 复选框
TBBS_GROUP 标记一组按钮的开始
TBBS_CHECKGROUP 标记一组复选框的开始
TBBS_DROPDOWN 创建下拉列表按钮
TBBS_AUTOSIZE 按钮的宽度根据按钮文本计算,而不基于图片大小
TBBS_NOPREFIX 按钮的文本没有快捷键前缀
6.UINT GetButtonStyle(int nIndex) const;获取工具栏按钮或分隔条的风格。风格可参考SetButtonStyle。
参数nIndex为按钮或分隔条的索引。
7.BOOL SetButtonText(int nIndex,LPCTSTR lpszText);设置工具栏按钮的文本。
参数nIndex为工具栏按钮的索引。
参数lpszText为指向要设置的文本字符串的指针。
设置成功则返回TRUE,否则返回FALSE。
8.CString GetButtonText(int nIndex) const;获取工具栏按钮上显示的文本。
参数nIndex为工具栏按钮的索引。

MFC工具栏资源及CToolBar类相关推荐

  1. (转载)VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)

    上一节中鸡啄米讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程 ...

  2. VS2013/MFC编程入门之三十四(工具栏:工具栏资源及CToolBar类)

    上一节中讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程序会执 ...

  3. 鸡啄米vc++2010系列35(工具栏资源及CToolBar类)

    工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程序会执行相应的操作,如果鼠标没有点击,只是停留在某个按钮上一会后,会弹出一个小窗 ...

  4. VC MFC工具栏(CToolBar)控件

    工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建, ...

  5. MFC文档、视图类的基本功能和二者基本关系

    MFC中,文档类的基本功能是负责管理数据:视图类的基本功能是显示数据: 二者的基本关系是,视图类有一个文档指针m_pDocument : 使用VC6新建一个单文档工程:生成的类中,xxxDoc这个是文 ...

  6. MFC中五个初始类的作用

    MFC中五个初始类的作用 https://blog.csdn.net/thisispan/article/details/7393401

  7. 假设系统中共有5个{P0,P1,P2,P3,P4}和A,B,C三类资源;A类资源共有10个,B类资源共有5个,C类资源共有7个。在时刻T0,系统资源分配情况如下表8-14所示。

    银行家算法应用 题目: 假设系统中共有5个{P0,P1,P2,P3,P4}和A,B,C三类资源:A类资源共有10个,B类资源共有5个,C类资源共有7个.在时刻T0,系统资源分配情况如下表8-14所示. ...

  8. 织梦模板站长资源教程下载类主题(带手机端)

    织梦dedecms站长资源教程下载类主题(带手机端) 本套源码为dedecms二次开发而来,也是站长资源网自用的原版本打包(以前版本),提供本套作品的初衷是为了能上更多想做下载站的站长朋友拥有一套更容 ...

  9. 初学者学习MFC的资源汇总

    写作目的 楼主最近在整理百度网盘资源,由于空间不足需要腾出一些空间以存储当前以及对未来有用的资源.于是有好多自我感觉没用的计算机资源都要进行清理.在整理的过程中,看到了我以前学习过的MFC资源.提到M ...

最新文章

  1. LeetCode刷题-3
  2. java与java ee_Java EE MVC:处理表单验证
  3. struct与typedef 结构体定义
  4. 搭建自己的GIT服务器
  5. docker 安装MySQL远程连接
  6. Real-Time Rendering——16.1 Sources of Three-Dimensional Data三维数据的来源
  7. SQLAlchemy session 使用问题
  8. 流体力学——漩涡运动
  9. 入职阿里巴巴,阿里P7高级架构师需要哪些技术栈?
  10. 清洁机器人--屏幕显示LCD方案接口说明概述
  11. 大数据扫黄,是怎样发现你的?
  12. 东华大学专业英语 词汇学习
  13. css实现立体长方柱
  14. 关于小波变换的一些理解
  15. android canvas空心圆,用canvas画实心圆和空心圆的方法
  16. 「108套商业案例」烧烤店1元吃小龙虾,15天收款70万并自动裂变
  17. 基于WebGL的虚拟太阳系漫游技术实现 ThingJS 科幻片
  18. 台达,AS228T,plc程序模板和触摸屏程序模板
  19. sts 使用gradle_如何从STS和Gradle开始
  20. oracle表空间取消只读,18_Oracle_Admin_只读表空间和离线表空间

热门文章

  1. 王者荣耀转移完成会显示我的服务器吗,王者荣耀ios转安卓如何操作 王者荣耀角色转移后原来区服还能玩吗...
  2. 转关于一些计算机面试知识总结
  3. 《MongoDB实战》读书笔记
  4. 将lang=“stylus“转换为lang=“scss“的方法
  5. linux IO Block layer 解析
  6. 简单的数字水印加密技术
  7. moviepy音视频剪辑:使用fl_time进行时间特效处理报错OSError: Error in file xxxx, Accessing time
  8. 一篇关于口碑营销的采访稿
  9. js几种倒计时实现方式
  10. 使用springboot发送QQ邮件,可以发送附件