面向对象与可视化程序设计第15章工具条类及其应用_第1页
面向对象与可视化程序设计第15章工具条类及其应用_第2页
面向对象与可视化程序设计第15章工具条类及其应用_第3页
面向对象与可视化程序设计第15章工具条类及其应用_第4页
面向对象与可视化程序设计第15章工具条类及其应用_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023/4/101面向对象与可视化

程序设计

--VisualC++编程

主讲教师:

唐龙教授

(计算机科学与技术系)

黄维通博士

(计算机与信息管理中心)

清华大学

2001年2月2023/4/102第十五章

工具条类及其应用2023/4/103内容提要工具条类简介工具条类控件的应用2023/4/104§15.1.

工具条类简介

1.工具条工具条是图形化的菜单,可更快捷、更有效的命令输入方式。工具条作为程序的一个资源存放在资源脚本中,在程序运行时才调用。工具条的标识符在resource.h文件中定义,并与系统菜单、系统图标的ID相同,这样,可以使工具条资源建立后直接链接到主窗口。2023/4/1062.工具条资源模板工具条资源模板在工具条资源文件中定义工具条各个按钮和整个工具条的位图,其格式如下:IDTOOLBAR[工具条属性]像素宽,像素高BEGINBUTOONID1…...BUTOONIDnENDIDIDTOOLBAR[工具条属性]bmp文件名2023/4/1072.工具条资源模板(续)例如,在名为mytoolbar.rc工具条资源文件中定义的文件操作工具条资源模板如下:IDR_TOOLBARTOOLBARDISCARDABLE16,15BEGINBUTOONID_FILE_NEW //新建

BUTOONID_FILE_OPEN //打开

BUTOONID_FILE_SAVE_AS //另存

SEPERATOR //分隔块

BUTOONID_SHOW //显示ENDIDR_TOOLBARTOOLBARDISCARDABLE“res\toolbar.bmp”3.CToolBar类工具条类CToolBar由控制条类CControlBar派生的,而控制条类CControlBar由CWnd类直接派生的。CToolBar类有几个兄弟类,都是用来接收某些命令输入并向用户显示状态消息的类,包括:CStatusBar(状态条)COleResizeBar(OLE控制条)CDialogBar(对话条)在AfxWin.h中定义了CToolBar类。4.CToolBar类的方法CToolBar类的方法,包括:构造方法;工具条按钮操作方法;虚拟方法。2023/4/1010(1)Create()函数创建并初始化工具条对象BOOLCreate(CWnd*pParentWnd, //指向父窗口的指针

DWORDdwStyle=WS_CHILD|WS_VISIBLE|CBRS_TOP,//风格

UINTnID=AFX_IDW_TOOLBAR //工具条的ID号);例如:CToolBarm_ToolBar=newCToolBar();

m_ToolBar.Create(this,WS_VISIBLE|CBRS_TOP,0x9100);

风格为“初始可见”,且置于窗口“顶部”工具条窗口的ID号2023/4/1011(2)LoadToolBar()函数加载字符串形式定义的资源BOOLLoadToolBar(LPCTSTRlpszResourceName);加载整型形式定义的资源BOOLLoadToolBar(UINTnIDResource); (3)LoadBitmap()函数加载字符串形式定义的位图资源BOOLLoadToolBar(LPCTSTRlpszResourceName);加载整型形式定义的位图资源BOOLLoadToolBar(UINTnIDResource); 2023/4/1012(4)SetBarStyle()函数重设置工具条风格,例如m_wndToolBar.SetBarStyle(CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC);工具条窗口的风格WS_VISIBLE 使工具条窗口初始可见 CBRS_BOTTOM 初始时将工具条放到窗口底部 CBRS_FLYBY 鼠标光标在按钮上暂停时,显示命令描述CBRS_NOALIGN 防止控制条在其父窗口改变大小时被复位CBRS_TOOLTIPS 鼠标光标在按钮上暂停时,显示工具提示CBRS_TOP 初始时将工具条放在窗口底部 CBRS_SIZE_DYNAMIC工具条的大小可变光标在按钮上暂停时,显示工具提示光标在按钮上暂停时,显示命令描述工具条的大小可变2023/4/1013(5)工具条的移动缺省状况下,CToolBar工具条只能被应用程序所移动。用户移动工具条,需向工具条及框架窗口发送消息。这可通过调用如下函数实现:CToolBar::EnableDocking或CFrameWnd::EnableDocking。这二函数原型均为:voidEnableDocking(DWORDdwStyle);对于CFrameWnd不可用停靠风格2023/4/1014(6)工具条的显隐控制调用CWnd::GetStyle获取当时工具条状态,即:

