第四章 Windows资源

上传人:laiq****ong 文档编号:108062724 上传时间:2022-06-15 格式:DOC 页数:16 大小:710.50KB
收藏 版权申诉 举报 下载
第四章 Windows资源_第1页
第1页 / 共16页
第四章 Windows资源_第2页
第2页 / 共16页
第四章 Windows资源_第3页
第3页 / 共16页
资源描述:

《第四章 Windows资源》由会员分享,可在线阅读,更多相关《第四章 Windows资源(16页珍藏版)》请在装配图网上搜索。

1、第四章 Windows资源资源是Windows应用程序图形用户界面(GUI)的重要组成部分,包括光标、位图、图标、加速键,菜单和对话框等。41 光标,位图和图标资源611 光标应用程序操作光标资源的步骤如下:1 选择或创建光标形式可以使用Windows系统提供的光标,也可以通过图形编辑自定义光标形式,将其存放在扩展名称为.cur文件中。Windows系统光标标识与形状 标识 形状IDC_ARROW 箭头(缺省)IDC_CROSS 十字线IDC_IBEAM I型线IDC_WAIT 沙漏2在资源文件中定义光标资源 采用自定义光标时,需要在资源文件中定义该光标资源,其形式如下: 光标名 CURSOR

2、 光标文件名(.cur)3加载光标资源 应用程序通过调用函数LoadCursor加载光标资源,其形式如下: LoadCursor(hThisInst,lpszCursorname) 其中: hThisInst:应用程序当前句柄。 LpszCursorname:光标名称 应用程序加载光标资源常在定义窗口类时进行,例如:下面的语句为窗口类wndclass加载“沙漏”光标。 WNDCLASS wndclass; wndclass.hCursor=LoadCursor(hThisInst,IDC_WAIT) 此外还可在应用程序中调用LoadCursor函数改变光标形式。412 图标 图标是一个小的图形

3、图象,在Windows图形用户界中,图标往往代表最小化的窗口对象,如应用程序、目录等等。Windows应用程序中操作图标资源的应用方法如下:1选择或创建图标形式 可以使用Windows系统提供的图标,也可以通过图形编辑自定义图标形式,将其存放在扩展名称为.ico文件中。Windows系统图标标识与形状 标识 形状IDI_APLICATION 缺省图标IDI_ASTERISK 信息图标IDI_EXCLAMATION 惊叹号图标IDI_HAND 停止图标IDI_QUESTION 问号图标2在资源文件中定义图标资源 采用自定义图标时,需要在资源文件中定义该图标资源,其形式如下: 图标名 ICON 图

4、标文件名(.ico)3在应用程序中加载图标资源 应用程序通过调用函数LoadIcon加载图标资源,其形式如下: LoadIcon(hThisInst,lpszIconname) 其中: hThisInst:应用程序当前句柄。 LpszIconname:图标名称。 应用程序加载图标资源常在定义窗口类时进行,例如:下面的语句为窗口类wndclass加载“问号”图标。 WNDCLASS wndclass; wndclass.hIcon=LoadIcon(hThisInst,IDI_QUESTION) 此外还可在应用程序中调用LoadIcon函数动态地加载图标资源。413 位图Windows应用程序中

5、操作位图资源的过程如下:1绘制位图 绘制位图一般使用位图编辑器,生成扩展名为.bmp的文件。2定义位图 与光标和图标类似,位图资源必须在资源描述文件中定义,其形式如下: 位图名 BITMAP 位图文件名(.bmp)3在应用程序中加载位图资源 42 菜单与加速键资源421 菜单外观及组成1 窗口主菜单条。2 下拉式菜单框。3 选项热键标识。4 选项加速键标识。5 选项分隔线。422 创建菜单的过程创建菜单过程分为定义和加载两个步骤:1定义菜单菜单在资源描述文件中的定义形式为:菜单名MENU 选项 选项列表菜单的定义格式由四部分组成。(1) 菜单名菜单名标识特定的菜单,应用程序通过菜单名加载指定的

