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

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5684130.html】到电脑端继续下载(重复下载不扣费)。

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MFC-资源.ppt)为本站会员(weiwoduzun)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

MFC-资源.ppt

1、第8章 资源,菜单 加速键 图标 光标 位图 字符串 对话框,8.1资源和资源文件,Windows编程中需要的一些特殊数据,对它们可以独立编译,动态加载(有些数据不是应用程序在任何时候都用得到,所以它们一般驻留在磁盘上,只有当应用程序需要时,才会载入内存)。如:光标,图标,字符串,菜单等都是资源。,资源头文件resource.h,资源描述文件 “工程名”.rc,程序员提供,资源头文件resource.h 每个资源都有自己的标识,该对应关系存贮在资源头文件中。 注意:为了增加可读型资源标识命名遵循一定的规则。P140查看例子工程中的资源头文件,资源描述文件 该文件描述了每种资源的属性,对于图标,

2、光标,位图等图形数据文件说明他们的名称和存储位置,而其文件保存在res文件夹下。 查看当前例子的资源描述文件。,资源头文件resource.h,资源描述文件 “工程名”.rc,资源文件:“工程名”.res,编译成,使用资源编辑器对资源进行可视化编辑,8.2菜单,菜单由以下组成部分: (1) 窗口主菜单条 (2) 下拉式菜单框 (3) 菜单项热键标识 (4) 菜单项加速键标识 (5) 菜单项分隔线,菜单的创建过程,1、设计菜单 演示 2、编辑菜单3、加载菜单资源,在菜单项名中加入符号“&”,以定义热键(英文),每个菜单项的标识必须唯一,标识值常在头文件中定义,菜单,弹出式菜单,菜单项,菜单产生两

3、种消息(1) WM_COMMAND点击菜单时发送,响应此消息可对菜单项命令进行处理。建立映射:宏ON_COMMAND(ID,fun)(2) UPDATE_COMMAND_UI菜单被显示前发送此消息,响应此消息可改变菜单项的显示状态。建立映射:宏ON_UPDATE_COMMAND_UP(ID,fun),将菜单命令映射到哪个类?,应该将菜单命令映射到哪个类中,需要由该命令的功能决定。如果一个命令同视图的显示有关,就应该将其映射到视图类;如果同文档的读写有关,就映射到文档类中;如果命令完成通用功能,一般映射到窗口框架类。 有时无法对功能进行准确分类,则可以将菜单命令映射到任意一个类,看看是否能够完成

4、指定的功能,修改菜单状态 处理UPDATE_COMMAND_UI消息时,在OnUpdateXX(CCmdUI* pCmdUI)函数中,使用以下函数修改菜单状态: (1) Enable() 改变菜单的可用状态 (2) SetCheck() 改变菜单的选择状态 (3) SetRadio() 改变菜单的选中标记 (4) SetText() 改变菜单的文本,在这个处理函数中你可以设置菜单的允许/禁止状态, 其显示字符串是什么,是否在前面打钩。 函数的参数为CCmdUI* pCmdUI, CCmdUI是MFC专门为更新命令提供的一个类, 上面的函数是该类的成员函数,例子:,IDR_MYMENU MENU

5、 PRELOAD DISCARDABLE BEGINPOPUP “文件(&F)“BEGINMENUITEM “新建(&N)tCtrl+N“, ID_FILE_NEWMENUITEM SEPARATORMENUITEM “退出(&X)“, ID_APP_EXITENDPOPUP “编辑(&E)“BEGINMENUITEM “剪切(&T)tCtrl+X“, ID_EDIT_CUTMENUITEM “复制(&C)tCtrl+C“, ID_EDIT_COPYMENUITEM “粘贴(&P)tCtrl+V“, ID_EDIT_PASTEENDPOPUP “帮助(&H)“BEGINMENUITEM “关于

6、 Test(&A).“, ID_APP_ABOUTEND END,2、编辑菜单 菜单在资源描述文件中的定义形式为:,菜单标识符,选 项 说 明 DISCARDABLE 当不再需要菜单时可丢弃 FIXED 将菜单保存在内存中的固定位置 LOADONCALL 需要时加载菜单 MOVEABLE 菜单在内存中可移动 PRELOAD 立即加载菜单,POPUP语句 MENUITEM语句,菜单关键字,POPUP语句定义弹出式菜单,其形式为: POPUP “菜单项名“ ,选项;,MENUITEM用于定义菜单项,其形式为: MENUITEM “菜单项名“ 菜单项标识(ID),选项,选 项 说 明 MENUBAR

