MFC-Windows应用程序设计-第8章-资源

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MFCWindows应用程序设计第八章资源资源和资源文件8.1菜单8.2第8章资源快捷键表8.3图标8.4位图8.58.1资源和资源文件8.1资源和资源文件资源:就是一种可供Windows应用程序利用,可单独编辑,并可动态加载的数据。资源头文件:Resource.h资源描述文件:.rc8.1资源和资源文件8.1资源和资源文件资源标识:为了对不同的资源加以区别,所有的资源必须得有一个标识,这些标识其实就是用一些符号来表示的编码,它们定义在Resource.h。标志符前缀说明标志符前缀说明IDD_对话框IDR_主菜单、工具栏、加速键表和应用程序图标IDC_控件和光标IDP_消息框提示字符串IDS_字符串ID_菜单命令在常见的菜单系统中,最上面的一层水平排列的菜单称为顶层菜单,每一个顶层菜单项可以是一个简单的菜单命令,也可以是下拉(Popup)菜单,在下拉菜单中的每一个菜单项也可是菜单命令或下拉菜单,这样一级一级下去可以构造出复杂的菜单系统。8.2菜单为了使应用程序更容易操作,对于菜单系统的设计还遵循下列一些规则:●若单击某菜单项后,将弹出一个对话框,那么在该菜单项文本后有“…”。●若某项菜单有子菜单,那么在该菜单项文本后有“”。●若菜单项需要助记符,则用括号将带下划线的字母括起来。助记符与Alt构成一个组合键,当按住“Alt”键不放,再敲击该字母时,对应的菜单项就会被选中。●若某项菜单需要快捷键的支持,则一般将其列在相应菜单项文本之后。所谓“快捷键”是一个组合键,如Ctrl+C,使用时是先按下“Ctrl”健不放,然后再按“C”键。任何时候按下快捷键,相应的菜单命令都会被执行。8.2菜单8.2菜单8.1.1用编辑器设计菜单1、编辑菜单2、菜单命令的消息映射8.2菜单8.2.1用编辑器设计菜单在项目工作区窗口中选择“ResourceView”页面,展开节点,双击资源“Menu”项中的IDR_MAINFRAME,则出现菜单编辑器窗口。1、编辑菜单在菜单空位上双击鼠标左键,出现菜单项的属性对话框。8.2菜单菜单项属性对话框的参数说明:ID:菜单的资源ID标识符。标题:用来标识菜单项显示文本。助记符字母前面须有一个&符号,这个字母与Alt键构成组合键。分隔符:选中时,菜单项时一个分隔符或是一条水平线。选中的:选中时,菜单项文本前面显示一个选中标记。弹出:选中时,菜单项含有一个弹出式子菜单。变灰:选中时,菜单项显示灰色,用户不能选用。非活动:选中时,菜单项没有被激活,用户不能选用。帮助:选中时,菜单项在程序运行时被放在顶层菜单的最右端。暂停:为列(Column)时对于顶层菜单上的菜单项来说,放置在另外一行上,而对于弹出式菜单的菜单项来说,则被放置在另外一列上;当为条(Bar)时,与Column相同,只不过对于弹出式子菜单来说,它还在新列于原来列之间增加一条竖直线。提示:用来说明光标移至该菜单项时在状态栏上显示的提示信息。2.菜单命令的消息映射WM_COMMAND菜单项、工具栏的按钮以及快捷键等用户交互对象都能产生WM_COMMAND命令消息。命令消息能够被文档类、应用类、窗口类以及视图类等多种对象接收、处理,且用户可以用ClassWizard对命令消息进行映射。8.2菜单8.2菜单练习:在如图所示的位置添加绘图菜单、矩形菜单、圆菜单,程序运行时选择矩形菜单在窗口用户区域里出现矩形,选中圆菜单出现圆形。8.2.2更改应用程序菜单1、设置和获取应用程序窗口菜单:BOOLCWnd::SetMenu(CMenu*pMenu);CMenu*CWnd::GetMenu()const;2、装入和分离菜单CMenuBOOLCMenu::LoadMenu(UINTnIDResource);HMENUCMenu::Detach();nIDResource为菜单资源ID标识符。8.2菜单练习:更改应用程序菜单8.2菜单8.2.3菜单的编程控制CMenu1.装入和分离菜单将菜单从资源装入应用程序中,需调用CMenu成员函数LoadMenu,使菜单对象和菜单句柄分离需调用CMenu成员函数Detach。BOOLLoadMenu(UINTnIDResource);HMENUDetach();nIDResource为菜单资源ID标识符。8.2菜单8.2.3菜单的编程控制2.创建菜单CMenu类的CreateMenu和CreatePopupMenu分别用来创建一个菜单或子菜单框架,它们的原型如下:BOOLCreateMenu();//产生一个空菜单BOOLCreatePopupMenu();//产生一个空的弹出式子菜单8.2菜单8.2菜单8.2.3菜单的编程控制3、添加菜单项BOOLAppendMenu(UINTnFlags,UINTnIDNewItem=0,LPCTSTRlpszNewItem=NULL);BOOLInsertMenu(UINTnPosition,UINTnFlags,UINTnIDNewItem=0,LPCTSTRlpszNewItem=NULL);nIdNewItem:表示新菜单项的资源ID标识符。lpszNewItem:表示新菜单项的内容。nPosition:表示新菜单项要出入的菜单位置,从序号0开始。nFlags的值MF_BYCOMMAND菜单项以ID标识符来标识MF_BYPOSITION菜单项以位置来标识MF_POPUP菜单项有弹出式子菜单MF_SEPARATOR分隔线MF_OWNERDRAW自画菜单项MF_STRING字符串标志MF_CHECKED设置菜单项的选中标记MF_UNCHECKED取消菜单项的选中标记MF_DISABLED禁用菜单项MF_ENABLED允许使用菜单项MF_GRAYED菜单项灰显8.2菜单8.2.3菜单的编程控制需要注意的是:●当nFlags为MF_BYPOSITION时,nPosition表示新菜单项要插入的具体位置,为0时表示第一个菜单项,为-1时,将菜单项添加菜单的末尾处。●nFlags的标志中,可以用“|”(按位或)来组合,例如MF_CHECKED|MF_STRING等。但有些组合是不允许的,例如MF_DISABLED、MF_ENABLED和MF_GRAYED,MF_STRING、MF_OWNERDRAW、MF_SEPARATOR和位图,MF_CHECKED和MF_UNCHECKED都不能组合在一起。8.2菜单8.2.3菜单的编程控制4.删除菜单项BOOLDeleteMenu(UINTnPosition,UINTnFlags);nPosition表示要删除的菜单项位置,它由nFlags进行说明。若当nFlags为MF_BYCOMMAND时,nPosition表示菜单项的ID标识符,而当nFlags为MF_BYPOSITION时,nPosition表示菜单项的位置(第一个菜单项位置为0)。8.2菜单8.2.2菜单的编程控制8.2菜单8.2.2菜单的编程控制5、获取菜单项UINTGetMenuItemCount()const;该函数用来获得菜单的菜单项数,调用失败后返回-1。UINTGetMenuItemID(intnPos)const;该函数用来获得由nPos指定菜单项位置(以0为基数)的菜单项的标识号,若nPos是SEPARATOR(分隔符),则返回-1。CMenu*GetSubMenu(intnPos)const;该函数用来获得指定菜单的弹出式菜单的菜单句柄。该弹出式菜单位置由参数nPos指定,开始的位置为0。若菜单不存在,则创建一个临时的菜单指针。8.2.4使用快捷菜单快捷菜单是一种浮动的弹出式菜单。当用户按下鼠标右键时,就会相应地弹出一个浮动菜单,提供了几个与当前选择内容相关的菜单选项。WM_RBUTTONDOWNBOOLCMenu::TrackPopupMenu(UINTnFlags,intx,inty,CWnd*pWnd,LPCRECTlpRect=NULL);8.2菜单8.2.4使用快捷菜单BOOLCMenu::TrackPopupMenu(UINTnFlags,intx,inty,CWnd*pWnd,LPCRECTlpRect=NULL);nFlags:表示菜单在屏幕显示的位置以及鼠标按钮标志,x和y:表示菜单的水平坐标和菜单的顶端的垂直坐标。pWnd:表示弹出菜单的窗口,此窗口将收到菜单全部的WM_COMMAND消息。lpRect:是一个RECT结构或CRect类指针,它表示一个矩形区域,用户单击这个区域时,弹出菜单不消失。而当lpRect为NULL时,若用户击在菜单外面,菜单立刻消失。8.2菜单表nFlags的值及其对其他参数的影响nFlags值含义TPM_CENTERALIGN屏幕位置标志,表示菜单的水平中心位置由x坐标确定TPM_LEFTALIGN屏幕位置标志,表示菜单的左边位置由x坐标确定TPM_RIGHTALIGN屏幕位置标志,表示菜单的右边位置由x坐标确定TPM_LEFTBUTTON鼠标按钮标志,表示当用户单击鼠标左键时弹出菜单TPM_RIGHTBUTTON鼠标按钮标志,表示用户单击鼠标右键时弹出菜单8.2菜单例使用快捷菜单8.2菜单8.3快捷键表加速键也往往被称为键盘快捷键,一个加速键就是一个按键或几个按键的组合,它用于激活特定的命令。加速键也是一种资源,它的显示、编辑过程和菜单相似。在项目工作区窗口的ResourceView(资源视图)页面中,展开中Accelerator(加速键)的资源项,双击IDR_MAINFRAME,在右侧窗口中出现的加速键资源列表。建立一个新的加速键时,只要双击加速键列表的最下端的空行,弹出“Accel属性”(AccelProperties)对话框,其中可设置的属性如表所示。表加速键常规(General)属性的各项含义项目含义ID指定资源ID号的列表项,为了能和菜单联用,通常选择某菜单项的ID号Modifiers用来确定Ctrl、Alt、Shift是否是构成加速键的组成部分类型(Type)用来确定该加速键的值是虚拟键(VirKey)还是ASCII字符键键(Key)是指启动加速键的键盘按键下一键(NextKeyTyped)单击此按钮后,用户操作的任何按键将成为此加速键的键值8.3快捷键8.3快捷键练习:为菜单矩形和铅笔线添加快捷键。矩形菜单的快捷键为Ctrl+Shift+R,铅笔线的快捷键为Ctrl+Shift+I。8.4.1制作图标1.创建一个新的图标或光标在VisualC++6.0中,创建一个应用程序后,当按快捷键Ctrl+R就可打开“插入资源”对话框,从中选择Cursor(光标)或Icon(图标)资源类型,单击[新建]按钮后,系统为程序添加一个新的图标或光标资源,同时在开发环境右侧出现图像编辑器2.选用和定制显示设备在图像编辑器工作窗口的控制条上,有一个“新设备图像”(NewDeviceImage)按钮,单击此按钮后,系统弹出相应的新设备列表,可以从中选取需要的显示设备。8.4图标8.4.2图标的调入、清除1.图标的调入在MFC中,当在应用程序中添加一个图标资源后,就可以使用CWinApp::LoadIcon函数可将其调入并返回一个图标句柄。函数原型如下:HICONLoadIcon(UINTnIDResource)const;nIDResource:表示图标资源的字符串名和标识。函数返回的是一个图标句柄。AfxGetApp()8.4图标8.4.2图标的调入、清除1.图标的调入如果不想使用新的图标资源,也可使用系统中预定义好的标准图标,这时需调用CWinApp::LoadStandardIcon函数。HICONLoadStandardIcon(LPCTSTRlpszIconName)const;lpszIconName预存图标可取如下值:IDI_APPLICATION默认的应用程序图标IDI_HAND手形图标(用于严重警告)IDI_QUESTION问号图标(用于提示消息)IDI_EXCLAMATION警告消息图标(惊叹号)IDI_AST

1 / 48
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功