ImageVerifierCode 换一换
格式:PPT , 页数:51 ,大小:401KB ,
资源ID:13342242      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13342242.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(第5章菜单工具栏和状态栏.ppt)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第5章菜单工具栏和状态栏.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,5,章 菜单、工具栏、状态栏 中国铁道出版社,*,第,5,章 菜单、工具栏和状态栏,1,教学目标,了解菜单、工具栏和状态栏的概念及相关类的基本操作;,掌握,Windows,编程中资源的使用;,能够在单文档和对话框应用程序中编程实现常用的菜单、工具栏和状态栏。,2,5.1,菜单,菜单概述,用编辑器设计菜单,菜单类,CMenu,快捷菜单的设计与使用,示例,3,菜单,菜单是,Windows,中最常见的界面元素,是一系列命令的列表。,菜单分为两种:,下拉菜单,快捷菜单(上下文菜单),加速键是键盘上的一个键或几

2、个键的组合,它通常对应于某一条菜单命令或工具按钮命令,它为用户提供了一种快速执行菜单命令或其他某种功能的方法。,4,使用菜单编辑器,,可以增加或删除菜单和菜单项,,定义菜单标识符,ID,,,对菜单进行合理布局,,设置菜单的初始状态(正常、灰色、加标记等),设置菜单提示等,。,使用,AppWizard,创建基于,SDI,的应用程序框架时,会自动创建一个菜单资源:,IDR_MAINFRAME,使用,AppWizard,创建基于,MDI,的应用程序框架时,会自动创建两个菜单资源:,IDR_MAINFRAME,和,IDR_*TYPE,(,星号表示项目名,),在菜单编辑器中,可以对,AppWizard,

3、生成的菜单进行修改,也可以从空白菜单基础上创建需要的菜单,用编辑器设计菜单,5,创建下拉菜单的步骤:,创建菜单资源,打开菜单编辑器,编辑菜单:在菜单栏中双击空白方框,弹出,Menu Item Properties,对话框,设置菜单项属性。,为菜单资源选择一个类,(,视图类或对话框类,),建立菜单命令消息处理函数,WM_COMMAND:,选择菜单项或使用快捷键时将产生此消息,UPDATE_COMMAND_UI:,更新命令用户接口消息,当菜单在显示之前,会先通过此消息进行更新,从而得到更新后的菜单。,6,【,例,5.1】,单文档应用程序中菜单的创建和使用,在单文档应用程序的默认菜单资源中添加一个“

4、绘图”菜单,通过“绘图”菜单命令在窗口中绘制出不同的椭圆和矩形,程序的运行效果如图,所示。,7,步骤:,1,、创建一个基于,SDI,的应用程序,项目名为,:EX5_1,2,、,在项目工作区的,Resource View,中,双击菜单资源,IDR_MAINFRAME,,,打开菜单资源编辑器。,3,、在,帮助,菜单前插入一个新菜单,绘图,(&D),,,并为其添加相应的菜单项,如图所示,Alt+D,激活该菜单,8,菜单属性设置,Caption ID,提示,(Prompt),椭圆,Pop-up,矩形,Pop-up,清除,(&C)ID_DRAW_CLEAR,清除窗口中的图形,100*100 ID_DRA

5、W_ELLIPSE1,绘制一个外接矩形为,100*,100,的椭圆,100*200 ID_DRAW_ELLIPSE2,绘制一个外接矩形为,100*200,的椭圆,100*100 ID_DRAW_RECT1,绘制一个,100*,100,的矩形,100*200 ID_DRAW_RECT2,绘制一个,100*200,的矩形,9,4,、为菜单资源选择一个类,CEX5_1View,5,、使用,MFC,ClassWizard,,,为视图类,CEX5_1View,添加菜单消息处理函数,.,Object Ids,消息 消息处理函数,ID_DRAW_CLEAR COMMAND,OnDrawClear,(),ID