7、BREAK 菜单项纵向分隔标志 CHECKED 显示选中标志 INACTIVE 禁止一个菜单项 GRAYED 禁止并变灰显示,消息的分类,标准消息除WM_COMMAND之外,所有以WM_开头的消息。从CWnd派生的类,都可以接收到这类消息。 命令消息来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的wParam参数识别。从CCmdTarget派生的类,都可以接收到这类消息。 通告消息由控件产生的消息,例如,按钮的单击,列表框的选择等均产生此类消息,为的是向其父窗口(通常是对话框)通知事件的发

8、生。这类消息也是以WM_COMMAND形式呈现。从CCmdTarget派生的类,都可以接收到这类消息。,CMenu类的成员函数较多,但建立弹出式菜单只需用到其中几个成员函数。LoadMenu函数 GetSubMenu函数 TrackPopupMenu函数,弹出式菜单,1.LoadMenu函数 功能:从应用程序的可执行文件中加载菜单资源 原型:BOOL LoadMenu(UINT nIDResource); 其中nIDResource是菜单资源的ID号。 2.GetSubMenu函数 功能:此函数用于得到子菜单的指针。 原型:CMenu* GetSubMenu(int nPos)const; n

9、Pos为层数,0为第一层子菜单以此类推。 由于我们需要的是“可弹出项”的第一层子菜单,因此用GetSubMenu(0)来得到第一层子菜单的类指针。,TrackPopupMenu函数 功能:在指定位置显示弹出菜单,并跟踪所选择的项 原型:BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect=NULL); 其中: nFlags为屏幕坐标属性和鼠标坐标属性 屏幕坐标属性: TPM_CENTERALIGN 横向将菜单以x居中 TPM_LEFTALIGN 横向将菜单以x左对齐 TPM_RIGHTALIGN 横向将菜单以

10、x右对齐 鼠标按键属性 TPM_LEFTBUTTON 连续按右键不会连续弹出菜单,鼠标右键不可用于选定菜单项 TPM_RIGHTBUTTON 连续按鼠标右键会连续弹出菜单,鼠标右键可用于选定菜单项 x,y均为设备坐标 pWnd 菜单所属窗口指针lpRect 菜单所占的区域。如果为NULL,当用户在菜单以外的区域按鼠标键时,菜单会消失,右键up时加载菜单,CMenu menu,*pSubMenu;/定义下面要用到的CMenu对象 menu.LoadMenu(IDR_MENU1);/装载自定义的弹出菜单 pSubMenu=menu.GetSubMenu(0);/获取第一个弹出菜单,所以第一个菜单必

