|
资源是在资源脚本 (*.rc) 文件中进行配置的。比如下面是一个程序的界面:
它所对应的资源脚本文件内容为:
[Plain Text] 纯文本查看 复制代码 #include <Windows.h>
#include "resource.h"
#pragma code_page(936)
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
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
/////////////////////////////////////////////////////////////////////////////
//
// 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
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
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
IDI_ICON_MAIN ICON "res\\icon.ico" //ICON RESOURCE
rc 文件的语法包括注释,预处理命令,编译指令和资源定义声明等。其中注释方式和 C 语言相通,单行注释用 // 符号,多行注释用 /* ... */ 符号。
预处理指令包括一些头文件的引用(使用 #include ,也同 C 语言),预定义(#define,常量和宏,不支持带参数的宏) 和 条件编译(#if, #ifdef, #undef, #ifndef, #else, #elif, #endif 等)。
在上面示例中,#pragma code_page(936) 用来指定文本的编码方式,pragma 的语法格式为:#pragma code_page( [ DEFAULT | CodePageNum ] ) 如上,当 CodePageNum 值为 936 时表示使用的是简体中文编码方式。
资源定义的声明中包括“资源”(Resources),"控件"(Controls) 和 “声明”(Statements) 3 类。
1、资源
“资源”具有资源 ID,在程序中可以使用 FindResource ,LoadResource,LoadMenu 等资源相关 API 来操作。有的资源支持子控件,各种资源的声明各不相同,以下是常用的几种系统资源类型。
(1) 从文件导入的资源类型
比如 BITMAP,ICON,HTML,FONT 等,如:在上面的实例中,使用的图标资源 IDI_ICON_MAIN 如下定义:IDI_ICON_MAIN ICON "res\\icon.ico" //ICON RESOURCE 上面告诉我们图标文件 icon.ico 放在项目目录下的 res 子文件中。
(2) 对话框资源类型
如 DIALOG,DIALOGEX 等,对话框可以包括若干子控件,如菜单,按钮等,定义语法如下:nameID DIALOGEX x, y, width, height [ , helpID]] [[ optional-statements]] {control-statements } 上面实例中的 IDD_DIALOG_ABOUT 就是 DIALOGEX 类型的资源。
(3) 菜单资源类型
MENU 包括如下菜单选项:menuID MENU [[optional-statements]] { item-definitions ... } 通常,菜单资源中一般会包括 POPUP 资源,如下所示:POPUP text, [[optionlist]] { item-definitions ... } 上面实例中的 IDR_MENU_POPUP, IDR_MENU_MAIN 这些都是 MENU 类型的资源。
(4) 字符串表类型
STRINGTABLE 包括若干字符串,如下所示:STRINGTABLE [[optional-statements]] {stringID string ...}
(5) 自定义类型
此外,还允许我们自定义资源类型,如下所示:nameID typeID filename
nameID typeID { raw-data }
2. 控件
“控件” 与系统通用控件相对应,编译器会解析脚本,在程序运行时,脚本中相关声明被引用时会创建控件:<控件类型> text, id, x, y, width, height [[, style [[, extended-style]]]] 或<控件类型>, id, x, y, width, height [[, style [[, extended-style]]]] 如在上面实例中对话框资源中包括的 TEXT 控件为: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. 声明
“声明”用于设置“资源”的相关属性。根据资源的不同而不同,有的资源有“声明”,有的资源则没有,且每一种资源对应特定的声明。比如 MENU 的资源就会具有 MENUITEM 声明,用于指定菜单项;对话框资源(DIALOG,DIALOGEX)具有 CAPTION 声明,用于指定对话框标题。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|