6、菜单。(2) MENU关键字(3) 载入特性选项选项用以标识所具有的载入特性。常用的选项及说明如下: 选项 说明DISCARDABLE当不再需要菜单时可丢弃(缺省)FIXED将菜单保存在内存中的固定位置LOADONCALL需要时加载菜单MOVEABLE菜单在内存中可移动PRELOAD立即加载菜单(4) 选项选项是菜单的组成部分。应用程序在资源描述文件中使用关键字POPUP和MENUITEM定义选项。2POPUP语句POPUP语句定义弹出式菜单,其形式为:POPUP “选项名” ,选项可在选项名中加入符号&,以定义该选项的热键。例如:POPUP “文件(&F)”该选项使用Alt-F键作为热键。选

7、项的常用选项及其说明如下: 选项 说明MENUBARBREAK选项纵向分隔标志CHECKED显示选中标志INACTIVE禁止一个选项GRAYED禁止一个选项并使其暗淡显示POPUP定义的弹出式选项还可包含子菜单。3MENUITEM语句MENUITEM语句用于定义选项,其形式为:MENUITEM “选项名” 选项标识(ID) ,选项其中:选项标识(ID):在WM_COMMAND消息中系统发送给应用程序的菜单标识值。WM_COMMAND消息中字参数wpara中包含选项标识,其值为0到65535之间的任意一个整数,但必须唯一。应用程序常在头文件中定义标识值。菜单在资源描述文件.rc中的定义如下:#i

8、nclude #include “Menu.h”/菜单定义Menu MENU MOVEABLE /“Menu“为窗口菜单的名称 POPUP “文件(&F)” /定义“文件”弹出式菜单 MENUITEM “新建(&N)”,IDM_NEW MENUITEM “打开(&O)”,IDM_OPEN MENUITEM “关闭(&C)”,IDM_CLOSEMENUITEM “保存(&S)”,IDM_SAVEMENUITEM “另存为(&A)”,IDM_SAVE ASMENUITEM SEPARATOR /分隔线MENUITEM “退出(&X)”,IDM_EXIT Menu.h文件中定义了选项标识所对应的数值

9、:#define IDM_NEW 10 #define IDM_OPEN 11#define IDM_CLOSE 12#define IDM_SAVE 13#define IDM_SAVE AS 14#define IDM_EXIT 154加载菜单资源(1) 在窗口类中加载WNDCLASS wndclasswndclass.lpszMenuName=lpszMenuName; (2)在创建窗口时加载应用程序出可在调用函数CreateWindows创建窗口时加载窗口菜单。加载方法:HMENU LoadMenu(hInstance,lpszMenuName);其中:hInstance:当前程序的实

10、例句柄。LpszMenuName:窗口菜单名。例如:应用程序在创建窗口中加载名称为“Menu”的窗口菜单。HWND hwnd;HMENU hMenu;hmenu=LoadMenu(hInstance,”Menu”);hwnd=CreateWindow(, , hmenu,); (3)动态加载 通过调用函数SetMenu动态地加载菜单,以提高应用程序的灵活性。 SetMenu(hwnd,hMenu); 动态加载菜单可在同一个应用程序中实现多种不同的功能界面的操作。 例如:定义了两种菜单Menu1和Menu2,及相应的两套选项的功能实现。通过调用函数SetMenu函数在两个菜单之间切换。该应用程序

11、可实现两种界面的操作及相应的选项功能。HMENU hmenu1;HMENU hmenu2;/应用程序定义窗口时使用Menu1为窗口初始菜单hmenu1=LoadMenu(hInstance,”Menu1”); hwnd=CreateWindow(, , hmenu1,);/应用程序将窗口菜单切换为Menu2hmenu2=LoadMenu(hInstance,”Menu2”);SetMenu(hwnd,hMenu2);423 操作选项1禁止或激活选项 在资源描述文件中可以设定选项的初始状态为禁止或激活,也可调用函数EnableMenuItem改变其初始状态。 DWORD EnableMenuIt

12、em(HMENU hmenu,UINT wIDEnableItem,UINT dwEnable)其中: hmenu:菜单句柄。 WIDEnableItem:禁止或激活的选项标识,根据dwEnable的取值,可能为该选项的ID值,也可能为该选项在菜单中的位置。dwEnable:选项操作标识。选项的常用选项及其说明如下: 选项 说明 MF_BYCOMMAND表明以ID值标识选项 MF_BYPOSITION表明以位置标识选项 MF_DISABLED禁止选项 MF_ENABLED激活选项 MF_GRAYED禁止选项并使其暗淡显示例如:禁止弹出式菜单“文件”中的“打开”项的形式如下:EnableMenu

