3.3 Type

The type field can either be a number or a double-null-terminated Unicode string specifying the name of the type. This variable kind of type is known as a "Name or Ordinal" field, and is used in most places in a resource file where an ID may appear.

The first WORD of a Name or Ordinal field identifies whether the field is a number or a string. If the first WORD is 0xffff (an invalid Unicode character), then the following WORD of information is the type number. Otherwise, the field is specified by a Unicode string.

If the type field is a number, then the number specifies a standard or user-defined resource type. All standard Windows resource types have been assigned numbers, which are listed below. This list is taken from the header file used to make RC and contains the type number of the various resource types:


/* Predefined resource types */
#define     RT_NEWRESOURCE     0x2000
#define     RT_ERROR           0x7fff
#define     RT_CURSOR          1
#define     RT_BITMAP          2
#define     RT_ICON            3
#define     RT_MENU            4
#define     RT_DIALOG          5
#define     RT_STRING          6
#define     RT_FONTDIR         7
#define     RT_FONT            8
#define     RT_ACCELERATORS    9
#define     RT_RCDATA          10
#define     RT_MESSAGETABLE    11
#define     RT_GROUP_CURSOR    12
#define     RT_GROUP_ICON      14
#define     RT_VERSION         16
#define     RT_NEWBITMAP       (RT_BITMAP|RT_NEWRESOURCE)
#define     RT_NEWMENU         (RT_MENU|RT_NEWRESOURCE)
#define     RT_NEWDIALOG       (RT_DIALOG|RT_NEWRESOURCE)

If the type field is a string, then the type is a user-defined type.