6、DRAW_ELLIPSE1 COMMAND OnDrawEllipse1(),ID_DRAW_ELLIPSE2 COMMAND OnDrawEllipse2(),ID_DRAW_RECT1 COMMAND OnDrawRect1(),ID_DRAW_RECT2 COMMAND OnDrawRect2(),10,6,、为消息处理函数添加代码,绘制一个外接矩形为,100*,100,的椭圆,void CEX5_1View:OnDrawEllipse1(),/TODO:Add your command handler code here,CDC*,pDC,=,GetDC,();/,获取窗口设备环境,

7、CRect,r,rect,;/,定义矩形类对象,GetClientRect(&r,);/,获取客户区窗口坐标范围,rect.bottom=r.bottom/2+50;/,设置,rect,的范围,rect.top=r.bottom/2-50;,rect.right=r.right/2+50;,rect.left=r.right/2-50;,pDC,-,Ellipse(rect,);,/,在,rect,指定的范围内画椭圆,r.bottom,50,50,11,绘制一个,100*,100,的矩形,void CEX5_1View:OnDrawRect1(),/TODO:Add your command

8、handler code here,CDC*,pDC,=,GetDC,();/,获取窗口设备,CRect,r,rect,;/,定义矩形类对象,GetClientRect(&r,);/,获取客户区窗口坐标范围,rect.bottom=r.bottom/2+50;/,设置,rect,的范围,rect.top=r.bottom/2-50;,rect.right=r.right/2+50;,rect.left=r.right/2-50;,pDC,-,Rectangle(rect,);,/,在,rect,指定的范围内画矩形,12,清除菜单项的消息处理函数:,void CEX5_1View:OnDrawC

9、lear(),/TODO:Add your command handler code here,Invalidate();,/,刷新窗口,该,函数用来使当前视图失效,强制程序重新执行,OnDraw,(),函数以刷新窗口,13,使用键盘快捷键,打开项目工作区窗口中的,Accelerator,的资源项,双击,IDR_MAINFRAME,,出现如图,5.8,的加速键资源列表,建立新的加速键,双击加速键列表的最下端的空行,弹出如图,5.9,所示的“,Accel,Properities,”,对话框,其中可设置的属性见表,5-4,。,选择添加的“椭圆,100*,100,”,菜单项的,ID,号,ID_DRA

10、W_ELLIPSE1,,选择“,Ctrl”,输入键值“,E”,。,加速键也称为键盘快捷键,是一个按键或几个按键的组合,用于激活特定的命令。加速键也是一种资源,它的显示、编辑过程和菜单相似。,为一个菜单项定义快捷键的步骤如下:,14,技术要点:,CRect,类:是,MFC,封装矩形区域操作的一个专用类,其结构与,Windows,中的,RECT,结构类似。,类型,RECT,的定义:,typedef,struct,_RECT,LONG left;,LONG top;,LONG right;,LONG bottom;,RECT;,成员函数(略),右下角坐标,左上角坐标,15,绘制椭圆函数:,CDC,类

11、的成员函数,BOOL Ellipse(,int,x1,int,y1,int,x2,int,y2);,BOOL Ellipse(LPCRECT,lpRect,);,绘制矩形函数:,CDC,类的成员函数,BOOL,Rectangle(int,x1,int,y1,int,x2,int,y2);,BOOL Rectangle(LPCRECT,lpRect,);,参数:,x1,,,y1,:,表示矩形左上角的坐标,x2,,,y2,:,表示矩形右下角的坐标,,lpRect,:,是一个,RECT,结构或,CRect,类对象,16,5.1.3,CMenu,类,如果想在程序中使用上下文菜单,或者在程序运行中对菜单

12、项进行动态修改,就必须使用,MFC,的菜单类,CMenu,使用,CMenu,类可以完成大量复杂的菜单操作:创建、追踪、更新、销毁菜单,17,表,5-5,CMenu,的成员,方法,说明,Attach(),把一个标准的,Windows,菜单句柄附加到,CMenu,对象上,CreateMenu,(),创建一个空菜单并把它附加到,CMenu,对象上,CreatePopupMenu,(),创建一个弹出式菜单并把它附加到,CMenu,对象上,DeleteTempMap,(),删除由,FromHandle,(),构造函数创建的任何临时,CMenu,对象,DestroyMenu,(),去掉附加到,CMenu,

13、对象上的菜单并释放该菜单占有的任何内存,Deatch,(),从,CMenu,对象上拆开,Windows,菜单句柄并返回该句柄,FromHandle,(),当给定,Windows,菜单句柄时,返回,CMenu,对象指针,GetSafeHmenu,(),返回由,CMenu,对象封装的菜单句柄成员,(,m_hMenu,),LoadMenu,(),从可执行文件装入菜单资源并把它附到,Cmenu,对象上,LoadMenuIndirect,(),从内存中的菜单模板中装入菜单并把它附到,CMenu,对象上,CMenu,类,成员函数,m_hMenu,:,指定附加给,CMenu,类,对象的窗口菜单的句柄,函数原

14、型在系统目录的,AFXWIN.H,文件中,18,菜单操作方法中只有两个方法用来处理菜单的顶层操作,DeleteMenu,(),TrackPopupMenu,(),删除某个特定的菜单项,(,包括附属的级连菜单项,),在一个,POINT,结构所指定的位置显示一个快捷菜单,菜单项操作函数,方法,说明,AppendMenu,(),把一个新项加到给定的菜单的末端,CheckMenuItem,(),在弹出式菜单中,把一个校验标记放到一个菜单项,或从一个菜单项中取消一个校验标记,CheckMenuRadioItem,(),在此组中,把一个单选按钮放到菜单项旁边或从全部,其它菜单项里取消一个已存在的单选按钮,

15、EnableMenuItem,(),去掉,(,添加,),一个菜单项,GetMenuContextHelpId,(),检索与菜单结合的帮助上下文,ID,GetMenuItemCount,(),在弹出式或顶层菜单中获得项数,GetMenuItemID,(),获取指定位置的菜单项的标识,GetMenuState,(),获得指定菜单项的状态或弹出式菜单中的菜单项数,GetMenuString,(),获得指定菜单项的标签,GetSubMenu,(),获得指向弹出式菜单的指针,InsertMenu,(),在指定位置插入新的菜单项,把其它项向下移,ModifyMenu,(),在指定位置改变已存在的菜单项,R

16、emoveMenu,(),从指定菜单删除与弹出式菜单结合的菜单项,SetMenuContextHelpID,(),设置与菜单有关的帮助上下文,ID,SetMenuItemBitmaps,(),与菜单项有关的指定校验标记位图,19,5.1.4,上下文菜单,创建一个具体的上下文菜单,通常有两种方法,:,先创建一个菜单资源,再在程序中将编辑好的资源加载进来,利用,CMenu,类的强大功能,在程序中动态地创建上下文菜单,20,示例 为实例,5-1,添加上下文菜单,21,示例 为实例,5-1,添加上下文菜单,打开项目,EX5_1,为应用程序添加一个新菜单,在项目工作区的,Resource View,中,

17、在,Menu,上右击鼠标,从弹出菜单中选择,Insert Menu,命令添加一个新菜单,设置标识,ID,为,IDR_CONTEXTMENU,在菜单资源编辑器中制作上下文菜单,使用与绘图菜单相同的,ID,标识,以便调用相同的消息处理函数,22,为视图类添加成员变量和消息处理函数,Object Ids,消息 消息处理函数,ID_DRAW_CLEAR COMMAND,OnDrawClear,(),ID_DRAW_ELLIPSE1 COMMAND OnDrawEllipse1(),ID_DRAW_ELLIPSE2 COMMAND OnDrawEllipse2(),ID_DRAW_RECT1 COMMA

