windows编程技术第12章-windows中的资源课件

上传人:F****n 文档编号:88464286 上传时间:2019-04-28 格式:PPT 页数:27 大小:116KB
返回 下载 相关 举报
windows编程技术第12章-windows中的资源课件_第1页
第1页 / 共27页
windows编程技术第12章-windows中的资源课件_第2页
第2页 / 共27页
windows编程技术第12章-windows中的资源课件_第3页
第3页 / 共27页
windows编程技术第12章-windows中的资源课件_第4页
第4页 / 共27页
windows编程技术第12章-windows中的资源课件_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《windows编程技术第12章-windows中的资源课件》由会员分享,可在线阅读,更多相关《windows编程技术第12章-windows中的资源课件(27页珍藏版)》请在金锄头文库上搜索。

1、第12章 Windows中的资源,资源是Windows应用程序用户界面的重要组成部分,菜单、快捷键、图标、光标、对话框和字符串等都是不同的资源类型。资源的使用极大地方便了Windows应用程序的界面设计。 资源是数据,在程序运行是通过调用API函数装入内存,也可以随时从内存中释放 资源和资源脚本文件 菜单和快捷键资源 图标、光标和字符串资源 对话框,12.1.2 资源和资源脚本文件,资源也是一种数据,他们在资源脚本文件RC(文本文件,以.RC为文件扩展名)中定义了应用程序所需的数据,即菜单、对话框、图标等资源数据。例如:,Myhouse Icon House.ICO,在磁盘上的House.IC

2、O,关键词,可在主程序中使用的图标名,Windows应用程序生成过程 关于资源的生成,C(C+)语言编译器,.C(C+),.H,.OBJ,.DEF,.LIB,TLINK链接器,.ICO,.CUR,.BMP,.FNT,.DLG,资源编辑器,.RC资源描述文件(文本文件),资源编译器,.RES(二进制文件),资源链接器,.EXE可执行文件(应用程序),.EXE,集成编译链接,12.2 图标资源,图标、光标(游标)本质上都是位图,只不过它们都被限制了一定的尺寸,分别被用在不同的地方。字符串也是一种资源类型,它给程序提供了另外一种输出文本字符串的方法。 内建图标 Stop IDI_HAND ? IDI

3、_QUESTION ! IDI_EXCLAMATION * IDI_ASTERISK,12.2.2 图标应用的基本方法,Windows 2000应用程序支持三种不同的图标尺寸:256色(48X48)、32色(32X32)和16色(16X16)图标。在应用程序最小化时,小图标显示在应用程序窗口的左上角;大图标用于桌面图标或大图标试图中。三种图标都使用同一个标识符或者名称,系统直到把不同的尺寸的图标用在何处。步骤: 在资源脚本文件中添加: IDI_MYICON ICON DISCARDABLE ”iconl.ico” 在主程序中加入: 常用的方法 WNDCLASS wndclass; wndcla

4、ss.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_MYICON); 其他方法:函数LoadImage也可以将图标资源装载到应用程序的窗口类,并且功能更强。 wndclass.hIcon = LoadImage (hInstance, MAKEINSTRESOURCE( IDI_MYICON), IMAGE_CURSOR, 32, 32, LR_DEFAULTCOLOR) ; 函数SetClassLong非常有用,它可以在程序执行期间,动态地更改窗口类指定的图标、光标、菜单甚至窗口过程等属性。 DWORD SetClassLong(HWND hW

5、nd,int nIndex,LONG dwNewLong);,12.2.2 例题ICONDEMO,ICONDEMO.C 涉及函数 DrawIcon(HDC hdc, int X, int Y, HICON hIcon) LoadIcon(hInstance, MAKEINTRESOURCE( IDI_ICON ) );,打开源程序,12.2.3 大图表、小图标的应用,ICONDEMO.C 涉及函数 DrawIcon(HDC hdc, int X, int Y, HICON hIcon) LoadIcon(hInstance, MAKEINTRESOURCE( IDI_ICON ) ); cxI

