工具栏设计-程序员宅基地

技术标签: button  工具  insert  imagelist  properties  dropdown  

工具栏设计

计算机编程 2010-02-01 11:25:06 阅读156 评论0 字号:

http://book.csdn.net/bookfiles/521/10052117702.shtml

6.2  工具栏设计

工具栏中包含了一组用于执行命令的按钮,每个按钮都用一个图标来表示。当单击某个按钮时,会产生一个相应的消息,对这个消息的处理就是按钮的功能实现。将菜单中常用的功能放置在工具栏中,这样可以方便用户操作,省去了在级联菜单中一层层查找菜单项的麻烦。

6.2.1  工具栏类CToolBar

在MFC类库中,CToolBar类封装了工具栏的基本功能,CToolBar类的主要方法如下。

(1)Create方法:该方法用于创建工具栏窗口。语法如下:

BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT

nID = AFX_IDW_TOOLBAR );

参数说明

l     pParentWnd:标识父窗口。

l     dwStyle:标识工具栏风格。可选值如下:

² CBRS_TOP:工具栏位于框架窗口的顶部。

² CBRS_BOTTOM:工具栏位于框架窗口的底部。

² CBRS_NOALIGN:当父窗口重新调整尺寸时不重新定位工具栏。

² CBRS_TOOLTIPS:工具栏显示工具提示。

² CBRS_SIZE_DYNAMIC:工具栏是动态的。

² CBRS_SIZE_FIXED:工具栏是固定的。

² CBRS_FLOATING:工具栏是浮动的。

² CBRS_FLYBY:状态栏显示按钮的信息。

² CBRS_HIDE_INPLACE:工具栏不显示。

l     nID:标识工具栏ID。

(2)CreateEx方法:该方法与Create方法类似,用于创建工具栏窗口,只是该方法支持扩展风格。语法如下:

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);

参数说明

l     pParentWnd:标识父窗口。

l     dwCtrlStyle:标识工具栏扩展风格。

l     dwStyle:标识工具栏风格。

l     rcBorders:标识工具栏边框的宽度。

l     nID:标识工具栏ID。

(3)SetSizes方法:该方法用于设置按钮和位图的大小。语法如下:

void SetSizes( SIZE sizeButton, SIZE sizeImage );

参数说明

l     sizeButton:标识按钮的大小。

l     sizeImage:标识位图的大小。

(4)SetHeight方法:该方法用于设置工具栏的高度。语法如下:

void SetHeight( int cyHeight );

参数说明

l     cyHeight:以像素为单位标识工具栏的高度。

(5)LoadToolBar方法:该方法用于加载工具栏资源。语法如下:

BOOL LoadToolBar( LPCTSTR lpszResourceName );

BOOL LoadToolBar( UINT nIDResource );

参数说明

l     lpszResourceName:标识资源名称。

l     nIDResource:标识资源ID。

返回值:如果函数执行成功,返回值是非零,否则为零。

(6)LoadBitmap方法:该方法用于加载一个位图资源,位图中包含了每个工具栏按钮的图像。语法如下:

BOOL LoadBitmap( LPCTSTR lpszResourceName );

BOOL LoadBitmap( UINT nIDResource );

参数说明

l     lpszResourceName:标识资源名称。

l     nIDResource:标识资源ID。

返回值:执行成功,返回值是非零,否则为零。

(7)SetBitmap方法:该方法用于设置工具栏按钮位图。语法如下:

BOOL SetBitmap( HBITMAP hbmImageWell );

参数说明

l     hbmImageWell:工具栏位图资源按钮。

(8)SetButtons方法:该方法用于向工具栏中添加按钮,并设置按钮的ID和图像索引。语法如下:

BOOL SetButtons( const UINT* lpIDArray, int nIDCount );

参数说明

l     lpIDArray:标识一个无符号整型数组,其中包含了按钮ID,如果数组中的某个元素值为ID_SEPARATOR,对应的按钮将是一个分隔条。

l     nIDCount:标识数组中的元素数量。

(9)CommandToIndex方法:该方法根据工具栏按钮ID返回按钮索引。语法如下:

int CommandToIndex( UINT nIDFind );

参数说明

l     nIDFind:标识按钮ID。

返回值:返回按钮ID对应的按钮索引,如果按钮ID没有对应的按钮,返回值为-1。

(10)GetItemID方法:该方法根据按钮索引返回按钮ID。语法如下:

UINT GetItemID( int nIndex ) const;

参数说明

l     nIndex:标识按钮索引。

返回值:返回按钮的ID,如果nIndex标识的按钮是一个分隔条,返回值是ID_SEPARATOR。

(11)GetItemRect方法:该方法根据按钮索引获取工具栏按钮的显示区域。语法如下:

virtual void GetItemRect( int nIndex, LPRECT lpRect );

参数说明

l     nIndex:标识按钮ID。

l     lpRect:用于接收按钮区域。

(12)GetButtonStyle方法:该方法用于获得按钮的风格。语法如下:

UINT GetButtonStyle( int nIndex ) const;

参数如下

l     nIndex:工具栏中按钮的索引,最小为0,从左到右依次增大。

