04界面编程2-控制条

上传人:大米 文档编号:472173290 上传时间:2022-11-17 格式:DOC 页数:21 大小:489.50KB
返回 下载 相关 举报
04界面编程2-控制条_第1页
第1页 / 共21页
04界面编程2-控制条_第2页
第2页 / 共21页
04界面编程2-控制条_第3页
第3页 / 共21页
04界面编程2-控制条_第4页
第4页 / 共21页
04界面编程2-控制条_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《04界面编程2-控制条》由会员分享,可在线阅读,更多相关《04界面编程2-控制条(21页珍藏版)》请在金锄头文库上搜索。

1、第4章 界面编程2-控制条控制条(control bar,控制栏)包括工具条(tool bar,工具栏)和状态条(status bar,状态栏),它们是构建友好GUI程序的通用界面标准,但并不是Windows API的标准部件,而是由MFC应用程序框架增加的复合控件。工具条是CToolBar类的对象,状态条是CStatusBar类的对象,这两个类都是控制条类CControlBar的派生类,而CControlBar类又是从CWnd类派生的(参见图4-1):CObject CCmdTarget CWnd CControlBar CToolBar / CStatusBar图4-1 控制条的类层次图工

2、具条和状态条都是放置在框架窗口内部的特殊控制条窗口,前者一般位于框架窗口顶部的菜单条之下,后者一般位于框架窗口的底部,它们随其父框架窗口的移动和大小改变而调整自己的长短与位置,参见图4-2 a)。 a)b)图4-2 工具条和状态条在MFC应用程序中,会自动生成工具条和状态条,并可以通过“视图”菜单中的“工具栏”和“状态栏”菜单项,来启用(显示)和禁用(隐藏)工具条和状态条,参见图4-2 b)。由MFC应用程序框架负责管理控制栏对象的创建与显示,MFC应用程序向导为框架窗口类生成的控制栏代码位于MainFrm.h和MainFrm.cpp文件中。4.1 工具条设计MFC会为应用程序自动生成一个默认

3、的可停靠工具条,包含若干(文件、编辑、打印、关于等)默认菜单项所对应的按钮。工具条设计的主要任务,是在该工具条中添加一些新按钮,以代表新增菜单中的若干常用菜单项,并将这些按钮与对应的菜单项ID关联在一起。当然,我们也可以创建新的工具条,并控制多个工具条的显示、隐藏、切换和停靠等。4.1.1 工具条工具条(tool bar)也叫工具栏,包含若干代表菜单项的图形按钮,是常用菜单项的可视界面。用鼠标单击工具条上的按钮,相当于启用对应的菜单项。1工具条按钮与菜单项工具条由若干可分组的图形按钮组成,一个工具条上所有按钮的图像属于同一个横条状位图,存储在同一个16色(4位)位图资源文件(*.bmp)中。每

4、一个按钮按顺序对应于位图中的一个16像素宽15像素高的位图片断。应用程序框架会在工具条显示时,为每个按钮提供一个边框,并通过改变其边框和按钮图片的颜色,来表示按钮的按下和正常(松开)状态。不过,按钮的分组,完全由程序代码决定,而与该位图资源无关。在应用程序中单击一个按钮后,会像菜单项和快捷键一样发送一个命令消息(一般对应于一个菜单项消息)。可以自己响应UI消息来改变按钮状态和图形,不过很少需要这样做。工具条只是常用菜单的可视界面,工具条上的按钮也只不过是对应菜单项的图示代表。程序员并不需要编写任何额外的独立代码,所需的工作就是绘制按钮的图形和关联对应的菜单项ID,其他的所有工作都由菜单项的相关

5、属性和功能来完成,包括响应代码、提示信息、启用/禁用、被按下(对应于菜单项的被选中)等。2工具条的停靠工具条的自由停靠(docking)是指,用户可以通过用鼠标拖放位于工具条头部的钳夹(gripper)来将工具条放置到框架窗口客户区的任意位置,包括靠在客户区的顶(默认)、底、左、右和悬浮在客户区的中间,参见图4-3。从MFC 4.0 开始,工具条由Windows提供的工具栏通用控件来建立,是完全可停靠的,因此工具条也称为工具栏。由MFC应用程序向导自动生成的工具条默认是可停靠的。 图4-3 可停靠工具条3默认工具条默认工具条包含“新建”、“打开”、“保存”,“剪切”、“复制”、“粘贴”,“打印

6、”,“关于”等3组8个图形按钮,它们的图像位于同一个位图文件(resToolbar.bmp)中,参见图4-4。图4-4 默认工具条及其位图MFC应用程序向导生成的默认工具条资源脚本为(位于资源文件Student.rc中):IDR_MAINFRAME TOOLBAR 16, 15BEGIN BUTTON ID_FILE_NEW BUTTON ID_FILE_OPEN BUTTON ID_FILE_SAVESEPARATOR BUTTON ID_EDIT_CUT BUTTON ID_EDIT_COPY BUTTON ID_EDIT_PASTESEPARATOR BUTTON ID_FILE_PRI