11、须有子菜单 CPoint oPoint;/定义一个用于确定光标位置的位置 GetCursorPos( /在指定位置显示弹,当右击鼠标并释放后,WM_CONTEXTMENU消息将发给应用程序。因此,在程序中可通过为WM_CONTEXTMENU添加消息处理函数来实现弹出式菜单。 WM_CONTEXTMENU消息是在收到WM_ RBUTTONUP消息后,由Windows产生的。但如果在WM_RBUTTONUP的消息处理函数中没有调用基类的处理函数,那么应用程序将不会收到WM_CONTEXTMENU消息。,有关弹出式菜单的消息处理,添加WM_CONTEXTMENU响应,CMenu menu,*pSub

12、Menu;/定义下面要用到的CMenu对象 menu.LoadMenu(IDR_MENU1);/装载自定义的弹出菜单 pSubMenu=menu.GetSubMenu(0);/获取第一个弹出菜单,所以第一个菜单必须有子菜单 CPoint oPoint;/定义一个用于确定光标位置的位置 GetCursorPos( /在指定位置显示弹,加速键资源,加速键资源是常伴随菜单使用的一种资源 设计加速键 演示 编辑加速键 演示 菜单中标注加速键 演示,IDR_MYACC ACCELERATORS PRELOAD MOVEABLE PURE BEGIN“N“, ID_FILE_NEW, VIRTKEY,CO

13、NTROL“X“, ID_EDIT_CUT, VIRTKEY,CONTROL“C“, ID_EDIT_COPY, VIRTKEY,CONTROL“V“, ID_EDIT_PASTE, VIRTKEY,CONTROLVK_DELETE, ID_EDIT_CUT, VIRTKEY,SHIFTVK_INSERT, ID_EDIT_COPY, VIRTKEY,CONTROLVK_INSERT, ID_EDIT_PASTE, VIRTKEY,SHIFTVK_F6, ID_NEXT_PANE, VIRTKEY VK_F6, ID_PREV_PANE, VIRTKEY,SHIFT END,位图资源,添加位图

14、资源,位图资源编辑演示,1、创建位图 2、载入位图到位图对象 3、创建兼容DC 4、将位图选入DC 5、将兼容DC位图贴到当前DC 兼容DC又称为内存DC,它的特长是“模仿”其他的DC,但只能把画出来的图片放在内存中,通常用作“中介” 。,位图操作实例,图标资源的应用,图标是代表应用程序的特殊的最小位图。在图标上双击鼠标就可以执行该应用程序,图标资源可以由VC自带的图标资源编辑器来创建,图标资源的操作,图标资源的操作包括创建、定义和加载等过程 1图标资源的创建 用户可通过图形编辑器自定义图标形式,并保存在扩展名为.ico的文件中。 Windows系统也提供了标准图标。 标识 形状 IDI_AP

15、PLICATION 缺省图标 IDI_ASTERISK 信息图标 IDI_EXCLAMATION 惊叹号图标 IDI_HAND 停止图标 IDI_QUESTION 问号图标,2. 在资源文件中定义图标资源 若采用自定义图标,要在资源文件中定义该图标:图标名 ICON 图标文件名(.ico) 如: IDI_MYICON ICON DISCARDABLE “resTest.ico“ 3. 在应用程序中加载图标 调用函数LoadIcon进行图标资源的加载的,此过程经常是在定义窗口类时进行,其形式为: WNDCLASS wndclass; wndclass.hIcon = LoadIcon(hThis

16、Inst, lpszIconName); ,图标名,Icon Functions The following functions are used with icons. CopyIcon CreateIcon CreateIconFromResource CreateIconFromResourceEx CreateIconIndirect DestroyIcon DrawIcon DrawIconEx ExtractAssociatedIcon ExtractIcon ExtractIconEx GetIconInfo LookupIconIdFromDirectory LookupIco

17、nIdFromDirectoryEx Obsolete Functions LoadIcon,光标资源,光标资源的操作包括创建、定义和加载等过程 1光标资源的创建 用户可通过图形编辑器绘制自己的光标,并保存在扩展名为.cur的文件中。 Windows系统也提供了许多标准光标。,2. 在资源文件中定义光标资源 若采用自定义图标,要在资源文件中定义该光标: 如: IDI_MYCUR CURSOR DISCARDABLE “resTest.cur“ 3. 在应用程序中加载光标 调用函数LoadCursor进行光标资源的加载的,此过程经常是在定义窗口类时进行,其形式为: WNDCLASS wndcla

18、ss; wndclass.hIcon = LoadCursor(NULL, IDC_ARROW); ,4、Cursor Functions The following functions are used with cursors. ClipCursor CopyCursor CreateCursor DestroyCursor GetClipCursor GetCursor GetCursorPos LoadCursorFromFile SetCursor SetCursorPos SetSystemCursor ShowCursor Obsolete Functions LoadCurso

19、r,【例】在客户区不同区域显示自己绘制的2个不同光标和2 个系统预定义光标。,/Use the LoadCursor function in conjunction with the SetCursor function to set the wait cursor. SetCursor(LoadCursor(NULL, IDC_WAIT);,字符串表,创建字符串表 演示 装载字符串 int LoadString( HINSTANCE hInstance, / handle to module containing string resource UINT uID, / resource identifier LPTSTR lpBuffer, / pointer to buffer for resource int nBufferMax / size of buffer);,String Manipulation Functions LoadString lstrcat lstrcmp lstrcpy lstrlen wsprintf,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报