《Windows资源》PPT课件.ppt_第1页
《Windows资源》PPT课件.ppt_第2页
《Windows资源》PPT课件.ppt_第3页
《Windows资源》PPT课件.ppt_第4页
《Windows资源》PPT课件.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、10 Windows资源,因为资源和程序代码是独立开发的,维护好程序中的资源也就为程序的开发打下了良好的基础。 1. 资源和资源特点 Windows应用程序包括众多图形元素,例如图标、光标、菜单、对话框等,每一个这样的元素都作为一种可以装入应用程序的资源来存放。 在Windows程序设计中,各种资源的描述放在资源文件中,资源文件中的代码描述各种资源的显示效果。 资源的描述和程序代码是分开的,这样做有两个好处:一方面,多个应用程序可以引用一个资源的定义;另一方面,程序设计人员可以在不影响程序代码的情况下修改资源。,2. 资源的分类 在Windows中资源有以下几类: (1) 加速键(Accele

2、rator)列表 (2) 位图(Bitmap) (3) 光标(Cursor) (4) 对话框(Dialog) (5) 图标(Icon) (6) 菜单(Menu) (7) 字符串列表(String Table) (8) 版本信息(Version),3. 资源编辑器 Windows所有的资源都可以在资源编辑器中编辑,包括修改、定制等。建议Windows资源的编辑放在资源编辑器中,Visual C+中包含多种资源编辑器,不同的资源使用不同的资源编辑器。 4. 资源的公共编辑方法 在Visual C+集成开发环境中,所有的资源编辑器的使用是相似的。也就是说,只要掌握了一种资源的编辑方法,那么,其他资源

3、的编辑问题就迎刃而解了。 (1) 资源的创建 (2) 资源的打开 (3) 资源文件(.rc)的保存,在VC中,源程序引用资源是通过标识符来进行的,而且每一个标识符都有一个整数与之对应,整数值是唯一的。 1. 资源标识符 所谓标识符是指映射到整数上的一串字符。 资源标识符的命名规则和其他标识符相同,但是要注意,资源标识符不区分大小写字母,字符个数不得超过247个。 每当用户创建一个新的资源或资源对象时系统都会为其提供缺省名称并赋值,该定义保存在Resource.h文件中。 一般情况下,不同的资源使用不同的资源标识符前缀。,2. 资源标识符的取值规则 在VC中资源标识符都有一个整数与之对应,取值范

4、围是065534,系统为创建的标识符自动赋值,用户也可以修改这些值。如下所示在头文件Resource.h中定义了五个资源标识符,其中标识符MYICON的值是101等等。 /Resource.h #define MYICON 101 /图标 #define IDR_MENU1 102 /菜单 #define IDI_ICON2 104 /图标 #define ID_MENUITEM40001 40001 /菜单 #define ID_MENUITEM40002 40002 /菜单 3. 资源标识符的编辑 为了对对象标识符进行有效的管理,VC提供了资源标识符浏览器,打开资源标识符浏览器的方法如下:

5、 选中“View”菜单中的“Resource Symbols”命令可以打开“Resource Symbols”对话框,如图所示。其中列出了已被使用和未被使用的标识符名称及其对应的整数值。,标识符浏览器可以完成的功能有: 建立新的标识符。 改变未被使用的标识符名称及数值。 删除未被使用的标识符。 快速切换到某标识符对应的资源编辑器窗口中。,使用基本资源,图标 一个应用程序允许有两个尺寸不一的图标来标识自己的身份:一种是大图标,它是3232的位图;另一种是小图标,它是1616的位图。在桌面或资源管理器窗口中,应用程序总是用大图标作为图形标识,而一旦应用程序启动后,其窗口的左上角和任务栏的程序按钮上

6、就显示出其小图标。 应用程序可以只定义大图标,把WNDCLASS结构的hIcon成员赋值为一个图标句柄,然后用RegisterClass( )函数注册窗口类。如果应用程序中还要使用小图标,那么必须采用扩展的窗口类WNDCLASSEX结构,并指定hIconSm成员为小图标的句柄,然后用RegisterClassEx( )函数进行注册。,1. 图标资源的创建和加载 (1) 图标资源的创建 图标资源的创建可以有两种方法:一是可以在VC集成开发环境中使用图标编辑器创建一个图标,此时会产生一个.ico文件,并且可以给此图标命名;第二种方法是在其他图形编辑器种创建图标文件(.ico文件),然后加载到资源文

7、件中。 (2) 在应用程序中加载图标 应用程序通过调用函数LoadIcon进行图标资源的加载,此过程经常在定义窗口类时进行,函数LoadIcon的调用形式为: LoadIcon(hThisInst, lpszIconName); 其中,hThisInst为应用程序的当前实例句柄,lpszIconName可以有三种形式: 图标文件名,必须用双引号括起来。 图标ID,但是必须使用宏MAKEINTRESOURCE进行转换。 系统提供的图标,系统提供的图标标识及其形状见表,菜单 1. 菜单的创建 在资源文件中创建菜单可分为定义和加载两个步骤: (1) 菜单在资源描述文件中的定义形式为: 菜单名 MEN

8、U 选项 菜单项列表 (2) 在Windows应用程序中加载菜单的方法有如下三种: 在窗口类中加载菜单 wndclass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1) ;, 在创建窗口时加载菜单 应用程序需首先调用函数LoadMenu加载菜单,然后调用函数CreateWindow创建窗口时加载窗口菜单。 HMENU hMenu; hMenu=LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1); hwnd = CreateWindow ( szAppName, /窗口类名 菜单示例, /窗口标题名 WS_OVERLAP

9、PEDWINDOW, /窗口的风格 CW_USEDEFAULT, CW_USEDEFAULT, /窗口左上较坐标为默认值 CW_USEDEFAULT, CW_USEDEFAULT, /窗口的高和宽为默认值 NULL, /此窗口无父窗口 hMenu, /此窗口的菜单 hInstance, /应用程序的当前句柄 NULL) ; /此值不使用, 动态加载菜单 应用程序调用函数 LoadMenu 获取菜单句柄后,还可通过调用函数 SetMenu 动态地加载菜单,以提高应用程序的灵活性。 动态加载菜单可在同一个应用程序中实现多种不同的菜单操作界面。 2. 菜单的动态创建和显示 动态创建菜单可以使系统资源

