收藏 分享(赏)

MFC-资源.ppt

上传人:weiwoduzun 文档编号:5684130 上传时间:2019-03-12 格式:PPT 页数:32 大小:263.01KB
下载 相关 举报
MFC-资源.ppt_第1页
第1页 / 共32页
MFC-资源.ppt_第2页
第2页 / 共32页
MFC-资源.ppt_第3页
第3页 / 共32页
MFC-资源.ppt_第4页
第4页 / 共32页
MFC-资源.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

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营业执照举报