(13)SetButtonStyle方法:该方法用于设置某个按钮的风格。语法如下:

void SetButtonStyle( int nIndex, UINT nStyle );

参数说明

l     nIndex:标识按钮索引。

l     nStyle:标识按钮风格。可选值如下。

² TBBS_BUTTON:标准按钮。

² TBBS_SEPARATOR:分隔线。

² TBBS_CHECKBOX:复选风格。

² TBBS_GROUP:按钮组。

² TBBS_CHECKGROUP:复选按钮组。

(14)GetButtonInfo方法:该方法用于获取按钮信息。语法如下:

void GetButtonInfo( int nIndex, UINT& nID, UINT& nStyle, int& iImage ) const;

参数说明

l     nIndex:标识按钮索引。

l     nID:用于接收返回的按钮ID。

l     nStyle:接收按钮风格。

iImage:用于接收按钮的图像索引。

(15)SetButtonInfo方法:该方法用于设置按钮的信息。语法如下:

void SetButtonInfo( int nIndex, UINT nID, UINT nStyle, int iImage );

参数说明

l     nIndex:要设置信息的按钮索引。

l     nID:要设置按钮的ID。

l     nStyle:要设置按钮的风格。

l     iImage:要设置的位图资源索引。

(16)GetButtonText方法:该方法用于获取工具栏按钮文本。语法如下:

CString GetButtonText( int nIndex ) const;

void GetButtonText( int nIndex, CString& rString ) const;

参数说明

l     nIndex:标识按钮索引。

l     rString:用于接收按钮文本。

(17)SetButtonText方法:该方法用于设置按钮文本。语法如下:

BOOL SetButtonText( int nIndex, LPCTSTR lpszText );

参数说明

l     nIndex:标识按钮ID。

l     lpszText:标识按钮文本。

(18)GetToolBarCtrl方法:该方法用于访问底层的工具栏按钮通用控件。语法如下:

CToolBarCtrl& GetToolBarCtrl( ) const;

6.2.2  工具栏资源设计

在开发文档/视图结构的应用程序时,系统会自动创建工具栏。但是如果开发基于对话框的应用程序,就需要用户自己创建工具栏了。在创建基于对话框的应用程序时,默认情况下,是不会创建工具栏资源的。如果用户想要设计工具栏,可以通过工作区的ResourceView来创建工具栏资源。

(1)在工作区的ResourceView中鼠标右键单击某个节点,在弹出的快捷菜单中选择“Insert”菜单项,打开“Insert Resource”对话框,如图6.19所示。

工具栏设计 - 温馨小窝 - 温馨小窝的博客

图6.19 “Insert Resource”对话框

(2)选择“Toolbar”选项,单击“New”按钮创建工具栏资源,如图6.20所示。

(3)在工具栏资源中绘制工具栏按钮。当用户在按钮上绘制图像后,工具栏窗口会自动创建一个新的工具栏按钮,如图6.21所示。

工具栏设计 - 温馨小窝 - 温馨小窝的博客                 工具栏设计 - 温馨小窝 - 温馨小窝的博客

              图6.20  工具栏窗口                                    图6.21  绘制工具栏按钮

工具栏设计 - 温馨小窝 - 温馨小窝的博客   说明:如果要为工具栏按钮添加分隔线,可以选中要加入分隔线位置的按钮,将这个按钮向右拖动一点距离࿰

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/scollins/article/details/5766427

智能推荐

TCP协议--TCP连接的状态转移_在tcpip建立连接过程中,客户端或服务端的状态转移-程序员宅基地

文章浏览阅读1.3k次。《Linxu高性能服务器编程》阅读笔记:1. TCP服务端连接的状态转移  (1) 服务器调用listen()系统调用进入LISTEN(监听)状态,被动等待客户端连接。  (2) 服务端一旦监听到某个连接请求(收到同步报文段),就将该连接放入内核等待队列中,并向客户端发送带有SYN标志的确认报文段,此时服务端进入SYN_RCVD状态。  (3) 如果服务端成功接收到客户端发送回的确认报文段,就转移至_在tcpip建立连接过程中,客户端或服务端的状态转移

计算机图形学入门:什么是光线追踪?_计算机图形学中的ray tracker和着色器分别起到什么作用-程序员宅基地

文章浏览阅读2.8k次,点赞4次,收藏14次。从年初GDC放出DXR的消息已经有很长一段时间了(最初接触DXR的相关API还是在NVIDIA工作的时候,转眼大半年过去,我已经离开了NVIDIA),这是一篇基于我对光线追踪的了解写的入门文章(因为我本人也只是入门水平)。文中会少量涉及DirectX Raytracing的相关API,大部分还是阐述光线追踪技术的基本原理,在末尾的部分会recap今年GDC上的两篇[1][2]有关光线追踪的演讲。希望不太熟悉这个领域又时常听说光线追踪这个概念的同学能够通过这篇内容粗略地了解整个光线追踪技术的框架。这篇内容会覆_计算机图形学中的ray tracker和着色器分别起到什么作用

【K70例程】015片上16位ADC读取_IAR-程序员宅基地