13、Item( hmenu,IDM_OPEN,MF_BYCOMMAND| MF_DIABLED);2. 设置或取消选中标志在资源描述文件中设置选项为CHECKED外,还可通过调用函数CheckMenuItem设置或取消选中标志。DWORD CheckMenuItem(HMENU hmenu,UINT wIDCheckItem,UINT dwCheck)dwCheck选项的常用选项及其说明如下: 选项 说明 MF_BYCOMMAND表明以ID值标识选项 MF_BYPOSITION表明以位置标识选项 MF_CHECKED添加选中标志 MF_UNCHECKED删除选中标志3增加选项(1) 在尾部增加应用

14、程序可调用函数AppendMenu在菜单尾部增加选项。 BOOL AppendMenu(HMENU hmenu,UINT dwFlag,UINT dwIDNewItem, LPCTSTR lpNEWItem);例如:在弹出式菜单“文件”的末尾增加一项“关于”的形式如下: AppendMenu(hmenu,MF_ENABLED,IDM_ABOUT,“关于(&A)” );(2) 插入 应用程序可调用函数InsertMenu在菜单中插入新的选项。BOOL InsertMenu(HMENU hmenu,UINT wPosition,UINT dwFlag, UINT dwIDNewItem, LPCT

15、STR lpNEWItem);例如:在弹出式菜单“文件”的“退出”项之前加入新的选项“打印”的形式如下:InsertMenu(hmenu,IDM_EXIT,MF_BYCOMMAND|MF_ENABLED,IDM_PRINT,“打印(&P)”);4. 删除选项应用程序可调用DeleteMenu函数删除菜单中的选项。BOOL DeleteMenu(HMENU hmenu,UINT wPosition,Uint dwFlag);例如:删除弹出式菜单“文件”菜单中的“另存为”选项的形式如下: DeleteMenu(hmenu,IDM_SAVEAS,MF_BYCOMMAND);5.修改选项应用程序可调用

16、ModifyMenu函数修改菜单中的选项。BOOL ModifyMenu(HMENU hmenu,UINT wPosition,UINT dwFlag, UINT dwIDNewItem,LPCTSTR lpNewItem)例如:修改弹出式菜单“文件”菜单中的“打印”项为“加载”项的形式如下:ModifyMenu(hmenu,IDM_OPEN,MF_BYCOMMAND,IDM_LOAD,“加载(&F)”);4.2.4 创建菜单及加速资源在资源编辑器中创建一个菜单资源的步骤如下:1 单击“ 插入”下拉菜单中的“资源”选项。2 双击“Menu”选项。3 双击菜单项虚框。4 在“菜单项属性”对话框中

17、输入该项的标题,若该项为弹出式菜单,则选择Popup复选框。5 在对话框中输入选项的标识(ID)、标题及相应的菜单属性。 在资源编辑器中创建选项加速器资源的步骤如下:1 单击“ 插入”下拉菜单中的“资源”选项。2 双击“accelerator”选项。3 双击出现的新加速键资源。4 在“加速键属性”对话框中将该加速键的标识更改为相应菜单的标识。5 在加速键编辑界面中添加相应项的加速键。43 对话框资源431 功能1发送消息 当应用程序向用户发送消息时常使用对话框资源,常用的有警告消息框、提示消息框等。下图为Windows系统常用的警告形式。2接收消息当应用程序希望得到用户输入时常使用对话框资源。

18、3提供信息等当应用程序向用户提供信息时也常使用对话框。432 特点对话框与一般的应用程序的子窗口相比较具有以下特点:1创建形式不同在资源描述文件定义对话框模板完成创建操作。2独立的消息处理函数 在独立的对话框函数中进行。应用程序在消息循环中判断消息队列中的消息,如果该消息为对话框消息,则将该消息发往对话框处理函数分别处理。 3包含多种控件 对话框中根据需要可包含各种各样形状和功能的控件,控件是对话框的主要组成部分,应用程序通过控件完成与用户之间的对话框交互。433 分类1. 模态对话框 要求用户必须结束该对话框之后才可以切换到其它窗口。即该对话框与同一应用程序中的其它窗口互锁。2. 非模态对话

