5.4.2 工具栏类
在MFC中,工具栏的功能由类CTooIBar实现。CToolBar提供了一系列成员函数来创建、维护工具栏。下面简单介绍一下。
(1)Create()函数
工具栏创建函数,其原型为:
其中,pParenwnd为父窗口的指针;nID为工具栏的ID标识符:dwStyle为工具栏的风格样式。
(2)GetButtonstyle和SetButtonstyle
这两个函数分别用来返回和设置命令按钮的风格或间隔区,它们的原型分别为:
其中,nlndex指定工具栏中按钮或间隔区的索引号:nStyle指定按钮的风格。
说明:按钮或间隔区的索引号,就是按钮或间隔区从左到右的顺序号,最小为0。
(3)GetButtonInfo和SetButtonInfo
分别用来返回和获取命令按钮或间隔区的ID号、风格和位图索引号。其原型分别为:
其中,iImage为按钮位图的索引号,对间隔区而言,iImage表示该间隔区的宽度:其余参数与前面相同。
(4)GetButtonText和SetButtonText
分别用来获得和设置按钮的文本,其原型为:
其中,rString为包含按钮文本的CString对象,lpszText指向文本字符串;参数nIndex的意义同上。
另外,CToolBar的 EnableDocking函数和 CFramewnd的 DockControlBar函数配合使用可以设定工具栏的可浮动性。这两个函数的用法如下:
其中,dwStyle可取下面值的组合:CBRS_ALIGN_TOP(允许工具栏位于客户区的上侧),CBRS_ALIGN_BOTTOM(下侧)、CBRS_ALIGN_LEFT(左侧)、CBRS_ALIGN_RIGHT(右侧)、CBRS_ALIGN_ANY(任意侧)、CBRS_ALIGN_MULTI(允许多个控制栏在一个多重框架窗口中浮动)。
其中,pBar为浮动的控制栏指针;nDockBarID指定允许浮动的位置,可由下列值组合而成:AFX_IDW_DOCKBA_TOP(上侧)、AFX_IDW_DOCKBA_BOTTOM(下侧)、AFX_IDW_DOCKBA_LEFT(左侧)、AFX_IDW_DOCKBA_RIGHT(右侧)。
工具栏的创建分为两部分:首先在Visual C++(www.cppentry.com) 6.0集成开发环境中设计好工具栏的位图;然后在程序中创建工具栏并让工具栏与位图关联起来。
从外观上看,工具栏中的每一个按钮都是一个单独的图片,实际上,整个工具栏的所有按钮都使用的是同一张位图。现在,我们来看看如何使用资源编辑器进行工具栏的编辑。
【实例5-3】 工具栏资源编辑器
光盘路径 /05/prop/
实例目的 工具栏资源编辑器
本实例主要就是为了让读者了解工具栏资源编辑器。
1.创建工程
启动Microsoft Visual Studio 6.0,在IDE中依次选择“File”→“New”菜单命令,或直接按快捷键“Ctrl+N”,打开“New”对话框。
在“New”对话框中单击“Projects”选项卡,在列表框中选择“MFC AppWizard(.exe)”项,在“Project name”文本框中输入“prop”,其他使用默认值,单击“OK”按钮,弹出“MFC AppWizard-Step1”对话框。
在“MFC AppWizard-Step1”对话框中,选中“Single Document”单选按钮,其他使用默认值,然后单击“Finish”按钮,在弹出的“New Project Information”对话框中单击“OK”按钮,就可以完成工程的创建。
2.查看工具栏资源编辑器
在工作区中选择“Resource View”标签,转到资源编辑窗口,双击“Toolbar”下的“IDR_MAINFRAME”项,打开工具栏资源编辑器,如图5-41所示。

图5-41 工具栏资源编辑器
可以看到,工具栏资源实际上是以位图方式存在的。单击“Image”菜单下的“Toolbar Editor”菜单项,会看到工具栏资源是由一系列连续的小块图片组成的一整幅位图,如图5-42所示。

图5-42 编辑中的工具栏
从图5-42可以看出,每个按钮图片对应于位图中一小块图片,这些图片被系统用一个个边框分开,默认情况下,这些小块图片有15像素高,16像素宽。
在实际运行中,工具栏如图5-43所示,工具栏上的按钮分为多组,并根据条件的不同呈现出彩色或灰色等状态。

图5-43 运行中的工具栏
可以在关联的位图资源中对按钮的大小和分隔线进行设置。用“记事本”软件打开程序目录下的资源文件prop.rc,找到工具栏在资源文件中的部分,如图5-44所示。可以在这里修改工具按钮的尺寸,分组等。

图5-44 资源文件中工具栏设置
此外,所有的工具状态都可以在程序运行时动态地进行设置。工具栏位图编辑完成后,还要为每个按钮设置ID及说明、提示等。在工具栏按钮上双击,会弹出如图5-45所示的工具按钮属性对话框。在这里,可以设置按钮的ID、按钮尺寸,以及在状态栏上的提示和工具提示。

图5-45 工具按钮属性对话框
可以看到,这个按钮的ID是:ID_FILE_NEW。利用同样的方法可以知道第二个按钮的ID为:ID_FILE_OPEN。
3.在工具栏上添加和删除按钮
接下来我们要在prop程序已有的工具栏上再添加一个按钮,添加方法是单击工具栏上最后一个空白按钮,然后在按钮编辑窗口,利用工具面板上提供的绘图工具设计按钮的外观。本例添加的按钮资源如图5-46所示,并将其ID设置为IDM_TEST。

然后,在 “帮助”菜单下再添加一个子菜单项,并将其ID设置为刚才新添加的那个按钮的ID,Caption设置为:Test。接着,为该菜单项添加一个命令消息响应函数:OnTest,并为响应函数添加代码,其代码如下:
4.编辑并运行程序
编辑并运行程序,单击“帮助”菜单下的“Test”菜单命令时,程序将弹出消息对话框。当单击工具栏上的 按钮时,同样也会弹出跟前面一样的对话框,如图5-47所示。

因为他们的ID是一样的,因此,当单击工具栏上的 按钮时,它仍然由OnTest响应函数进行响应。在日常编写程序时,通常是在菜单资源设计完成后,为一些常用的菜单命令设置相应的按钮,摆放到工具栏上,以方便用户的操作。
如果想要删除工具栏上的某个按钮,第一个想到的方法就是在资源编辑窗口中选中这个按钮,然后利用键盘上的Del键来删除它,但是,读者会发现这样做并不会删除按钮,而是将按钮上的图像删除了。要删除工具栏上的按钮,方法是在资源编辑窗口中,在此按钮上按下鼠标左键,然后将该按钮拖出工具栏,再松开鼠标左键,这样就可以把该按钮从工具栏上删除。
【责任编辑:
杨硕 TEL:(010)68476636-8001】