工具栏简介

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

一般工具栏中的按钮在菜单栏中都有对应的菜单项中,即点击工具栏按钮与点击菜单项的效果相同。但工具栏中的按钮都显式的排列出来,操作很方便,而且按钮上的图片描述功能更直观,所以工具栏作为用户操作接口来说比菜单更加便捷。

VS2010工具栏资源详解

鸡啄米仍然以VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)中创建的单文档工程Example34为基础,讲解工具栏资源。

在Example34工程中,打开Resource View资源视图,展开Example->Example34.rc->Toolbar,我们可以看到有一个ID为IDR_MAINFRAME的工具栏资源,双击打开,工具栏资源显示如下:

以IDR_MAINFRAME工具栏的第一个按钮为例说明工具栏按钮的各项属性。用鼠标单击工具栏资源上的第一个按钮,属性页中就会显示其属性。下面分别讲解各项属性。

ID属性:ID_FILE_NEW。不知大家是否还记得,菜单IDR_MAINFRAME的菜单项File->New的ID也是ID_FILE_NEW,两者ID相同,正是如此才使得工具栏第一个按钮与菜单项File->New能实现相同的功能。所以大家一定要记住,如果想让工具栏某个按钮与菜单栏某个菜单项点击后执行的操作相同,就要为两者设置相同的ID。

Prompt属性:Create a new document\nNew。此属性为工具栏按钮的提示文本。在鼠标指向此按钮时,状态栏中会显示“Create a new document”,当弹出提示信息窗口时会显示包含“New”的提示信息。“\n”是两者的分隔转义符。

Height属性:15。此属性为工具栏按钮的像素高度。

Width属性:16。此属性为工具栏按钮的像素宽度。

工具栏资源的最右边总是会有一个待编辑的按钮,我们对其进行编辑后,工具栏资源会自动增加一个新的空白按钮,这也实现了按钮的添加操作。如果我们想要删除某个按钮,就可以用鼠标左键点住它,拖出工具栏资源的范围即可。

另外,我们看到,第三个按钮(保存按钮)和第四个按钮(剪切按钮)之间有一些间隙,在运行程序后会出现一个竖的分隔线,所以想要在两个按钮之间添加分隔线的话,可以用鼠标左键拖住右边的按钮往右稍移动一些就可以了。

CToolBar类的主要成员函数

MFC为工具栏的操作提供了CToolBar类。下面介绍CToolBar类的主要成员函数。

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。

BOOL LoadBitmap(UINT nIDResource);

为工具栏加载位图。参数nIDResource为位图资源的ID。成功则返回TRUE,否则返回FALSE。注意,这里的位图资源应当为每个工具栏按钮都提供位图,如果图片不是标准大小(16像素宽,15像素高),则需要调用SetSizes成员函数调整按钮大小和图片大小。

BOOL LoadToolBar(UINT nIDResource);

加载由nIDResource指定的工具栏。参数nIDResource为要加载的工具栏的资源ID。成功则返回TRUE,否则返回FALSE。

void SetSizes(SIZE sizeButton,SIZE sizeImage);

设置工具栏按钮的大小和图片的大小。参数sizeButton为工具栏按钮的像素大小。参数sizeImage为图片的像素大小。

void SetButtonStyle(int nIndex,UINT nStyle);

设置工具栏按钮或分隔线的风格,或者为按钮分组。参数nIndex为将要进行设置的按钮或分隔线的索引。参数nStyle为按钮风格,可以是以下取值:

TBBS_BUTTON   标准按钮(默认)
       TBBS_SEPARATOR   分隔条 
       TBBS_CHECKBOX   复选框 
       TBBS_GROUP   标记一组按钮的开始
       TBBS_CHECKGROUP   标记一组复选框的开始
       TBBS_DROPDOWN   创建下拉列表按钮
       TBBS_AUTOSIZE   按钮的宽度根据按钮文本计算,而不基于图片大小 
       TBBS_NOPREFIX   按钮的文本没有快捷键前缀

UINT GetButtonStyle(int nIndex) const;

获取工具栏按钮或分隔条的风格。风格可参考SetButtonStyle。参数nIndex为按钮或分隔条的索引。

BOOL SetButtonText(int nIndex,LPCTSTR lpszText);

设置工具栏按钮的文本。参数nIndex为工具栏按钮的索引。参数lpszText为指向要设置的文本字符串的指针。设置成功则返回TRUE,否则返回FALSE。

CString GetButtonText(int nIndex) const;

