RESOURCEHEADER
The RESOURCEHEADER
structure contains information about the resource header itself and the
data specific to this resource. This structure is not a true C-language
structure, because it contains variable-length members. This structure was
created solely to depict data organization in the resource file and does not
appear in any of the header files shipped with the Microsoft Win32 Software
Development Kit (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;
};
Members
DataSize
Specifies the
size, in bytes, of the data that follows the resource header for this
particular resource. It does not include any file padding between this resource
and any resource that follows it in the resource file.
HeaderSize
Specifies the
size, in bytes, of the resource header data that follows.
TYPE
Identifies
the resource type. The TYPE member can either be a numeric value or a
null-terminated Unicode string that specifies the name of the type. See the
following Remarks section for a description of Name or Ordinal
type members.
If the TYPE
member is a numeric value, it can specify either a standard or a user-defined
resource type. If the member is a string, then it is a user-defined resource
type.
Following are
the standard Windows resource types.
Resource
Type Name |
Type
number |
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 |
Values less
than 256 are reserved for system use.
NAME
Specifies a
name that identifies the particular resource. The NAME member, like the TYPE
member, can either be a numeric value or a null-terminated Unicode string. See
the following Remarks section for a description of Name or Ordinal
type members.
You do not
need to add padding for DWORD alignment between the TYPE and NAME
members because they contain WORD data. However, you may need to add a WORD
of padding after the NAME member to align the rest of the header on DWORD
boundaries.
DataVersion
Specifies a
predefined resource data version. This will determine which version of the
resource data the application should use.
MemoryFlags
Specifies a
set of attribute flags that can describe the state of the resource. Modifiers
in the .RC script file assign these attributes to the resource. The script
identifiers can assign the following flag values.
Flag
description |
Value |
MOVEABLE |
0x0010 |
FIXED |
~MOVEABLE |
PURE |
0x0020 |
IMPURE |
~PURE |
PRELOAD |
0x0040 |
LOADONCALL |
~PRELOAD |
DISCARDABLE |
0x1000 |
The only
attribute a Win32-based application uses is the DISCARDABLE attribute. The
remaining attributes are permitted in the script for compatibility with
existing scripts, but they are ignored.
The resource
compiler for Windows NT always ignores the MOVEABLE, IMPURE, and PRELOAD
attribute flags. See Resource-Definition Statements
LanguageId
Specifies the
language for the resource or set of resources. Set the value for this member
with the optional LANGUAGE Statement
Each resource
includes a language identifier so the system or application can select a
language appropriate for the current locale of the system. If there are
multiple resources of the same type and name that differ only in the language
of the strings within the resources, you will need to specify a LanguageId for
each one.
Version
Specifies a
user-defined version number for the resource data that tools can use to read
and write resource files. Set this value with the optional VERSION
resource definition statement.
Characteristics
Specifies
user-defined information about the resource that tools can use to read and
write resource files. Set this value with the optional CHARACTERISTICS
resource definition statement.
Remarks
A variable
type member is called a Name or Ordinal member,
and it is used in most places in the resource file where an identifier appears.
The first WORD of a Name or Ordinal type
member indicates whether the member is a numeric value or a string. If the
first WORD in the member is equal to the value 0xffff, which is an invalid
Unicode character, then the following WORD is a type number. Otherwise,
the member contains a Unicode string. For additional information about resource
definition statements see Single-Line Statements
See Also