18、ND OnDrawRect1(),ID_DRAW_RECT2 COMMAND OnDrawRect2(),CEX7_1View,WM_RBUTTONDOWN,OnRButtonDown,CEX7_1View,WM_CONTEXMENU,OnContextMenu,(),变量 类型 说明,m_bFlag,bool,标记是否使用了上下文菜单,m_ConPoint,CPoint,记录鼠标右击时相对于窗口的位置,为菜单资源连接一个类,C,5_1,然后为视图类添加成员变量,同“绘图”菜单,23,当用户在视图中右击鼠标时,系统将产生两条消息,:,WM_RBUTTONDOWN,WM_CONTEXMENU(,

19、上下文菜单消息,):,对此消息进行处理而得到上下文菜单,afx_msg,void,OnContextMenu(CWnd,*,pWnd,CPoint,point);,afx_msg,void,OnRButtonDown(UINT,nFlags,CPoint,point);,右键,单击窗口的句柄,右键单击鼠标时的位置,相对于屏幕左上角的位置,右键单击鼠标时的位置,相对于当前窗口左上角的位置,24,添加程序代码,在视图类构造函数中对成员变量设置初始值,CEX7_1View:CEX5_1View(),/TODO:add construction code here,m_bFlag,=false;,/,

20、上下文菜单未在使用中,由于主菜单命令和上下文菜单命令具有相同的,ID,标识,所以成员变量,m_bFlag,来,标识当前命令是来自主菜单还是上下文菜单。,m_bFlag,=true,;,表示使用上下文菜单,m_bFlag,=false;,表示未使用上下文菜单,25,鼠标右键按下消息:,void CEX5_1View:OnRButtonDown(UINT,nFlags,CPoint,point),/TODO:Add your message handler code here and/or call default,m_ConPoint,=point;,/,获取鼠标单击时相对于窗口位置的坐标,CV

21、iew:OnRButtonDown(nFlags,point);,26,绘制,100*,100,的内接椭圆:,void CEX5_1View:OnDrawEllipse1(),/TODO:Add your command handler code here,CDC*,pDC,=,GetDC,();/,获取窗口设备,CRect,r,rect,;/,定义矩形类对象,if(,m_bFlag,),rect.bottom=,m_ConPoint,.y+50;/,设置,rect,的范围,rect.top=m_ConPoint.y-50;,rect.right=m_ConPoint.x+50;,rect.l

22、eft=m_ConPoint.x-50;,m_bFlag,=false;,else,GetClientRect(&r,);/,获取客户区窗口坐标范围,rect.bottom=r.bottom/2+50;/,设置,rect,的范围,rect.top=r.bottom/2-50;,rect.right=r.right/2+50;,rect.left=r.right/2-50;,pDC,-,Ellipse(rect,);/,在,rect,指定的范围内画椭圆,27,WM_CONTEXTMENU,消息处理函数,void CEX5_1View:OnContextMenu(CWnd*,pWnd,CPoint

23、point),/TODO:Add your message handler code here,CMenu,Drawmenu,;/,创建菜单实例,Drawmenu.,LoadMenu,(IDR_CONTEXTMENU,);,/,加载菜单资源,m_bFlag,=true;,/,设置标记,使用上下文菜单,/,将,Drawmenu,菜单对象中的第一个子菜单载入为弹出菜单,CMenu,*,pContextmenu,=Drawmenu.,GetSubMenu,(0);,/,显示上下文菜单,pContextmenu,-,TrackPopupMenu,(,TPM_LEFTALIGN|TPM_RIGHTBU

24、TTON,point.x,point.y,this);,Drawmenu.DestroyMenu,();,/,销毁菜单,成员函数参考教材,不再赘述,.,28,在,程序中动态创建上下文菜单,void CEX5_1View:OnContextMenu(CWnd*,pWnd,CPoint,point),/TODO:Add your message handler code here,CMenu,Drawmenu,;/,创建菜单实例,m_bFlag,=true;/,设置标记,使用上下文菜单,Drawmenu.CreatePopupMenu,();/,创建空弹出菜单,/,添加菜单项,Drawmenu.A

