版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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-
7、F键作为热键。选项的常用选项及其说明如下: 选项 说明MENUBARBREAK选项纵向分隔标志CHECKED显示选中标志INACTIVE禁止一个选项GRAYED禁止一个选项并使其暗淡显示POPUP定义的弹出式选项还可包含子菜单。3MENUITEM语句MENUITEM语句用于定义选项,其形式为:MENUITEM “选项名” 选项标识(ID) ,选项其中:选项标识(ID):在WM_COMMAND消息中系统发送给应用程序的菜单标识值。WM_COMMAND消息中字参数wpara中包含选项标识,其值为0到65535之间的任意一个整数,但必须唯一。应用程序常在头文件中定义标识值。菜单在资源描述文件.rc中
8、的定义如下:#include <windows.h>#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 /分隔线
9、MENUITEM “退出(&X)”,IDM_EXIT Menu.h文件中定义了选项标识所对应的数值:#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
10、 LoadMenu(hInstance,lpszMenuName);其中:hInstance:当前程序的实例句柄。LpszMenuName:窗口菜单名。例如:应用程序在创建窗口中加载名称为“Menu”的窗口菜单。HWND hwnd;HMENU hMenu;hmenu=LoadMenu(hInstance,”Menu”);hwnd=CreateWindow(, , hmenu,); (3)动态加载 通过调用函数SetMenu动态地加载菜单,以提高应用程序的灵活性。 SetMenu(hwnd,hMenu); 动态加载菜单可在同一个应用程序中实现多种不同的功能界面的操作。 例如:定义了两种菜单Men
11、u1和Menu2,及相应的两套选项的功能实现。通过调用函数SetMenu函数在两个菜单之间切换。该应用程序可实现两种界面的操作及相应的选项功能。HMENU hmenu1;HMENU hmenu2;/应用程序定义窗口时使用Menu1为窗口初始菜单hmenu1=LoadMenu(hInstance,”Menu1”); hwnd=CreateWindow(, , hmenu1,);/应用程序将窗口菜单切换为Menu2hmenu2=LoadMenu(hInstance,”Menu2”);SetMenu(hwnd,hMenu2);423 操作选项1禁止或激活选项 在资源描述文件中可以设定选项的初始状态为
12、禁止或激活,也可调用函数EnableMenuItem改变其初始状态。 DWORD EnableMenuItem(HMENU hmenu,UINT wIDEnableItem,UINT dwEnable)其中: hmenu:菜单句柄。 WIDEnableItem:禁止或激活的选项标识,根据dwEnable的取值,可能为该选项的ID值,也可能为该选项在菜单中的位置。dwEnable:选项操作标识。选项的常用选项及其说明如下: 选项 说明 MF_BYCOMMAND表明以ID值标识选项 MF_BYPOSITION表明以位置标识选项 MF_DISABLED禁止选项 MF_ENABLED激活选项 MF_G
13、RAYED禁止选项并使其暗淡显示例如:禁止弹出式菜单“文件”中的“打开”项的形式如下:EnableMenuItem( hmenu,IDM_OPEN,MF_BYCOMMAND| MF_DIABLED);2. 设置或取消选中标志在资源描述文件中设置选项为CHECKED外,还可通过调用函数CheckMenuItem设置或取消选中标志。DWORD CheckMenuItem(HMENU hmenu,UINT wIDCheckItem,UINT dwCheck)dwCheck选项的常用选项及其说明如下: 选项 说明 MF_BYCOMMAND表明以ID值标识选项 MF_BYPOSITION表明以位置标识选
14、项 MF_CHECKED添加选中标志 MF_UNCHECKED删除选中标志3增加选项(1) 在尾部增加应用程序可调用函数AppendMenu在菜单尾部增加选项。 BOOL AppendMenu(HMENU hmenu,UINT dwFlag,UINT dwIDNewItem, LPCTSTR lpNEWItem);例如:在弹出式菜单“文件”的末尾增加一项“关于”的形式如下: AppendMenu(hmenu,MF_ENABLED,IDM_ABOUT,“关于(&A)” );(2) 插入 应用程序可调用函数InsertMenu在菜单中插入新的选项。BOOL InsertMenu(HMENU
15、 hmenu,UINT wPosition,UINT dwFlag, UINT dwIDNewItem, LPCTSTR lpNEWItem);例如:在弹出式菜单“文件”的“退出”项之前加入新的选项“打印”的形式如下:InsertMenu(hmenu,IDM_EXIT,MF_BYCOMMAND|MF_ENABLED,IDM_PRINT,“打印(&P)”);4. 删除选项应用程序可调用DeleteMenu函数删除菜单中的选项。BOOL DeleteMenu(HMENU hmenu,UINT wPosition,Uint dwFlag);例如:删除弹出式菜单“文件”菜单中的“另存为”选项的
16、形式如下: DeleteMenu(hmenu,IDM_SAVEAS,MF_BYCOMMAND);5.修改选项应用程序可调用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 创建菜单及加速资源在资源编辑器中创建一个菜单资源
17、的步骤如下:1 单击“ 插入”下拉菜单中的“资源”选项。2 双击“Menu”选项。3 双击菜单项虚框。4 在“菜单项属性”对话框中输入该项的标题,若该项为弹出式菜单,则选择Popup复选框。5 在对话框中输入选项的标识(ID)、标题及相应的菜单属性。 在资源编辑器中创建选项加速器资源的步骤如下:1 单击“ 插入”下拉菜单中的“资源”选项。2 双击“accelerator”选项。3 双击出现的新加速键资源。4 在“加速键属性”对话框中将该加速键的标识更改为相应菜单的标识。5 在加速键编辑界面中添加相应项的加速键。43 对话框资源431 功能1发送消息 当应用程序向用户发送消息时常使用对话框资源,
18、常用的有警告消息框、提示消息框等。下图为Windows系统常用的警告形式。2接收消息当应用程序希望得到用户输入时常使用对话框资源。3提供信息等当应用程序向用户提供信息时也常使用对话框。432 特点对话框与一般的应用程序的子窗口相比较具有以下特点:1创建形式不同在资源描述文件定义对话框模板完成创建操作。2独立的消息处理函数 在独立的对话框函数中进行。应用程序在消息循环中判断消息队列中的消息,如果该消息为对话框消息,则将该消息发往对话框处理函数分别处理。 3包含多种控件 对话框中根据需要可包含各种各样形状和功能的控件,控件是对话框的主要组成部分,应用程序通过控件完成与用户之间的对话框交互。433
19、分类1. 模态对话框 要求用户必须结束该对话框之后才可以切换到其它窗口。即该对话框与同一应用程序中的其它窗口互锁。2. 非模态对话框允许在结束该对话框之前切换到其它窗口操作。434 模态对话框编程方法1定义对话框资源在应用程序的资源描述文件中定义对话框,一般形式为:对话框名 DIALOG 载入特性选项 X,Y,WIDTH,HEIGTH 设置选项对话框的控件定义 常用的设置选项有: CAPTION、FONT、STYLE、LANGUAGE等。 下面的语句说明该对话框为弹出式对话框,并含有标题栏: STYLE DS_MODALFRAME|WS_POPUP|WS_CAPTION控件定义:常用控件及其说
20、明: 控件 说明 CHECKBOX 复选框 COMBOBOX 组合框 CTEXT 文本居中的静态控件 DEFPUSHBUTTON 缺省按钮 EDITTEXT 文本框 ICON 图标 LISTBOX 列表框 LTEXT 文本左对齐的静态控件 PUSHBUTTON 按钮 RADIOBUTTON 圆按钮 RTEXT 文本右对齐的静态控件 SCROLLBAR 滚动条例如应用程序需使用一个名为“About”对话框,该对话框含有一条静态文本和一个按钮控件。在资源描述文件中的定义如下:About DIALOG 50,50,100,100CAPTION “关于”STYLE DS_MODALFRAME|DS_3
21、DLOOK|WS_POPUP|WS_CAPTION CTEXT “Windows对话框示例”,-1,13,10,80,10 /静态文本控件 DEFPUSHBUTTON “确定”,IDOK,35,30,30,12/按钮控件2调用DialogBox显示对话框定义资源后可通过调用DialogBox函数显示对话框。Int DialogBox(HINSTANCE hInstance,LPCTSTR lpszDiaologName, HWND hwnd,WNDPROC lpDialogFunc);3.构造对话框消息处理函数对话框消息处理函数的一般形式:BOOL CALLBACK DlgProc(HWND
22、hDlg,UINT message, WPARAM wParam,LPARAM lParam); switch(message) 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 模态
23、对话框示例 消息框是模态对话框的一种特殊形式,应用程序可以通过调用函数MessageBox快捷地生成一些简单但常用的Windows消息框,该函数的原型为: int MessageBox(HWND hwnd,LPCTSTR lpszText,LPCTSTR lpszCaption, DWORD dwType);hwnd:拥有该消息的窗口。lpszText:消息框中显示的字符串。lpszCaption:作为标题的字符串。ldwType:指定消息框的内容。常用的标识及说明如下: 标识 说明MB_ABORTRETRYIGNORE含有Abort、Retry和Ignore按钮的消息框MB_ICONEXCL
24、AMATION含有惊叹号图标的消息框MB_ICONQUESTION含有问号图标的消息框MB_ICONSTOP含有停止图标的消息框MB_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按下“Abo
25、rt”按钮IDCANCEL按下“Cancel”按钮IDIGNORE按下“Ignore”按钮IDNO按下“No”按钮IDOK按下“OK”按钮IDRETRY按下“Retry”按钮IDYES按下“Yes”按钮4.3.6 非模态对话框编程方法 1定义对话框风格 STYLE WS_POPUP|WS_CAPTION|WS_VISIBLE 非模态对话框允许用户与其它窗口切换,因此其标题一般不可省略,且风格中应包含WS_VISIBLE,否则将无法显示。 2创建对话框非模态对话框的创建由函数CreateDialog完成。HWND CreateDialog(HINSTANCE hInstance,LPCTSTR
26、lpszDialogName, HWND hwndParent,WNDPROC lpDialogFunc);3. 消息盾环部分的处理由于非模态对话框并不禁止应用程序向其它窗口发送消息,因此在WinMain函数的消息循环中必须包含截获发往非模态对话框的消息,并将其发往相应的对话框处理函数处理。其消息盾环过程的一般形式为:while(GetMessage(&Msg,NULL,0,0) if (!IsDialogMessage(hdlg,&Msg) TranslateMessage(&Msg); DispatchMessage(&Msg); 4. 关闭对话框函数调用函
27、数DestroyWindows关闭对话框。BOOL DestroyWindows(HWND hwnd);/EndDialog(hdlg,nResult);437 非模态对话框示例438 通用对话框 1类型下面列出了Windows系统提供的对话框模板类型及说明。 类型 说明 COLOR “颜色”对话框 FONT “字体”对话框 OPEN “打开”对话框 SAVE AS “另存为”对话框 PRINT “打印”对话框 PAGE SETUP “页面设置”对话框 PRINT SETUP “打印机设置”对话框 FIND “查找”对话框 REPLACE “替换”对话框这些对话框模板在系统提供的COMMAND
28、LG.h和COLOR.h等文件中定义。2创建过程应用程序在使用对话框以前,应先填充其数据结构。系统提供以下通用对话的数据结构:l OPENFILENAMEl CHOOSECOLORl CHOOSEFONTl PRINTDLGl PAGESETUPDLGl FINDREPLACE其中最常用的是OPENFILENAME结构,“打开”和“另存为”对话框都使用如下数据结构完成定义:typedef struct tagOPENFILENAME DWORD iStructSize; HWND hwndOwner; HANDLE hInstance; LPCSTR lpstrFilter; LPSTR lpstrCustomFilter; DWORD nMaxCustomFilter; DWORD nFil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械手培训课程设计
- 机械原理怎么写课程设计
- 低空经济未来发展趋势与市场前景深度分析报告
- 高中历史 3.1 英国革命的领导者克伦威尔教案2 新人教版选修4
- 七年级英语下册 Unit 5 Our school life Topic 2 A few students are running around the playground Section A教案 (新版)仁爱版
- 机械制造与实验课程设计
- 2016年湖南省株洲市中考真题语文试题(解析版)
- 机械传动与控制课程设计
- 机械产品改良课程设计
- 机械专业液压课程设计
- GB/T 11375-1999金属和其他无机覆盖层热喷涂操作安全
- 《文献阅读》课件
- 2022年新版《建设工程工程量清单计价规范》
- 无限极制度(新人)讲解版课件
- 2023年湖北农业发展集团有限公司招聘笔试题库及答案解析
- 《中值定理应用》课件
- MSD潮湿敏感器件防护培训课件
- 六年级英语上册课件-Unit4 I have a pen pal 人教pep (共23张PPT)
- 糖尿病膳食计算课件
- 文化创意产品设计及案例PPT完整全套教学课件
- DB4208T74-2022《早春大棚西瓜生产技术规程》
评论
0/150
提交评论