获取工具栏按钮上显示的文本。参数nIndex为工具栏按钮的索引。

本节内容就讲到这里了,下节继续讲解VS2010工具栏的有关知识。谢谢大家对鸡啄米和本教程的持续关注!

转载地址:http://www.jizhuomi.com/software/215.html

转载于:https://www.cnblogs.com/zfluo/p/5131890.html

鸡啄米vc++2010系列35(工具栏资源及CToolBar类)相关推荐

  1. 鸡啄米vc++2010系列11(非模态对话框的创建)

    上一节鸡啄米讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 鸡啄米已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换.鸡啄米会将 ...

  2. 鸡啄米vc++2010系列40(文档、视图和框架:分割窗口)

    分割窗口概述 分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或者是同一类型的视图,或者是不同类型的视图. MFC分割窗口的方式有两种,动态分割和静态分割. 动态分割窗口通 ...

  3. 鸡啄米vc++2010系列2(项目文件分析)

    用应用程序向导生成框架程序后,我们可以在之前设置的Location下看到以解决方案名命名的文件夹,此文件夹中包含了几个文件和一个以工程名命名的子文件夹,这个子文件夹中又包含了若干个文件和一个res文件 ...

  4. 鸡啄米vc++2010系列12(属性页对话框)

    前面讲了模态对话框和非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框.另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将& ...

  5. 鸡啄米vc++2010系列7(对话框:创建对话框类和添加控件变量)

    前两讲中鸡啄米为大家讲解了如何创建对话框资源.创建好对话框资源后要做的就是生成对话框类了.鸡啄米再声明下,生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 因为鸡啄米给大家的例程 ...

  6. 鸡啄米vc++2010系列32(标签控件Tab Control 下)

    上一节中鸡啄米讲了标签控件知识的上半部分,本节继续讲下半部分. 标签控件的创建 MFC为标签控件的操作提供了CTabCtrl类. 与之前的控件类似,创建标签控件可以在对话框模板中直接拖入Tab Con ...

  7. 鸡啄米vc++2010系列27(列表视图控件List Control 上)

    列表视图控件简介 列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁.直观,在实际应用中能为用户带来方便. 列表视图控件是对前面讲到 ...

  8. MFC工具栏资源及CToolBar类

    MFC工具栏资源及CToolBar类: MFC工具栏: 一个工具栏是一个Windows控件,它允许用户通过点击一个按钮,而不是使用菜单执行窗体上的一些行动. 1.工具栏提供了一组方便的按钮,通过将最易 ...

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

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

最新文章

  1. Lesson 4- Exchange Server 2010 Publish
  2. php 数据库查询乱码,怎么解决php数据库查询乱码问题
  3. HD 1525 Euclid's Game
  4. 用docker安装mysql5-6,并远程连接
  5. 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
  6. Sun Cluster3.3+Oracle11g配置数据库资源问题
  7. java中活锁和死锁的区别_死锁、活锁、饿死和阻塞的个人理解
  8. 标定工具CANape软件使用之新建工程
  9. Outlook和Foxmail里设置Gmail(Google)谷歌企业邮箱
  10. 【安卓学习之第三方库】 消息推送之阿里云推送
  11. python怎么复数乘方开方_一篇小文入门 Python
  12. 俞敏洪-精彩绝伦的人生
  13. Windows光标选中字符切换到输入字符快捷键
  14. 2020最新Java面试合集,跳槽必看
  15. L3-001. 凑零钱(dfs + 各种剪枝)
  16. 在D-H参数法里为什么只用四个参数就能完全定义一个具有6自由度的坐标系
  17. 创建型模式—工厂模式
  18. 微表面模型GGX/Trowbridge-Reitz概率密度函数的推导
  19. pjsip 会议桥多点会议呼叫_智能办公|唯美无纸化会议时代的到来
  20. letter-combinations-of-a-phone-number

热门文章

  1. 【springboot】【若依(ruoyi)】@RestController 接口跨域请求
  2. 服务器的图片无法显示,服务器的图片无法显示
  3. html filter 作用,css滤镜有什么作用?
  4. MySQL8改root密码
  5. python selenium 框架说明_基于python+selenium的框架思路(二)
  6. 商品规格js_品优购电商系统开发 第3章 规格及模板管理
  7. CentOS7部署jar包
  8. 请简单叙述微型计算机的诞生,2012湖南省计算机等级考试试题 二级C试题考资料...
  9. NLTK基础 | 一文轻松使用NLTK进行NLP任务(附视频)
  10. Python 分析天气,告诉你中秋应该去哪里