19、框允许在结束该对话框之前切换到其它窗口操作。434 模态对话框编程方法1定义对话框资源在应用程序的资源描述文件中定义对话框,一般形式为:对话框名 DIALOG 载入特性选项 X,Y,WIDTH,HEIGTH 设置选项对话框的控件定义 常用的设置选项有: CAPTION、FONT、STYLE、LANGUAGE等。 下面的语句说明该对话框为弹出式对话框,并含有标题栏: STYLE DS_MODALFRAME|WS_POPUP|WS_CAPTION控件定义:常用控件及其说明: 控件 说明 CHECKBOX 复选框 COMBOBOX 组合框 CTEXT 文本居中的静态控件 DEFPUSHBUTTON

20、缺省按钮 EDITTEXT 文本框 ICON 图标 LISTBOX 列表框 LTEXT 文本左对齐的静态控件 PUSHBUTTON 按钮 RADIOBUTTON 圆按钮 RTEXT 文本右对齐的静态控件 SCROLLBAR 滚动条例如应用程序需使用一个名为“About”对话框,该对话框含有一条静态文本和一个按钮控件。在资源描述文件中的定义如下:About DIALOG 50,50,100,100CAPTION “关于”STYLE DS_MODALFRAME|DS_3DLOOK|WS_POPUP|WS_CAPTION CTEXT “Windows对话框示例”,-1,13,10,80,10 /静态

21、文本控件 DEFPUSHBUTTON “确定”,IDOK,35,30,30,12/按钮控件2调用DialogBox显示对话框定义资源后可通过调用DialogBox函数显示对话框。Int DialogBox(HINSTANCE hInstance,LPCTSTR lpszDiaologName, HWND hwnd,WNDPROC lpDialogFunc);3.构造对话框消息处理函数对话框消息处理函数的一般形式:BOOL CALLBACK DlgProc(HWND hDlg,UINT message, WPARAM wParam,LPARAM lParam); switch(message)