7、NT BUTTON ID_APP_ABOUTEND其中,IDR_MAINFRAME为工具条资源ID(同默认菜单条的)、TOOLBAR为关键字、16和15为每个按钮图像块的宽和高(以像素为单位)、BUTTON(按钮)为关键字、ID_为按钮所对应的菜单项ID、SEPARATOR(分隔符)用于按钮分组。不过一般并不需要手工修改这些脚本,而是由VC提供的工具栏编辑器来代劳。4.1.2 编辑工具条我们仍以Student程序为例,说明如何向工具条中添加按钮和设置属性(本小节),以及如何添加和管理新的工具条(下一小节)。1操作步骤下面是利用VS的工具栏编辑器窗口和对应的属性窗口等,来修改默认的工具条(资源标

8、识为IDR_MAINFRAME)的若干操作步骤:l 打开工具栏编辑器在VC项目工作区的“资源视图”页中展开“StudentStudent.rc”中的“Toolbar”资源列表,双击“IDR_MAINFRAME”项,打开工具栏编辑器,参见图4-5中部。图4-5 工具栏编辑器注意,由于VC08功能包在其自动生成的默认工具条中,将按钮图像的高从原来的15像素改成了16像素,所以在打开VC08功能包的工具栏编辑器时,会弹出如图4-6所示调整位图大小的确认对话框,需按“确定”钮才能打开工具栏编辑器。图4-6 调整工具条位图大小的确认对话框l 选择当前按钮单击位于工具条编辑窗口上部的(默认)工具条栏中的所

9、需按钮。l 添加按钮将工具条最右边的空白按钮拖到你想加入按钮的位置。l 绘制位图可以利用“图像”菜单(参见3.2.5小节的图3-18)、图像编辑器工具条(参见3.2.5小节的图3-19)和(一般位于属性窗口上部的)“颜色”窗口中的调色板,在中部的图像编辑器窗口中绘制和修改当前按钮的位图。(在空白按钮上绘图后,VS会自动在其右边添加一个新的空白按钮)。l 修改属性在工具栏编辑器属性窗口中可以(重点是设置关键属性ID):n 键入或选择该按钮所对应的ID(应该是已有的菜单项ID)。n 修改该按钮位图的宽和高(一般不修改)。n 键入和修改该按钮所对应的提示文本(n后的为按钮的浮动提示文本)(一般在菜单

10、项的提示串中已经包含)。l 分组按钮左/右拖动按钮半个按钮宽度,可将其:n 与右边/左边的按钮分开成不同的组。n 与左边/右边的按钮合并成同一个组。l 删除按钮将按钮拖离工具条即可。2步骤框图图4-7是在已有工具条资源中添加新按钮的基本步骤框图(粗体字为重点部分):打开工具条资源打开资源视图展开Toolbar项双击工具条ID添加按钮选中右端空白按钮拖放到所需位置绘制图案利用图像编辑器条上的工具绘制图形或从他处粘贴图片设置属性打开属性窗口选择对应菜单项ID输入提示串分组按钮左/右拖动按钮半个按钮宽度删除按钮将按钮拖离工具条图4-7 工具条编辑的主要步骤3添加字符图案按钮例如,在Student程序

11、的工具条中,在问号按钮前加入分别用“Z”与“L”字符图案表示的“张三”菜单项(ID_ NAME_ZS)与“李四”菜单项(ID_ NAME_LS)按钮,参见图4-8。按钮上的字符图案可以利用图像菜单或图像编辑器工具条中的文本工具进行绘制,参见图4-9。 图4-8 按钮的添加(左)和显示(右)图4-9 文本工具对话框(左)及其字体对话框(右)4.1.3 添加新工具条如果1)原有的工具条不够用,需要加入第2个工具条;2)或者在程序运行当中需要在多个工具条中进行切换;则需要创建新的工具条,并且编写代码将它装入框架窗口。1步骤框图添加新工具条的工作要比在修改默认工具条复杂许多,需要添加工具条资源、添加若

12、干按钮、编写相关代码等等,参见图4-10(粗体为重点部分)。添加工具条资源打开资源视图选中Toolbar项按鼠标右键弹出浮动菜单添加按钮定义工具条对象在CMainFrame类中定义工具条类CToolBar的对象创建并装入工具条在CMainFrame类的OnCreate函数中调用CToolBar类的CreateEx和LoadToolBar函数来创建和装入新工具条选中“插入Toolbar”菜单项双击对应ID在属性窗口中修改ID绘制图案选择对应菜单项ID停靠工具条在CMainFrame类的OnCreate函数中调用CToolBar类的EnableDocking函数和框架窗口类的DockControl

13、Bar函数来停靠工具条图4-10 添加新工具条的主要步骤图2创建工具条资源l 在项目工作区的“资源视图”页中的Toolbar资源表项上单击鼠标右键,在弹出的浮动菜单中选“插入Toolbar”菜单项,VS会自动创建一个ID为IDR_TOOLBAR1的空工具条。l 可在该工具条中加入若干图形按钮(如“姓名”和“成绩”菜单中各菜单项项所对应的按钮),参见图4-11。l 在属性窗口中修改工具条的ID(如IDR_MYTB),选择按钮对应的菜单项ID(如ID_NAME_WW)。图4-11 添加新工具条3创建和装入工具条针对前面所讲的两种情况,分别采用下列不同的方法来装入工具条:1)在框架窗口中加入多个工具

14、条:l 创建新工具条资源。l 打开头文件MainFrm.h,在CMainFrame类中加入工具条类CToolBar的对象m_ToolBar作为公共数据成员:public:CToolBar m_ToolBar;l 在CMainFrame类的原有OnCreate函数内加入创建与装入工具条的代码,但要注意代码的顺序,且不需重复语句EnableDocking(CBRS_ALIGN_ANY);,参见下面代码的粗体部分(其余部分为自动生成的默认代码),注意对比二者中对应的斜体部分:int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CFram

15、eWnd:OnCreate(lpCreateStruct) = -1)return -1;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_MAINFRAME)TRACE0(未能创建工具栏n);return -1; / 未能创建/ 创建并装入新工具条if (!m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 工业自动化

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号