文章浏览阅读437次。By Mcuzone使用J-LinkV8IAR版本6.6调试串口波特率:115200基于MDKK70-EK_T43硬件平台#define ADC0_CHANA 21 // set to desired ADC0 channel trigger A #define ADC0_CHANB 22 // set to des

使用IDEA阅读源码的正确姿势~_idea 读源码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏5次。使用IDEA阅读源码的正确姿势~原文链接有一句古语,大家都听过的——工欲善其事必先利其器,尤其是生活在这样一个既是最好的时代,又是最坏的时代中,极其智能的编辑器Intellij IDEA因其智能性受到大家推崇,又因其智能性而不熟练于一些设置而苦恼,今天找来一篇文章为大家总结了使用IDEA阅读源码时最惊为天人的几个方式1 秘技-左右横跳·选中方法,CTRL+左击,可跳转至方法的定义处·在方法定义处执行CTRL+左击,还可发现该方法在哪些地方被使用到。对于变量,该功能同样适用,实现流畅地左右_idea 读源码

NOIP2015 跳石头 解题报告(二分答案)_noip2015搬石头 site:blog.csdn.net-程序员宅基地

文章浏览阅读2.5k次。在线评测:http://codevs.cn/problem/4768/整体思路:二分答案,看可不可以就行失误之处:没有考虑中间没有石头的情况,体会心得:注意特殊情况特殊判断AC代码:12345678910111213_noip2015搬石头 site:blog.csdn.net

UINavigationBar 的详解 (基于 API)-程序员宅基地

文章浏览阅读222次。UINavigationBar是什么?一个支持分层内容导航的视觉控件,最常用于导航控制器。基本组成UINavigationBar对象是一个bar,通常显示在窗口的顶部,包含用于在屏幕层次结构中导航的按钮。主要组件:左( 返回)按钮,中心标题和可选的右按钮。(下图所示)UINavigationBar外观的定制UINavigationBar的外观包括背景颜色,背景图片,文字颜色,按钮文字..._uinavigationbar

随便推点

Lombok的基本使用_lombok有参午餐构成-程序员宅基地

文章浏览阅读7.6k次,点赞30次,收藏2次。介绍:Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。1.创建maven项目2.导入如响应的jar几插件安装1.导入依赖的jar包 <dependencies> ..._lombok有参午餐构成

通过android inputManagerService 看JNI 函数注册_安卓inputmanagerservice类所属包名-程序员宅基地

文章浏览阅读321次。android 的inputManagerService 处理外设输入。其分为java 和c++两部分,这两部分的桥梁通过如下两个文件实现:InputManagerService.java(framworks\base\services\core\java\com\android\server\input)com_android_server_input_InputManagerSer..._安卓inputmanagerservice类所属包名

windows下搭建virtualenv、virtualenvwrapper虚拟环境_wrappervirtualemv window-程序员宅基地

文章浏览阅读2.5w次,点赞15次,收藏29次。windows下搭建virtualenv、virtualenvwrapper虚拟环境发表于 2016-10-17 | | 阅读次数 60操作系统: win7virtualenv1. 安装virtualenvpip install virtualenv2. 新建虚拟环境virtualenv bobbyvir注_wrappervirtualemv window

spark python3.7_填坑日记---linux环境安装python3.7.3及pyspark-程序员宅基地

文章浏览阅读439次。系统:CentOS7 64位(Python version 2.7.5)目的:安装pyspark使其启动的默认python版本为python3python3.7.3(1)首先安装依赖包gcc(管理员或其权限下运行)yum -y install gcc(2)安装其他依赖包(可以不安装,但是可能会安装过程中报错):yum -y install zlib-devel bzip2-devel openss..._centos安装python3.7和spark

Android 使用蓝牙:Need android.permission.BLUETOOTH_SCAN_java.lang.securityexception: need android.permissi-程序员宅基地

文章浏览阅读1.4w次。Android使用BluetoothAdapter的蓝牙相关api时报错:Caused by: java.lang.SecurityException: Need android.permission.BLUETOOTH_SCAN permission 。。。查看资料,发现 BLUETOOTH_SCAN 是Android 12中新加入的权限,在之前的版本中并没有。参考:Android 12 中的新蓝牙权限..._java.lang.securityexception: need android.permission.bluetooth_scan permissi

SEO优化:学会这四大技巧就能让你的网站被蜘蛛收录更多的页面_友情链接 隐藏 display 蜘蛛会收录吗-程序员宅基地

文章浏览阅读1.3k次。 1、 网站和页面的权重   这个是大家都知道的,网站和页面的权重越高的话,蜘蛛一般会爬行的越深,被蜘蛛收录的页面也更多一些。但是一个新的网站,权重达到1的话是相对容易的,但是如果想要把权重再网上增加则会越来越难。   2、页面的更新度和更新频率   蜘蛛每次爬行网站的时候都会把这些页面的数据保存在数据库中,下次蜘蛛再次爬行此网站的时候则会与上次爬行的数据进行对比,如果页面与上次的页面是一..._友情链接 隐藏 display 蜘蛛会收录吗

推荐文章

热门文章

相关标签