22、case WM_INITDIALOG: return 1; case WM_COMMAND switch(LOWORD(wParam) case break; case break; break; return 0;在对话框消息处理函数中主要处理以下两类消息:(1) WM_INTIDIALOG消息。(2) WM_COMMAND消息。4关闭对话框在对话框函数中调用EndDialog关闭对话框,其一般形式:EndDialog(hdlg,nResult);4.3.5 模态对话框示例 消息框是模态对话框的一种特殊形式,应用程序可以通过调用函数MessageBox快捷地生成一些简单但常用的Windows

23、消息框,该函数的原型为: int MessageBox(HWND hwnd,LPCTSTR lpszText,LPCTSTR lpszCaption, DWORD dwType);hwnd:拥有该消息的窗口。lpszText:消息框中显示的字符串。lpszCaption:作为标题的字符串。ldwType:指定消息框的内容。常用的标识及说明如下: 标识 说明MB_ABORTRETRYIGNORE含有Abort、Retry和Ignore按钮的消息框MB_ICONEXCLAMATION含有惊叹号图标的消息框MB_ICONQUESTION含有问号图标的消息框MB_ICONSTOP含有停止图标的消息框M

24、B_OK含有一个OK按钮的消息框MB_OKCANCEL含有OK和CANCEL按钮的消息框MB_RETRYCANCEL含有RETRY和CANCEL按钮的消息框MB_YESNO含有YES和NO按钮的消息框MB_YESNOCANCEL含有YES、NO和CANCEL按钮的消息框 应用程序常使用上述标识的组合。例如:MB_ICONEXCLAMATION|MB_YESNOCANCEL 用户操作与MessageBox返回值之间的对应关系 返回值 用户操作IDABORT按下“Abort”按钮IDCANCEL按下“Cancel”按钮IDIGNORE按下“Ignore”按钮IDNO按下“No”按钮IDOK按下“O

25、K”按钮IDRETRY按下“Retry”按钮IDYES按下“Yes”按钮4.3.6 非模态对话框编程方法 1定义对话框风格 STYLE WS_POPUP|WS_CAPTION|WS_VISIBLE 非模态对话框允许用户与其它窗口切换,因此其标题一般不可省略,且风格中应包含WS_VISIBLE,否则将无法显示。 2创建对话框非模态对话框的创建由函数CreateDialog完成。HWND CreateDialog(HINSTANCE hInstance,LPCTSTR lpszDialogName, HWND hwndParent,WNDPROC lpDialogFunc);3. 消息盾环部分的处

26、理由于非模态对话框并不禁止应用程序向其它窗口发送消息,因此在WinMain函数的消息循环中必须包含截获发往非模态对话框的消息,并将其发往相应的对话框处理函数处理。其消息盾环过程的一般形式为:while(GetMessage(&Msg,NULL,0,0) if (!IsDialogMessage(hdlg,&Msg) TranslateMessage(&Msg); DispatchMessage(&Msg); 4. 关闭对话框函数调用函数DestroyWindows关闭对话框。BOOL DestroyWindows(HWND hwnd);/EndDialog(hdlg,nResult);437

27、非模态对话框示例438 通用对话框 1类型下面列出了Windows系统提供的对话框模板类型及说明。 类型 说明 COLOR “颜色”对话框 FONT “字体”对话框 OPEN “打开”对话框 SAVE AS “另存为”对话框 PRINT “打印”对话框 PAGE SETUP “页面设置”对话框 PRINT SETUP “打印机设置”对话框 FIND “查找”对话框 REPLACE “替换”对话框这些对话框模板在系统提供的COMMANDLG.h和COLOR.h等文件中定义。2创建过程应用程序在使用对话框以前,应先填充其数据结构。系统提供以下通用对话的数据结构:l OPENFILENAMEl CH

28、OOSECOLORl CHOOSEFONTl PRINTDLGl PAGESETUPDLGl FINDREPLACE其中最常用的是OPENFILENAME结构,“打开”和“另存为”对话框都使用如下数据结构完成定义:typedef struct tagOPENFILENAME DWORD iStructSize; HWND hwndOwner; HANDLE hInstance; LPCSTR lpstrFilter; LPSTR lpstrCustomFilter; DWORD nMaxCustomFilter; DWORD nFilterTitle; LPSTR lpstrFileTitle

29、; DWORD nMaxFileTitle; LPCSTR lpstrInitialDir; LPCSTR lpstrTitle; DWORD Flags; UINT nFileOffset; UINT nFileExtension; LPCSTR lpstrdelExt; LPARAM lCustdata; UINT (CALLBACK * lpfnHook) (HWND,UINT,WPARAM,LPARAM) LPCSTR lpTemplateName;OPENFILENAME;Windows系统提供了一系列API函数用以显示通用对话框, 通用对话框函数及其功能 函数名 说明 Choose

30、Color 显示“颜色”对话框 ChooseFont 显示“字体”对话框 FindText 显示“查找”对话框 GetOpenFileName 显示“文件”对话框 GetSaveFileName 显示“保存”对话框 PageSetupDlg 显示“页面设置”对话框 PrintDlg 显示“打印”对话框 ReplaceText 显示“替换”对话框例如调用GetOpenFileName显示“文件”对话框的形式如下: GetOpenFileName(&ofn);在VC集成开发环境中,通用对话框被封装为MFC类库成员提供给程序使用。采用AppWizard生成应用程序框架时,集成开发环境自动在标准菜单中

31、添加通用对话框功能。在应用程序的消息映射中,其形式如下:BEGIN_MESSAGE_MAP(Csample1App,CwinApp) ON_COMMAND(ID_FILE_NEW,CwinApp:OnFileNew)ON_COMMAND(ID_FILE_OPEN,CwinApp:OnFileOpen)END_MESSAGE_MAP()CwinApp的成员函数OnFileNew和OnFileOpen直按显示相应的对话框并实现相应的功能。MFC类库中的CfileDialog类是通用对话框的实体,该类内嵌OPENFILENAME数据结构,调用其成员函数即可完成对通用对话框的初始化工作。439 通用对话框实例

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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