25、ppendMenu(MF_ENABLED,ID_DRAW_ELLIPSE1,椭圆,100*,100,);,Drawmenu.AppendMenu(MF_ENABLED,ID_DRAW_ELLIPSE2,椭圆,100*200);,Drawmenu.AppendMenu(MF_SEPARATOR,);,Drawmenu.AppendMenu(MF_ENABLED,ID_DRAW_RECT1,矩形,100*,100,);,Drawmenu.AppendMenu(MF_ENABLED,ID_DRAW_RECT2,矩形,100*200);,Drawmenu.AppendMenu(MF_SEPARATOR

26、);,Drawmenu.AppendMenu(MF_ENABLED,ID_DRAW_CLEAR,清 除,);,/,显示弹出菜单,Drawmenu.TrackPopupMenu,(,TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);,Drawmenu.DestroyMenu,();/,销毁菜单,29,运行效果图,:,30,示例 用菜单命令调用模式对话框,创建一个带有“计算”菜单的单文档应用程序,EX5-2,。“计算”菜单中包含“平均成绩”菜单项。当单击该菜单项时,会弹出一个模式对话框,用于计算平均成绩。运行结果如图,5.11,。,31,【,

27、例,5.3】,为对话框添加菜单,(,1,)添加并定制菜单资源,(,2,)菜单与对话框关联:在对话框属性页的,Menu,下拉列表框中选择菜单,ID,(,3,)为菜单选择对话框类,之后消息映射,编写消息处理函数代码。,32,5.2,工具栏,CToolBar,5.2.1,CToolBar,类,5.2.2,工具栏编辑器,5.2.3,工具栏与菜单结合,33,5.2,工具栏,CToolBar,Visual C+,创建工具栏的一般步骤如下:,创建一个工具栏资源;,构造,CToolBar,对象;,调用,Create()(,或,CreateEx,(),函数创建,Windows,工具栏并将它与该,CToolBar

28、对象连接;,调用,LoadToolBar,(),函数装入工具栏资源。,工具栏可以看作是图形化的菜单,是一种更快捷、更有效、更直观的命令输入方式。,当创建,SDI/MDI,应用程序时,,AppWizard,不仅创建了缺省菜单,并且创建了缺省的工具栏,IDR_MAINFRAME,其相应的位图,Toolbar.bmp,。,用户可以为缺省工具栏中添加一些按钮,也可以设计和使用自己的工具栏。,34,CToolBar,类有几个兄弟类,CStatusBar,(,状态条),COleResizeBar,(,OLE,控制条),CDialogBar,(,对话条),都是用来接收某些,命令输入并向用户,显示状态消息的

29、类,7.2.1,CToolBar,类,35,工具条函数简介,(,1,),Create(),函数,BOOL Create(,CWnd,*,pParentWnd,/,pParentWnd,为指向工具条所在父窗口的指针,DWORD,dwStyle,=WS_CHILD|WS_VISIBLE|CBRS_TOP,/,dwStyle,为工具条的风格,(,见下页,),UINT,nID,=AFX_IDW_TOOLBAR,/,nID,表示工具条子窗口的,ID,号,),;,下述代码生成一工具条,工具条风格为“,初始可见,”,且放置在窗口“,顶部,”,工具条窗口的,ID,号的,16,进制值为,9100,:,CTool

30、Bar,m_ToolBar,=new,CToolBar,();,m_ToolBar.Create(this,WS_VISIBLE,|,CBRS_TOP,0 x9100,);,36,(,2,),LoadToolBar,(),函数,BOOL,LoadToolBar(LPCTSTR,lpszResourceName,);/,字符串形式定义的资源,BOOL,LoadToolBar(UINT,nIDResource,);/,整型形式定义的资源,(,3,),SetBarStyle,(),函数,m_wndToolBar.SetBarStyle(,CBRS_TOOLTIPS,|,CBRS_FLYBY,|,CB

31、RS_SIZE_DYNAMIC,);,WS_VISIBLE,使工具条窗口初始可见,CBRS_BOTTOM,初始时将工具条放到窗口底部,CBRS_FLYBY,在状态栏显示命令描述,CBRS_NOALIGN,防止控制条在其父窗口改变大小时被复位,CBRS_TOOLTIPS,鼠标光标在按钮上暂停时,显示工具提示,CBRS_TOP,初始时将工具条放在窗口顶部,CBRS_SIZE_DYNAMIC,工具条的尺寸是可变的,37,(,4,)工具条的移动,默认状况下,,CToolBar,工具条只能被应用程序所移动,为使用户能够移动工具条,为此,需向工具条及框架窗口发送消息。这可通过调用,CToolBar:Ena

32、bleDocking,和,CFrame:EnableDocking,实现。,二函数原型均如下:,void,EnableDocking,(DWORD,dwStyle,);,对于,CFrame,不可用,实现工具条移动的常用代码,:,m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY,);,EnableDocking(CBRS_ALIGN_ANY,);,用户也可以对工具条进行移动或定位。或者在程序控制下,通过调用,CFrameWnd:DockControlBar,来移动,以及调用,CFrameWnd:FloatControlBar,来定位,一工具条。,停靠,风格,38

