mfc第六章菜单06修改版.ppt

上传人:s****8 文档编号:69169769 上传时间:2022-12-31 格式:PPT 页数:25 大小:164.50KB
返回 下载 相关 举报
mfc第六章菜单06修改版.ppt_第1页
第1页 / 共25页
mfc第六章菜单06修改版.ppt_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《mfc第六章菜单06修改版.ppt》由会员分享,可在线阅读,更多相关《mfc第六章菜单06修改版.ppt(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Visual C+for Windows ProgrammingGuo yan-fang第五章第五章菜单,工具栏和状态栏菜单,工具栏和状态栏菜单在程序中的位置:菜单菜单的作用:菜单是一个Windows程序中的命令的集合,程序功能的体现.菜单项可以发布命令消息。菜单术语:l 菜单l 主菜单l 子菜单l 菜单项l 分隔条l 浮动菜单l 菜单项的ID号与菜单项相关的命令消息:1.更新命令消息:UPDATE_COMMAND_UI 2.命令消息:COMMAND菜单项的命令消息的执行顺序:执行每个菜单项命令会依次触发下两种消息:1.先引发菜单项的更新命令消息:UPDATE_COMMAND_UI 2.在引发

2、菜单项的命令消息:COMMAND 所以菜单的初始化内容常放在更新命令消息的消息处理函数中,菜单的命令功能放在命令消息的消息处理函数中.菜单项的命令消息的处理顺序是:因为SDI结构项目中的四个类都是CCmdTarget的子类,所以他们都能接收命令消息,因此对于命令消息WM_COMMAND的处理顺序是:(1)视窗类;(2)文档类;(3)窗口类;(4)应用类.菜单项的种类及其它:有主,子菜单左边带v的菜单-带检查标志的菜单右边带的菜单-有对话框的菜单右边带的菜单-有子菜单的菜单字母带下划线的菜单(F)-该菜单的快捷键带功能键的菜单(如:Ctrl+M)-该菜单的加速键分隔线灰化的菜单浮动式的菜单子菜单

3、可有功能提示(在状态条中)快捷键的生成方法:在菜单编辑器中,打开菜单属性表,在Caption内,找到你欲定义为快捷键的字母,在此字母前加上字符“&”,此快捷键即生成.使用快捷键的方法:先亮出的菜单,然后按“Alt+快捷键”.加速键的生成方法:在菜单编辑器中,打开菜单属性表,在Caption内的名串後,加上字符串“tCtrl+字母”,然后修改加速表资源Accelerator,设置加速键,此时加速键即生成.使用加速键的方法:加速键与快捷键不同,不必亮开菜单,在任何时候都可使用加速键.菜单项灰化的方法:在更新命令消息的消息处理函数中:void C类名:OnUpdate函数名(CCmdUI*pCmdU

4、I)/TODO:Add your command update UI handler code here pCmdUI-Enable(TRUE);/不灰化 pCmdUI-Enable(FALSE);/灰化菜单项设置的方法:在更新命令消息的消息处理函数中:void C类名:OnUpdate函数名(CCmdUI*pCmdUI)/TODO:Add your command update UI handler code here pCmdUI-SetCheck(1);/设置 pCmdUI-SetCheck(0);/不设置浮动菜单的实现方法:1.生成一新菜单IDR_MENU1;2.通过ClassWiza

5、rd建立消息WM_CONTEXTMENU的映射3.为WM_CONTEXTMENU消息的消息处理函数编程:void CEx7View:OnContextMenu(CWnd*pWnd,CPoint point)/TODO:Add your message handler code here/弹出IDR_MENU1菜单的第一个主菜单项的子菜单帘CMenu m;m.LoadMenu(IDR_MENU1);CMenu*p=m.GetSubMenu(0);p-TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);介绍Track

6、PopupMenuTrackPopupMenu函数:CMenu:TrackPopupMenu BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd*pWnd,LPCRECT lpRect=NULL);其中:nFlags :TPM_CENTERALIGN:2 (相对于X坐标而言)TPM_LEFTALIGN :1 (相对于X坐标而言)TPM_RIGHTALIGN :3 (相对于X坐标而言)TPM_LEFTBUTTON:浮动菜单在x,y点的左边弹出;TPM_RIGHTBUTTON:浮动菜单在点x,y的右边弹出.x,y:鼠标的坐标;pWnd:当前窗口;lpR

7、ect:NULL.menuItem1menuItem2menuItem3123总结关于菜单我们学习了:1.菜单项的种类2.与菜单相关的命令消息 COMMAND UPDATE_COMMAND_UI 3.普通菜单的建立和使用 4.浮动菜单的生成和使用 工具栏l工具栏、状态栏、对话框栏都属于控制栏。它们都是从CControlBar派生出来的。工具栏 l工具栏是CToolBar类的一个对象,状态栏是CStatusBar类的一个对象。它们都是从CControlBar类派生出来的。l在典型的SDI应用程序中,CToolBar对象占用CMainFrame客户区的顶部,CStatusBar对象占用CMainF

8、rame客户区的底部,视图占用框架的其余部分(CMainFrame客户区的中间部分)。l多数情况下,工具栏按钮对应于一个菜单项,所以工具栏按钮会产生与菜单一样的命令消息。工具栏的实现:l创建自己的工具栏创建新的工具栏资源(将在OnCreate()中使用)在主框架窗口类中增加CToolBar成员变量。在OnCreate()中增加创建工具栏的相应代码,包括实现Docking(停靠)或Floating(浮动)技术。m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIP

9、S|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)|!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)lDocking工具栏的三个必须步骤:使框架窗口支持使框架窗口支持Docking操作操作lCFrameWnd:EnableDocking()使工具栏支持使工具栏支持Docking操作操作lCControlBar:EnableDocking()将工具栏将工具栏Docking到框架窗口的指定边框上到框架窗口的指定边框上。lCFrameWnd:DockControlBar()l使工具栏永久浮动(Floating)的两个步骤:在CControlBar:Enab

10、leDocking中使用参数0相对应CFrameWnd:DockControlBar使用CFrameWnd:FloatControlBar 状态栏状态栏k工具栏、状态栏、对话框栏都属于控制栏。它们都是从CControlBar派生出来的。1.状态栏的状态栏的pane:2.状态栏数组状态栏数组:(在在MaimFrm.cpp中定义中定义)static UINT indicators=ID_SEPARATOR,/status line indicatorID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;pane与数组元素一一对应与数组元素一一对

11、应.与状态栏相关的名词与概念:pane0pane1pane2pane3创建状态栏的三部曲:1.设定CStatusBar对象:CStatusBar sb;2.调用Create()函数 或 CreateEx()函数;3.调用SetIndicators()函数使数组元素和 pane对应起来.函数CWnd:SetWindowText()可修 改pane0;函数CStatusBar:SetPaneText()可修 改任何pane;函数CCmdUI:SetText可修改pane;修改状态栏的pane的方法:函数CStatusBar:SetPaneInfo()可修 改任何pane宽度等信息;函数CStatusBar:SetPaneStyle()可修 改任何pane的风格;状态栏的 其他函数:

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com