设为首页 加入收藏

TOP

5.4.3 创建工具栏
2013-10-06 23:58:14 来源: 作者: 【 】 浏览:63
Tags:5.4.3 创建 工具

5.4.3  创建工具栏
在prop程序中,可以看到在CMainFrame类的头文件中定义了一个CToolBar类型的成员变量:m_wndToolBar。CToolBar就是工具栏类,CToolBar派生于CControlBar类,而后者又派生于CWnd类,因此工具栏也是一个窗口。
VC++(www.cppentry.com)为我们提供了两种创建工具栏的方法。
第一种方法需要遵循以下几个步骤。
创建工具栏资源。
构造CToolBar对象。
调用Create或CreateEx函数创建Windows工具栏,并把它与已创建的CToolBar对象关联起来。
调用LoadToolBar函数加载工具栏资源。
其中CToolBar类的Create成员函数的原型声明如下:
 
该函数各个参数的意义如下所述。
  pParentWnd:CWnd类型的指针,指定工具栏对象的父窗口。
  dwStyle:指定工具栏的样式,例如工具栏是一个子窗口(WS_CHILD)、工具栏是可视的(WS_VISIBLE)、工具栏停靠在框架窗口的顶部(CBRS_TOP)。
  nID:指定工具栏子窗口的ID。
CToolBar类的CreateEx成员函数的原型声明如下:
 
该函数各个参数的意义如下所述。 
pParentwnd:CWnd类型的指针,指定工具栏对象的父窗口。
dwCtrlStyle:设置内嵌在工具栏中的CToolBarCtrl对象创建时的扩展风格,该参数默认值为:TBSTYLE_FLAT。
dwStyle:与Create成员函数同名参数相同,用来指定工具栏的样式。
rcBorders:定义工具栏窗口边框的宽度。
nID:与Create成员函数同名参数相同,用来指定工具栏子窗口的ID。
第二种方法需要遵循以下几个步骤。
构造CToolBar对象。
调用Create或CreateEx函数创建Windows工具栏,并把它与已创建的CToolBar对象关联起来。
调用LoadBitmap函数加载包含工具栏按钮图像的位图。
我们先前在prop程序中看到的工具栏资源:IDR_MAINFRAME,在保存时是以一幅位图的形式保存的,该位图文件名称为Toolbar.bmp,位置是在当前工程所在目录下的res目录下。这幅位图上有许多小的图像,它们分别对应于工具栏上的各个按钮。
调用SetButtons函数设置按钮样式,并把工具栏上的一个按钮与位图中的一个图像相关联。
利用MFC创建工具栏的的过程如下。
在prop程序中,MFC AppWizard自动产生的与工具栏对象相关的代码存在于CMainFrame类的OnCreate函数中。在CMainFrame类的OnCreate函数中,首先调用CreateEx函数创建程序的工具栏对象,接着调用LoadToolBar函数加载工具栏资源:IDR_MAINFRAME。
接着,CMainFrame类的OnCreate函数调用工具栏对象的EnableDocking成员函数设置工具栏停靠的位置,工具栏停靠位置的取值如表5-7所示。

接下来,CMainFrame类的OnCreate函数又调用一个EnableDocking函数,先前第一次调用的EnableDocking函数是工具栏对象的成员函数,目的是让工具栏对象可以停靠,而这里调用的CFrameWnd对象的EnableDocking成员函数,目的是让主框架窗口可以被停靠,停靠位置是表5-7所列的前5种。
最后,CMainFrame类的OnCreate函数调用DockControlBor函数,让工具栏停靠在主窗口上。
要创建一个自定义的工具栏,其步骤如下。
下面,我们就按照上面所讲的第一种创建工具栏的方法,为prop程序创建一个自己的工具栏。
首先为prop程序插入一个新的工具栏资源。方法之一是选择VC++(www.cppentry.com)开发窗口上的“Insert¬”→“Resource…”菜单命令,在弹出的插入资源对话框中选择Toolbar资源类型,如图5-46所示。然后单击“New”按钮插入新的工具栏。
另一种插入新工具栏资源的方法是,在工程的ResourceView选项卡上,在ToolBar文件夹上单击鼠标右键,从弹出的快捷菜单中选择“Insert Toolbar”菜单命令,即可插入新的工具栏资源,如图5-48所示。


图5-48  利用Insert Toolbar快捷菜单插入新的工具栏资源

无论使用上述哪种方法,这时VC++(www.cppentry.com)都会在prop程序中插入一个名为IDR_TOOLBAR1的工具栏资源,并且该工具栏上只有一个空白的按钮。然后,我们就可以根据需要在按钮上绘制图形。本例在这个新工具栏上再添加两个按钮,并分别为这三个按钮绘制了图形:矩形、椭圆和圆形。结果如图5-49所示。


图5-49  新添加的工具栏资源

遵照上面所说的创建步骤,接下来就是要构造一个CToolbar对象,也就是为CMainFrame类添加一个CToolbar类型的成员变量,本例在该类的头文件中添加下面这条语句:
 
调用Create或CreateEx函数创建工具栏,并与CToolbar对象相关联。这可以在CMainFrame类的OnCreate函数中实现,在该函数中添加如下代码:
 
这段新添加的代码首先调用CToolbar的成员函数CreateEx创建工具栏,并与工具栏对象m_newToolBar相关联,这里将新工具栏的停靠位置设置为CBRS_RIGHT,然后调用LoadToolBar函数加载我们刚刚新建的工具栏资源(IDR_TOOLBAR1)。接着,调用工具栏对象的EnableDocking函数允许工具栏停靠于客户区的任意位置(CBRS_ALIGN_ANY)。因为在OnCreate函数的前面已经调用了框架类的EnableDocking函数,让主框架窗口可以被停靠,所以这里就不需要再调用这个函数了。最后调用框架类的DockControlBar函数,让这个新工具栏停靠在主框架窗口上。

【责任编辑:杨硕 TEL:(010)68476636-8001】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇第6章 使用对话框 下一篇5.4.2 工具栏类

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: