RESOURCEHEADER结构包含有关资源头本身和该资源特有的数据的信息。这种结构不是真正的C语言结构,因为它包含可变长度的成员。此结构仅用于描述资源文件中的数据组织,并不出现在Microsoft Win32软件开发工具包(SDK)附带的任何头文件中。
struct RESOURCEHEADER {
DWORD DataSize;
DWORD HeaderSize;
[Ordinal or name TYPE];
[Ordinal or name NAME];
DWORD DataVersion;
WORD MemoryFlags;
WORD LanguageId;
DWORD Version;
DWORD Characteristics;
};
会员
DataSize
指定该特定资源的资源头后面的数据的大小(以字节为单位)。它不包括此资源与资源文件中随后的任何资源之间的任何文件填充。
HeaderSize
指定以下资源头数据的大小(以字节为单位)。
TYPE
标识资源类型。TYPE成员可以是一个数字值,也可以是一个空值终止的Unicode字符串,用于指定类型的名称。有关名称或序数词类型成员的说明,请参阅以下备注部分。
如果TYPE成员是数字值,则可以指定标准资源类型或用户定义的资源类型。如果成员是一个字符串,那么它是用户定义的资源类型。
以下是标准的Windows资源类型。
资源类型名称 | 类型编号 |
RT_CURSOR | 1 |
RT_BITMAP | 2 |
RT_ICON | 3 |
RT_MENU | 4 |
RT_DIALOG | 5 |
RT_STRING | 6 |
RT_FONTDIR | 7 |
RT_FONT | 8 |
RT_ACCELERATOR | 9 |
RT_RCDATA | 10 |
RT_MESSAGETABLE | 11 |
RT_GROUP_CURSOR | 12 |
RT_GROUP_ICON | 14 |
RT_VERSION | 16 |
RT_DLGINCLUDE | 17 |
RT_PLUGPLAY | 19 |
RT_VXD | 20 |
RT_ANICURSOR | 21 |
RT_ANIICON | 22 |
小于256的值被保留供系统使用。
NAME
指定标识特定资源的名称。NAME成员,如TYPE成员,可以是数字值或空值终止的Unicode字符串。有关名称或序数词类型成员的说明,请参阅以下备注部分。
您不需要在TYPE和NAME成员之间添加DWORD对齐方式的填充,因为它们包含WORD数据。但是,您可能需要在NAME成员之后添加WORD填充,以使其余的标题与DWORD边界对齐。
DataVersion
指定预定义的资源数据版本。这将确定应用程序应使用哪个版本的资源数据。
MemoryFlags
指定一组可以描述资源状态的属性标志。.RC脚本文件中的修饰符将这些属性分配给资源。脚本标识符可以分配以下标志值。
标志描述 | 值 |
MOVEABLE | 0x0010 |
FIXED | ~MOVEABLE |
PURE | 0x0020 |
IMPURE | ~PURE |
PRELOAD | 0x0040 |
LOADONCALL | ~PRELOAD |
DISCARDABLE | 0x1000 |
基于Win32的应用程序使用的唯一属性是DISCARDABLE属性。脚本中允许剩余的属性与现有脚本兼容,但会被忽略。
Windows NT的资源编译器总是忽略MOVEABLE,IMPURE和PRELOAD属性标志。有关资源属性的其他信息,请参阅资源定义语句 .
LanguageId
指定资源或资源集的语言。使用可选的LANGUAGE 声明资源定义语句设置此成员的值。参数是WINNT.H文件的常量。
每个资源包括一个语言标识符,因此系统或应用程序可以选择适合系统当前语言环境的语言。如果有多个相同类型和名称的资源与资源中字符串的语言不同,则需要为每个资源指定一个LanguageId.
版
指定工具可用于读取和写入资源文件的资源数据的用户定义的版本号。使用可选的VERSION资源定义语句设置此值。
特点
指定用户定义的有关工具可用于读取和写入资源文件的资源的信息。使用可选的CHARACTERISTICS资源定义语句设置此值。
备注
变量类型成员称为名称 【】或【】 序数词 【】成员,它在资源文件中出现标识符的大多数位置中使用。名称 【】或序数词 【】类型成员的第一个WORD表示该成员是数字值还是字符串。如果成员中的第一个WORD等于值0xffff,这是一个无效的Unicode字符,则以下WORD是一个类型号。否则,该成员包含一个Unicode字符串。有关资源定义语句的其他信息,请参阅单行语句 和多行语句.
也可以看看
特征声明,LANGUAGE声明,VERSION声明