33、5,)工具条的显隐控制,由于工具条是一个窗口,它的显示或隐藏可以通过其父类,CWnd,的成员函数来实现,显示或隐藏一个工具条,void,CWnd,:,ShowControlBar,(,CControlBar,*,pBar,,,BOOL,bShow,,,BOOL,bDelay,);,在改变工具条状态前要通过函数,CWnd:GetStyle,获取当时工具条的状态,DWORD,GetStyle,()const;,为,TRUE,,,显示;为,FALSE,,,隐藏,为,TRUE,,,延迟显示工具条;为,FALSE,,,立即显示,39,5.2.2,工具栏编辑器,(1),加入工具条按钮,可以利用,VC

34、所提供的绘图工具,直接进行按钮的编缉,这主要用来编缉自己的按钮,对于已经存在的图标,如果要把它作为下一个按钮,可以先加入一个,ICON,资源,再通过拷贝和粘贴来放到,Toolbar,上。,(2),删除工具条按钮,删除按钮要把该按钮拖出工具条以外。,(4),插入空格,前插空格,/,后插空格,/,删除空格,(3),移动工具条按钮,是用鼠标将要移动的按钮拖动到工具条上需要的位置。,(5),工具栏按纽属性设置,40,5.2.3,工具栏与菜单结合,使它们结合的方法是在工具栏按钮的属性对话框中将按钮的,ID,号设置为相关联的菜单项,ID,。,41,5.3,状态栏,5.3.1,CStatusBar,类,5

35、3.2,CStatusBar,类的使用方法,5.3.3,状态栏的常用操作,5.3.4,示例,42,5.3,状态栏,CStatusBar,P222,状态栏可以随时为用户提供当前程序的状态信息,它即不接受输入也不产生命令消息。,状态栏结构:,提示信息窗格,指示器信息窗格,应用程序框架自动生成标准状态栏,状态栏的格式由,MainFrm.cpp,文件中的静态数组,indicators,所定义,,CStatusBar,类成员函数,SetIndicators,将调用该数组生成状态栏。,static UINT indicators=,ID_SEPARATOR,/,信息窗格,ID_INDICATOR_CAP

