参考:
http://blog.csdn.net/zgrjkflmkyc/article/details/16897881
http://www.oschina.net/question/565065_72669
×××××××××××××××××××××××××××××××××××××××××××××××
统一管理:
在Win32编程的时候,为了方便项目中的资源统一管理,IDE提供了一个统一的格式资源文件,这是就是后缀为.rc的文件。
在程序编译的时候他会被编译器(具体来说是资源编译器)生成一个后缀名为res的二进制文件。
rc文件的语法结构:
1 注释:注释格式和C语言相同,单行注释使用//符号。多行注释使用/××/符号。
2 预处理命令:预处理指令包括一些头文件的引用(使用#include,也和C语言相同)
3 编译指令:预定义(#define,常量和宏, 不支持带参数的宏)和条件编译(#if,#ifdef,#undef,#ifndef,#else,#elif,#endif等)
4 资源定义说明:资源定义的声明包括“资源”(Resources),“控件”(Controle),“声明”(Statement)3类
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
1.资源(Resources):“资源”具有资源 ID,在程序中可以使用 FindResource ,LoadResource,LoadMenu 等资源相关 API 来操作。常见的定义如下:
(1)从文件导入的资源类型:(BITMAP,ICON,HTML,FONT,CURSOR 等)
Example:
//格式:nameID BITMAP filename
//例子:
IDI_ICON_MAIN ICON "res\\icon.ico" //ICON RESOURCE
(2)) 对话框资源类型:(DIALOG,DIALOGEX 等)(对话框可以包括若干子控件,如菜单,按钮等,定义语法如下)
Example:
//模板
//nameID DIALOGEX x, y, width, height [ , helpID]] [[ optional-statements]] {control-statements }
//资源ID 资源类型 x坐标,y坐标,宽,高
//例子:
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) 菜单资源类型:
Example:
//定义
//Menu
//menuID MENU [[optional-statements]] { item-definitions ... }
//POPUP:
//POPUP text, [[optionlist]] { item-definitions ... }
//例子:
//MENU:
IDR_MENU_MAIN MENU
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)字符串表类型:
Example:
//定义
//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)自定义类型:
Example:
nameID typeID filename
nameID typeID { raw-data }