10、更加节省,在应用程序中动态创建菜单首先调用函数CreateMenu( )创建一个空的菜单,然后添加相应的菜单项,在程序运行中也可以添加或删除菜单项或设置菜单的状态。 (1) 创建菜单 HMENU CreateMenu(VOID) (2) 在菜单的尾部增加菜单项 BOOL AppendMenu(hMenu hMenu, UINT uFlags, UINT uIDNewltem, LPCTSTR lpNewltem); (3) 在菜单中插入菜单项 BOOL InsertMenu(HMENU hMenu,UINT uPosition,UINT uFlags,UINT uIDNewltem,LPCTS

11、TR lpNewltem);,(4) 删除菜单项 BOOL DeleteMenu(HMENU hMenu,UINT uPosition,UINT uFlags); (5) 修改菜单项 BOOL ModifyMenu(HMENU hMnu,UINT uPosition,UINT uFlags,UINT uIDNewltem,LPCTSTR lpNewltem); (6) 禁止或激活菜单项 BOOL EnableMenuItem(HMENU hMenu,UINT uIDEnableItem,UINT uEnable); 3. 菜单的消息处理 创建菜单后,还得为每一个菜单项定义动作,使得用户在选中菜

12、单项或使用加速键以后得到必要的响应。这是在窗口过程的WM_COMMAND消息处理代码中实现的。如下一段代码:,switch (iMsg) case WM_COMMAND : switch (LOWORD (wParam) case IDM_NEW : case IDM_OPEN : case IDM_SAVE : case IDM_SAVEAS : MessageBeep (0) ; return 0 ; case IDM_EXIT : SendMessage (hwnd, WM_CLOSE, 0, 0L) ; return 0 ; case WM_TIMER : MessageBeep (0

13、) ; return 0 ; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; ,4. 加速键 通过资源管理器,用户可以添加和编辑加速键资源,创建方法和其他资源相同。加速键创建成功后,会在资源描述文件中出现类似于以下的代码: ACCELERATOR ACCELERATORS DISCARDABLE BEGIN C, IDM_COPY, VIRTKEY, CONTROL, NOINVERT N, IDM_NEW, VIRTKEY, CONTROL, NOINVERT O, IDM_OPEN, VIRTKEY, CONTROL, NOINVERT

14、 S, IDM_SAVE, VIRTKEY, CONTROL, NOINVERT T, IDM_START, VIRTKEY, CONTROL, NOINVERT V, IDM_PASTE, VIRTKEY, CONTROL, NOINVERT VK_DELETE, IDM_DEL, VIRTKEY, NOINVERT VK_F1, IDM_HELP, VIRTKEY, NOINVERT VK_PAUSE, IDM_STOP, VIRTKEY, NOINVERT X, IDM_CUT, VIRTKEY, CONTROL, NOINVERT Z, IDM_UNDO, VIRTKEY, CONTR

15、OL, NOINVERT END,定义了一个名称为ACCELERATOR的加速键表,包括11个加速键。VK_F1为键盘上的F1键,它对应的菜单项的ID为IDM_HELP;“C”是虚拟键的加速键,它带有Ctrl修饰键,表示加速键为Ctrl+C,它对应菜单项的ID为IDM_COPY。,对话框 对话框是一种弹出式的特殊窗口,它主要用来实现应用程序和用户之间的信息交互。 1. 对话框资源通常有如下的功能: 发送消息,如提示消息、警告消息; 接收输入,如用户输入的数据或消息; 对话框分为两类:模态的和非模态的。当显示一个模态对话框时,使用者不能在对话框与同一个程序中的另一个视窗之间进行切换;与模态对话框

16、不同,非模态对话框允许用户在该对话框与应用程序之间切换窗口。 2. 模态对话框的编程方法 (1) 创建模态对话框资源 对话框资源的创建和编辑与菜单相似。创建对话框资源以后在资源描述文件中会出现类似如下所示的代码: ABOUTBOX DIALOG DISCARDABLE 20, 20, 160, 80 STYLE DS_MODALFRAME | WS_POPUP FONT 10, System BEGIN . END (2) 调用函数DialogBox显示模态对话框 int DialogBox(HINSTANCE hlnstance, LPCTSTR lpTemplate, HWND hWndP

17、arent, DLGPROC lpDialogFunc);,(3) 编写对话框消息处理函数 int DialogBox(HINSTANCE hlnstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc); 在对话框消息处理函数中经常处理以下两类消息: WM_INITDIALOG消息 WM_COMMAND消息 (4) 关闭模态对话框 BOOL EndDialog(HWND hDlg, int nResult);,3. 非模态对话框的编程方法 (1) 创建非模态对话框资源资源 创建非模态对话框资源和创建模态对话框资源十分相似。值得注意的是标识对话框内容的标题一般不可省略,并且非模态对话框样式中应包含WS_VISIABLE,否则非模态对话框将无法在屏幕上显示。 (2) 调用函数CreateDialog显示非模态对话框 HWND CreateDialog(HINSTANCE hlnstance,LPCTSTR lpTemplate,HWND hWndParent, DLGPROC lpDialogFunc);

温馨提示

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

评论

0/150

提交评论