36、S,/Caps Lock,指示器,ID_INDICATOR_NUM,/Num Lock,指示器,ID_INDICATOR_SCRL,/,Scoll,Lock,指示器,;,43,状态栏的常用操作,增加或减少窗格,如果,要对状态栏进行改变,可以对此数组元素进行修改、增加或删除。,在状态栏上显示信息,(,1,),CStatusBar,类,SetPaneText,(,nIndex,lpszNewText,),(,2,),CWnd:SetWindowText,()设置第,1,个窗格的文本,(3),手动添加状态栏窗格的,ON_UPDATE_COMMAND_UI,事件的消息映射,添加,afx_msg,voi

37、d,类型的带参消息处理函数,OnUpdate,*,(,CCmdUI,*,pCmdUI,),改变状态栏的风格,SetPaneStyle(int,nIndex,UINT,nStyle,);,SetPaneInfo(int,nIndex,UINT,Id,UINT,nStyle,int,cxWidth,);,P224,表,7-11,风格类型,示例一,P224-225,使用,SetPaneText,()函数,示例二 使用,ON_UPDATE_COMMAND_UI,事件的消息,44,实例:为实例,5_1,添加状态栏信息,程序运行中会在状态栏显示系统时间,Insert,键是否被按下等状态,效果如下,:,45

38、步骤:,1,、打开,EX5_1,项目,2,、在资源编辑器的串表中添加以下字符串资源,ID Value Caption,ID_INDICATOR_X X,坐标值,ID_INDICATOR_Y Y,坐标值,ID_INDICATOR_TIME 00:00:00,3,、,打开,MainFrm.cpp,文件,修改数组,indicators,如下:,static UINT indicators=,ID_SEPARATOR,/status line indicator,ID_INDICATOR_X,ID_INDICATOR_Y,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_I

39、NDICATOR_SCRL,ID_INDICATOR_TIME,,,;,46,4.,在,CEx5_1View,类中加入,WM_MOUSEMOVE,消息处理函数,并添加代码。,void C Ex5_1View:OnMouseMove(UINT,nFlags,CPoint,point),/TODO:Add your message handler code here and/or call default,CMainFrame,*,pFrame,=(,CMainFrame,*),AfxGetApp,()-,m_pMainWnd,;,CStatusBar,*,pStatus,=&,pFrame,-,

40、m_wndStatusBar,;,CString,str,;,if (,pStatus,),str.Format(X,=%,d,point.x,);,pStatus,-SetPaneText(1,str);,str.Format(Y,=%,d,point.y,);,pStatus,-SetPaneText(2,str);,CView:OnMouseMove(nFlags,point);,47,5.,将类,CMainFrame,中的保护型状态栏对象,m_wndStatusBar,修改为公共变量。,6.,在,Ex_SDIMenuView.cpp,文件的开始处增加下列语句:,#include “,M

41、ainFrm.h,”,7,在,CMainFrame,类的,OnCreate,函数中,设置定时器,代码如下,:,int,CMainFrame:OnCreate(LPCREATESTRUCT,lpCreateStruct,),SetTimer(1,1000,NULL);/,设置定时器,return 0;,48,8.,为,CMainFrame,类映射,WM_TIMER,消息的处理函数,并添加代码如下:,void,CMainFrame:OnTimer(UINT,nIDEvent,),/TODO:Add your message handler code here and/or call default

42、CTime,tmCurr,;,CString,strTime,;,tmCurr,=,CTime:GetCurrentTime,();/,获取系统当前时间,strTime,=,tmCurr.Format(%H:%M:%S,);,/,设置状态栏,ID_INDICATOR_TIME,窗格文本内容,m_wndStatusBar.SetPaneText,(,m_wndStatusBar.CommandToIndex(ID_INDICATOR_TIME,),strTime,);,CFrameWnd:OnTimer(nIDEvent,);,9.,编译并运行。,49,习题五,1.,填空题,2.,选择题,3.,简答题,4.,操作题,50,实验指导五,基本实验,拓展与提高,51,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服