DWORDGetStyle()const;若WS_VISIBLE风格的工具条不能用SetStyle()改变由于工具条是一个窗口,其显示或隐藏可通过其父类CWnd的成员函数ShowWindow()来实现。2023/4/1015§15.2.

工具条类的应用[例15-1]带工具条类的应用程序,其界面标题为MyToolBar,有四个下拉菜单和“文件”工具条。“文件”工具条有四个按钮“N”,“O”,“S”和“sh”。工具条“N”,“O”,“S”按钮与“文件(F)”下拉菜单中几项功能相同;工具条“sh”按钮与菜单“显示(S)”功能相同,显示一个“这是关于工具条的样例程序”信息窗口;工具条隐现由“查看”的下拉菜单中“工具条(T)”项控制。2023/4/1017带工具条类的应用程序MyToolBar的其界面2023/4/1018应用程序的可视化编程部分

为IDR_TOOLBAR设置属性

1.对话框中的工具条的设计

选Insert菜单中的Resource。这时,显示InsertResource窗口。选Toolbar项,单击New按钮。这样在资源文件MyToolbar.rc中增加了一项资源,即一个工具条。2023/4/10192.工具条按钮的编辑加入工具条按钮可以利用VC所提供的绘图工具,直接编缉自己的按钮。若已经存在的图标,作为下一个按钮,应先加入一个ICON资源,再经拷贝和粘贴,放到Toolbar上。删除工具条按钮删除按钮只要把该按钮拖出工具条以外。分隔工具条按钮用鼠标将要移动的按钮拖动到工具条上需要的位置。2023/4/1020按钮 ID Prompt N ID_FILE_NEW 建立新文档\n新建 O ID_FILE_OPEN 打开一个现有文档\n打开 S ID_FILE_SAVE_AS 以一个新文件名保存\n另存为 sh ID_SHOW 显示一个对话框\n显示3.菜单的编辑2023/4/1021应用程序的代码编程1.给菜单“显示(S)”选项编写代码(1)在菜单“显示”上单击右键,在弹出菜单中选ClassWizard命令。(2)在ObjectIDs列表框中选择ID_SHOW项。(3)在Messages列表框中选择COMMAND项是BN_CLICKED。(4)单击AddFuncttion按钮,接受弹出的窗口中函数名OnShow()。(5)这样在ClassWizard窗口的Memberfunctions列表框中增加了成员函数OnShow(),单击EditCode按钮。VisualC++显示源代码文件(.cpp),并将光标停在函数OnShow()处,等待用户定义函数的内容。(6)在函数OnShow()中输入以下代码:voidCMainFrame::OnShow(){AfxMessageBox(”这是关于工具条的样例程序”);//显示对话框}2023/4/10222添加工具条代码——有三个地方需要添加工具条代码(1)为类CMainFrame加入一个成员变量m_wndToolBar,有两种方法。用ClassWizard进行,在Workspace窗口的ClassView选项卡中,找到CmainFrame类的标识,点击鼠标的右键,选择AddMemberVariable…子菜单,在VariableType编辑框中填入CToolBar,在VariableName编辑框中填入m_wndToolBar,在Access中选择protected一项。在头文件MainFrm.h中直接添加所需的代码,如下这段代码为类CMainFrame加入一个受保护的成员变量m_wndToolBar:classCMainFrame:publicCFrameWnd{

protected: //controlbarembeddedmembersCToolBarm_wndToolBar;//加入成员变量m_wndToolBar

…}2023/4/1023(2)在MAINFRAME.CPP文件中加入代码,设置工具条的特性以实现使工具条可见的功能。在CMainFrame的OnCreate函数中加入以下代码//MainFrm.cpp:implementationoftheCMainFrameclassintCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){

…if(!m_wndToolBar.Create(this)|| //创建工具条

!m_wndToolBar.LoadToolBar(IDR_TOOLBAR))//引入IDR_TOOLBAR{ TRACE0("Failedtocreatetoolbar\n"); return-1;//若失败,则给出提示,并返回-1}

…}若现在运行程序,则可以看见工具条了。2023/4/1024(3)更改属性为了使工具条成为可“浮动”工具条,要考虑进行一些其它的编码。仍在MAINFRAME.CPP文件中,在CmainFrame的OnCreate函数中在刚才加入的代码后面加入以下代码//MainFrm.cpp:implementationoftheCMainFrameclassintCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){

…m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle()| CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC);//设定工具条的风格为:当鼠标光标在按钮上暂停时,显示工具提示和命令描述,并//设定工具条的大小是可变的。

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论