- 浏览: 297150 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
M大米饭:
19774279 写道xj1990129 写道PackageF ...
Eclipse插件开发之获得当前项目 -
zhongmin2012:
AST抽象的java语法树 -
wd3389:
好可惜,你写的文章很有帮助,谢谢!
关于博客更新 -
zxjlwt:
http://surenpi.com/2015/07/13/e ...
eclipse扩展点清单 -
zxjlwt:
学习了。http://surenpi.com
Console 控制台扩展(一)
.rc Windows资源文件定义和使用
- 博客分类:
- C++
统一资源管理:
在win32编程中,为方便项目中的资源统一管理,提供了一个格式统一的资源文件,对各种资源进行管理。它的扩展名是.rc,在程序编译时它会被资源编译器编译生成一个.res的二进制文件。
rc文件的语法:
1.注释:注释方式和 C 语言相通,单行注释用 // 符号,多行注释用 /* ... */ 符号。
2.预处理命令:预处理指令包括一些头文件的引用(使用 #include ,也同 C 语言)。
3.编译指令:预定义(#define,常量和宏,不支持带参数的宏) 和 条件编译(#if, #ifdef, #undef, #ifndef, #else, #elif, #endif 等)。
4.资源定义声明:资源定义的声明中包括“资源”(Resources),"控件"(Controls) 和 “声明”(Statements) 3 类。
资源定义声明:
1.资源(Resources):“资源”具有资源 ID,在程序中可以使用 FindResource ,LoadResource,LoadMenu 等资源相关 API 来操作。常见的定义如下:
(1)从文件导入的资源类型:(BITMAP,ICON,HTML,FONT,CURSOR 等)
//格式: nameID BITMAP filename //例子: IDI_ICON_MAIN ICON "res\\icon.ico" //ICON RESOURCE
(2) 对话框资源类型:(DIALOG,DIALOGEX 等)(对话框可以包括若干子控件,如菜单,按钮等,定义语法如下)
//模板 nameID DIALOGEX x, y, width, height [ , helpID]] [[ optional-statements]] {control-statements } //例子 IDD_DIALOG_ABOUT DIALOGEX 0, 0, 290, 59 //DIALOGEX RESOURCE STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" // CAPTION STATEMENT FONT 8, "MS Shell Dlg", 400, 0, 0x1 // FONT STATEMENT BEGIN LTEXT "Windows Resource Demo",3001,26,14,119,8,SS_NOPREFIX // CONTROL LTEXT "Copyright (C) 2008",3002,26,30,119,8 // CONTROL DEFPUSHBUTTON "OK",IDOK,234,14,32,14,WS_GROUP // CONTROL DEFPUSHBUTTON "Quit",IDCANCEL,234,31,32,14,WS_GROUP // CONTROL END
(3) 菜单资源类型:
//定义: //MENU: menuID MENU [[optional-statements]] { item-definitions ... } //POPUP: POPUP text, [[optionlist]] { item-definitions ... } //例子 //MENU: IDR_MENU_MAIN MENU //MENU RESOURCE BEGIN POPUP "File" // POPUP RESOURCE BEGIN MENUITEM "&Open", ID_FILE_COPY // MENUITEM STATEMENT MENUITEM "&Save", ID_FILE_SAVE40002// MENUITEM STATEMENT MENUITEM SEPARATOR // MENUITEM STATEMENT MENUITEM "E&xit", ID_FILE_EXIT // MENUITEM STATEMENT END POPUP "Eidt" // POPUP RESOURCE BEGIN MENUITEM "&Copy", ID_EIDT_COPY// MENUITEM STATEMENT MENUITEM "&Paste", ID_EIDT_PASTE// MENUITEM STATEMENT END POPUP "Help" // POPUP RESOURCE BEGIN MENUITEM "&About", ID_HELP_ABOUT// MENUITEM STATEMENT END END //POPUP: IDR_MENU_POPUP MENU BEGIN POPUP "POPUP" BEGIN MENUITEM "&Copy", ID_POPUP_COPY MENUITEM "&Paste", ID_POPUP_PASTE MENUITEM "Cu&t", ID_POPUP_CUT POPUP "&Info" BEGIN MENUITEM "Co&unt", ID_INFO_A MENUITEM "&Size", ID_INFO_B END END END
(4)字符串表类型:
//定义 STRINGTABLE [[optional-statements]] {stringID string ...} //例子 STRINGTABLE BEGIN IDS_1 L"5\x00BC-Inch Floppy Disk" IDS_1a "5\xBC-Inch Floppy Disk" IDS_2 L"Don't confuse \x2229 (intersection) with \x222A (union)" IDS_3 "Copyright \xA92001" IDS_3a L"Copyright \x00a92001" END
(5)自定义类型:
nameID typeID filename nameID typeID { raw-data }
2. 控件(Controls):
//定义 <控件类型> text, id, x, y, width, height [[, style [[, extended-style]]]] <控件类型>, id, x, y, width, height [[, style [[, extended-style]]]] //例子 LTEXT "Windows Resource Demo",3001,26,14,119,8,SS_NOPREFIX // CONTROL LTEXT "Copyright (C) 2008",3002,26,30,119,8 // CONTROL DEFPUSHBUTTON "OK",IDOK,234,14,32,14,WS_GROUP // CONTROL DEFPUSHBUTTON "Quit",IDCANCEL,234,31,32,14,WS_GROUP // CONTROL
3. 声明(Statements):根据资源的不同而不同,有的资源有“声明”,有的资源则没有,且每一种资源对应特定的声明。比如 MENU 的资源就会具有 MENUITEM 声明,用于指定菜单项;对话框资源(DIALOG,DIALOGEX)具有 CAPTION 声明,用于指定对话框标题。
另外:资源 ID 是一个资源或资源子项的唯一标识,很多资源和子项都具有标识。在上面的实例中,IDD_DIALOG_ABOUT ,ID_FILE_COPY 等都是资源 ID 。这些 ID 实际是有用户定义的常数,都定义在 Resource.h 头文件中。如下:
//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by Windows.rc // #define IDD_DIALOG_ABOUT 101 #define IDR_MENU_MAIN 101 #define IDR_MENU_POPUP 102 #define IDI_ICON_MAIN 103 #define IDC_EDIT_ABOUT 1001 #define ID_FILE_COPY 40001 #define ID_FILE_SAVE40002 40002 #define ID_FILE_EXIT 40003 #define ID_EIDT_COPY 40004 #define ID_EIDT_PASTE 40005 #define ID_HELP_ABOUT 40006 #define ID_COPY_PASTE 40007 #define ID_COPY_PASTE40008 40008 #define ID_POPUP_COPY 40009 #define ID_POPUP_PASTE 40010 #define ID_POPUP_CUT 40011 #define ID_POPUP_INFO 40012 #define ID_INFO_A 40013 #define ID_INFO_B 40014 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 104 #define _APS_NEXT_COMMAND_VALUE 40015 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif
在程序中使用资源:
case WM_COMMAND: { switch (LOWORD(wParam)) { // 在“帮助”菜单中选择“关于” case ID_HELP_ABOUT: { DialogBox( hinst, (LPCTSTR)IDD_DIALOG_ABOUT, hwnd, (DLGPROC)About ); return 0; } default: return DefWindowProc(hwnd, uMsg, wParam, lParam); } }
其中,如果处理的是 WM_COMMAND 消息时(当用户从菜单选中一个命令项目、当一个控件发送通知消息给去父窗口或者按下一个快捷键将发送 WM_COMMAND 消息),我们首先一般会用 LOWORD 宏来检查 wParam 参数,从而得出“菜单 ID”或“控件ID”,这两者都是资源 ID,像上面的 ID_HELP_ABOUT 和 IDD_DIALOG_ABOUT 都是资源 ID 。
在使用资源 ID 时经常会看到一个宏 MAKEINTRESOURCE ,这个宏的功能是将资源 ID 转换为资源名(字符串形式),很多 API 函数在引用资源时都是通过资源名来引用的。
发表评论
-
win32基础实例
2012-10-08 22:59 1301本文毫无看点,完全是 ... -
rapidxml操作xml
2012-10-07 14:14 5314rapidxml:(内容源自网络) 一个项目对xml的操作是 ... -
文件操作
2012-10-07 09:50 711文件操作: 文件的读写操作,是一个程序最基本的功能。 ... -
C++的字符应用(TCHAR,WCHAR,LPSTR,LPWSTR,LPCTSTR)
2012-09-26 18:01 2682来自:http://www.cnblogs.com/lazyc ... -
#pragma 预处理指令
2012-09-15 23:19 899在所有的预处理指令中,#pragma 指令可能是最复杂的了,它 ... -
在VS2010平台上创建并使用dll
2012-09-09 17:52 4127代码的复用: 1.源码级别的复用:优点可以阅读和修改相关的内 ... -
关于"符号已定义"的链接错误
2012-09-09 17:13 1370在写C++程序的时候,在编译和连接的时候,经常容易看到: ... -
VS和Resharper
2012-08-28 20:11 4作为一个java出身的eclipse IDE程序员,学习C++ ... -
C++头文件一览
2012-08-24 11:32 1647C、传统 C++ #include &l ... -
C++函数
2012-08-19 10:05 938函数的作用,代码的重用,这种模块的概念在面向过程和面向对象的编 ... -
C++复杂类型
2012-08-17 08:51 922基础: 1.赋值: 结构 ... -
VS的快捷键
2012-08-15 15:21 1026VS的快捷键与eclipse的很不同,相同功能的按键不同,但是 ... -
C++基础类型
2012-08-12 21:23 969基础类型: 1.基础类型的长度:(基础类型的长度会根据 ... -
C++的命名空间
2012-06-28 14:20 827命名空间: 对于一个大型程序来说,变量名重名是很合理而 ... -
户端程序员必备知识
2012-06-27 19:43 976网络游戏客户端结构: 程序框架 文件读写模块 自动 ... -
window常用的基本数据类型及句柄类型
2012-06-26 13:57 14windows的运行原理: 应用程序 ----- 操作 ...
相关推荐
resource.hchess.rc这是整个工程中使用的Windows资源列表。包括置于res子目录下的图标,位图以及光标等内容。define.h这是一个包含程序中的数据表示的定义的头文件。NewGame.hNewGame.cpp这一对文件定义并实现用于新...
第1章 Windows应用程序开发入门..........................................................................................16 1.1 第一个实例程序...............................................................
它支持众多文件格式,包括可执行程序文件、资源文件和基于 XML 的文件。文本可以被翻译为多种语言,包括亚洲语系(Unicode 码)以及书写方式为从右向左的语言,比如希伯来语和阿拉伯语。 可用 Passolo 本地化的文件...
9.5.2 资源ID定义和头文件 272 9.5.3 在程序中使用资源 273 9.6 菜单 273 9.6.1 菜单资源和菜单句柄 273 9.6.2 动态增加、删除、设置菜单及菜单项 274 9.6.3 菜单消息处理 274 9.7 对话框 275 9.7.1 ...
含在主资源文件 modifyfile.rc 中。 res\modifyfile.rc2 此文件包含不由 Microsoft Visual C++ 编辑的资源。 应将所有不能由资源编辑器编辑的资源放在此文件中。 ////////////////////////////////////////////...
此图标包括在主资源文件 ZLG_UDS_DEMO.rc 中。 res\ZLG_UDS_DEMO.rc2 此文件包含不在 Microsoft Visual C++ 中进行编辑的资源。您应该将不可由资源编辑器编辑的所有资源放在此文件中。 应用程序向导创建一个对话...
此图标包括在主资源文件 ZLG_UDS_DEMO.rc 中。 res\ZLG_UDS_DEMO.rc2 此文件包含不在 Microsoft Visual C++ 中进行编辑的资源。您应该将不可由资源编辑器编辑的所有资源放在此文件中。 应用程序向导创建一个对话...
此图标包括在主资源文件 ISO_TP_15765_DEMO.rc 中。 res\ISO_TP_15765_DEMO.rc2 此文件包含不在 Microsoft Visual C++ 中进行编辑的资源。您应该将不可由资源编辑器编辑的所有资源放在此文件中。 应用程序向导创建...
这是程序使用的所有 Microsoft Windows 资源的列表。 它包含存储在 RES 子目录下的图标、位图和光标。 此文件可在 Microsoft Visual C++ 中直接编辑。 resExpressionProcess.rc2 此文件包含不由 ...
这是程序使用的所有 Microsoft Windows 资源的列表。 它包含存储在 RES 子目录下的图标、位图和光标。 此文件可在 Microsoft Visual C++ 中直接编辑。 res\GameServer.rc2 此文件包含不由 Microsoft Visual...
图标包含在主资源文件 StopWaitComm.rc 中。 res\StopWaitComm.rc2 此文件包含不由 Microsoft Visual C++ 编辑的资源。 应将所有不能由 资源编辑器编辑的资源放在此文件中。 ///////////////////////////////...
9.5.2 资源ID定义和头文件 272 9.5.3 在程序中使用资源 273 9.6 菜单 273 9.6.1 菜单资源和菜单句柄 273 9.6.2 动态增加、删除、设置菜单及菜单项 274 9.6.3 菜单消息处理 274 9.7 对话框 275 9.7.1 ...
图标包含,由主资源文件UThief.rc的。 水库\ UThief.rc2中 此文件中包含的资源,由Microsoft编辑 的Visual C + +。你应该将所有资源不可编辑 在这个文件中的资源编辑器。 应用程序向导将创建一个对话框类: ...
图标包含在主资源文件 xmlEnctry.rc 中。 res\xmlEnctry.rc2 此文件包含不由 Microsoft Visual C++ 编辑的资源。 应将所有不能由 资源编辑器编辑的资源放在此文件中。 /////////////////////////////////////...
这些文件定义和实现 CChildFrame 类,此类 支持 MDI 应用程序中的子窗口。 ////////////////////////////////////////////////////////// 应用程序向导将创建一种文档类型和一个视图: StudentScoreDoc.h、...
此图标包括在主要资源文件 NetChatClient.rc 中。 res\NetChatClient.rc2 此文件包含不在 Microsoft Visual C++ 中进行编辑的资源。您应该将不可由资源编辑器编辑的所有资源放在此文件中。 /////////////////////...
它支持众多文件格式,包括可执行程序文件、资源文件和基于 XML 的文件。文本可以被翻译为多种语言,包括亚洲语系(Unicode 码)以及书写方式为从右向左的语言,比如希伯来语和阿拉伯语。 Passolo 的使用非常容易,...
图标包含在主资源文件 ScreenCapture.rc 中。 res\ScreenCapture.rc2 此文件包含不由 Microsoft Visual C++ 编辑的资源。 应将所有不能由 资源编辑器编辑的资源放在此文件中。 /////////////////////////////...
<br>PCRecord.rc 这是项目的主要资源文件,列出项目使用的所有 Microsoft Windows 资源。它包括 RES 子目录中存储的图标、位图和光标。此文件可以直接在 Microsoft Visual C++ 中进行编辑。项目资源位于 2052...