6、con = GetSystemMetrics(SM_CXICON); /取得图标的尺寸 cyIcon = GetSystemMetrics(SM_CYICON); /取得图标的尺寸 大图标(32X32)会自动转换成小图标(16X16) 一般地讲,Studio中建立一个32X32的大图标,大图标将自动在文件夹中显示,如果在标题栏中,则自动会把大图标缩成小图标(16X16)显示。 为什么还要编辑一个小图标: 由于大图标在自动转换成小图标,某些复杂的图标会失真,因此最好的办法是在建立一个小图标。,打开源程序,12.3 使用自定义的光标,系统提供了一些预定义的鼠标光标。标识符为IDC_ARROW,ID

7、C_MOVE,IDC_WAIT或IDC_CROSS等。 在资源脚本文件中,自定义光标的描述如下: IDC_MYCURSOR CURSOR DISCARDABLE “cursor1.cur” 自定义的光标资源保存在文件(如cursor1.cur)中,在定义窗口类时,可以把自定义的光标设置为窗口类默认的光标。 wndclass.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE (IDC_MYCURSOR) ); 特别是在鼠标消息WM_MOUSEMOVE的处理期间,这个函数非常有用。 case WM_MOUSEMOVE: hCursor = LoadCu

8、rsor (hInst, MAKEINTRESOURCE( IDC_MYCURSOR ) ); SetCursor(hCursor);,12.3.2 用SetClassLong设置窗口中的光标,如果在运行过程中希望改变窗口内的默认光标,可以用SetClassLong函数 hCursor = LoadCursor(hInstance,TEXT(“childcursor”); / 其中 SetClassLong(hwnd, GCL_HCURSOR, hCursor); 或者,动态设置光标。特别是在鼠标消息WM_MOUSEMOVE的处理期间,这个函数非常有用。 SetCursor(hCursor);

9、 例如: case WM_MOUSEMOVE: hCursor = LoadCursor (hInst, MAKEINTRESOURCE( IDC_MYCURSOR ) ); SetCursor(hCursor);,12.4 使用字符串资源(自学),使用字符串资源,提供了一种完全不同的使用字符串的方法,字符串被放在资源脚本文件中。程序在需要它们时,通过每个字符串唯一的标识符来获得字符串。 STRING TABLE DISCARDABLE BEGING IDS_ERROR “错误:2002nn由于某种原因,网页不能打开!” IDS_MESSAGE “我是超级链接” END LoadString将

10、字符串数据从资源文件中复制到内存缓冲区。 int LoadString(HINSTANCE hInstance,UINT uID,LPTSTR lpBuffer,int nBufferMax);,12.4.2图标、光标和字符串资源的应用实例(补充),SimulateLink.c -演示图标、光标和字符串资源的使用(模拟网页中的超级链接),12.5 菜单和快捷键资源,12.5.1 菜单概念 菜单是Windows图形用户界面中窗口的重要组成部分。使用菜单可以使用户了解并方便地使用应用程序提供的各项功能;使用快捷键资源可使菜单的操作更方便。 三种菜单:主菜单,下拉式菜单,浮动式菜单 菜单本质上是层次

11、嵌套的。 鼠标点击菜单项,则触发一个菜单事件,程序捕获该事件进行管理。,12.5.2 菜单代号、菜单项ID与菜单ID,对下拉式菜单来说,可以拉出菜单名以及唯一标识该菜单项的ID。 菜单项有三个特性 菜单名,它可以是字符串或点阵图。 菜单项的ID,单击菜单项时,Windows向包含菜单项的菜单所在的窗口发送WM_COMMAND消息,LOWORD(wParam)是向应用程序窗口函数发送的下拉式菜单的代号(通知码) 菜单项的属性,包括是否被禁用、无效化或被选择。,12.5.3 在程序中引用菜单,在创建菜单资源后,有三种方法可以实现菜单与程序窗口的关联: (1) 在窗口类中加载菜单 wndclass.

12、lpszMenuName = lpMenuName; (2) 创建窗口时加载菜单 HMENU LoadMenu(HINSTANCE hInstance, LPCTSTR lpMenuName); (3) 动态加载菜单 应用程序窗口调用函数LoadMenu获取菜单句柄后,还可以通过调用函数SetMenu动态地加载菜单,以提高程序的灵活性。 BOOL SetMenu(HWND hWnd, HMENU hMenu);,12.5.4 和菜单有关的窗口消息,WM_INITMENU 当一个主菜单创建时,发出的消息。 WM_MENUSELECT 用户在菜单项中移动光标或者鼠标,应用程序会受到许多WM_MEN

13、USELECT消息 WM_INITMENUPOPUP 准备显示一个弹出式下拉式菜单时,发送的消息。 WM_COMMAND 当用户选择一个菜单项时,Windows通常会向菜单所在的窗口函数发送WM_COMMAND消息,LOWORD(wParam)是菜单项的ID WM_MENUCHAR 如果用户按下Alt键和一个与菜单项不匹配的字符时,或者在显示下拉式菜单时,用户按下一个与下拉式菜单里的项目不匹配的字符键。,WM_INITMENU,WM_INITMENUPOPUP,WM_MENUSELECT,WM_INITMENUPOPUP,WM_COMMAND,WM_MENUSELECT,WM_MENUSELE

14、CT,WM_MENUSELECT,WM_MENUSELECT,其他菜单消息(参考),WM_SYSCOMMAND消息与WM_COMMAND消息类似,只不过它是用户选择系统菜单的菜单项时,发送到窗口过程的消息队列。 WM_INITMENU是程序的顶层菜单和弹出式菜单被激活前的一瞬间发送到窗口过程。 wParam是顶层菜单的句柄。 WM_INMENUPOPUP是弹出式菜单被激活前的一瞬间发送到窗口过程的。wParam是弹出式菜单的句柄。LOWORD(lParam)是其在上一级菜单中的索引位。 WM_CONTEXTMENU消息通知窗口用户单击了鼠标右键,并要求弹出浮动菜单。此消息的wParam是单击鼠

15、标右键时所处窗口的句柄;lParam参数指明了消息产生时的鼠标位置(屏幕坐标),其中,低字节为水平坐标,高字节为竖向坐标。,菜单和菜单相关操作,通过资源编译器创建菜单资源很容易,用户只需为其窗键的菜单栏添加菜单项或者弹出式菜单,并给每个菜单项指定一个全局唯一的标识符(自定义或由编译器分配)以及菜单项标题。 1 菜单资源的加载 2 菜单的动态创建 3 菜单项的属性 4 插入和删除菜单项,资源文件中的菜单的结构,IDM_MYMENU1 MENU DISCARDABLE BEGIN POPUP “文件(&F)“ BEGIN MENUITEM “新建(&N)tCtrl+N“, 100 MENUITEM

16、 “打开(&O).tCtrl+O“, 101 MENUITEM “保存(&S).tCtrl+S“, 102 MENUITEM SEPARATOR MENUITEM “文本模式(&T)tCtrl+T“, 103 END POPUP “编辑(&E)“ BEGIN MENUITEM “撤销(&U)tCtrl+Z“, 104 MENUITEM SEPARATOR END END,菜单的动态创建,HMENU CreateMenu(VOID); /创建一个空菜单 HMENU CreatePopupMenu(VOID); /创建空的弹出式菜单。 (1) AppendMenu 在指定菜单的末尾加入一新的菜单项,可以指定该菜单项的内容、外观和行为等属性。 (2) InsertMenuItem 在菜单的指定位置处插入一新菜单项,菜单项的属性(参考),菜单项的禁止或者激活状态 菜单项的选中或者取消选中状态 菜单项显示的内容和标识符值 (1) GetM

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号