Win32资源文件格式

【勇芳软件工作室】汉化HomePreviousNext

本节介绍资源编译器根据资源定义文件的内容创建的【二进制资源文件】的格式。此文件通常具有.RES扩展名。链接器将.RES文件重新格式化为资源对象文件,然后将其链接到基于Win32的应用程序的可执行文件。

二进制资源文件由多个连接的资源文件条目组成。每个条目由资源标题和该资源的数据组成。文件中的资源标题为DWORD,由以下内容组成:

* A DWORD包含资源头的大小

* A DWORD包含资源数据的大小

*资源类型

*资源名称

*附加资源信息

RESOURCEHEADER结构描述了此标题的格式。资源的数据遵循资源头,并且是特定于每种类型的资源。一些资源还使用资源特定的组头结构来提供关于一组资源的信息。

加速表是资源文件中的一个资源条目。它没有组头。AccelTableEntry 结构描述了加速器表中的每个条目。允许多个加速器表。

对话框也是资源文件中的一个资源条目。它由对话框中的每个控件的一个DLGTEMPLATE 对话框标题结构和一个DLGITEMTEMPLATE 结构组成。DLGTEMPLATEEX DLGITEMTEMPLATEEX 结构描述扩展对话框资源的格式。

字体作为一组资源存储在资源文件中。单个字体组成一个字体组。.RC文件中的FONT 声明资源定义语句定义每个字体。资源中的每个单独字体由相关.FNT文件的完整内容组成。FontGroupHdr结构遵循.RES文件中的所有单个字体组件。

字体资源不会添加到特定应用程序的资源。而是通常将它们添加到具有.FON扩展名的.EXE文件中。这些文件通常是资源唯一的动态链接库(DLL)而不是应用程序。

Windows将每个图标和光标作为单个文件处理。但是,这些存储在.RES文件和.EXE文件中,作为一组图标资源或一组游标资源。图标和游标资源的文件格式相似。在.RES文件中,资源组标题跟随所有单个图标或光标组组件。

每个图标组件的格式非常类似于.ICO文件的格式。每个图标图像存储在BITMAPINFO结构中,后跟图标的XOR蒙版的彩色设备无关位图(DIB)位。图标的AND掩码的单色DIB位跟随着彩色DIB位。

每个光标组件的格式类似于.CUR文件的格式。每个光标图像存储在BITMAPINFO结构中,然后是光标的XOR掩码的单色设备无关位图(DIB)位,然后是光标的“与”掩码的单色DIB位。请注意,两个资源的位图有区别:与图标不同,光标XOR蒙版不具有彩色DIB位。虽然光标掩码的位图是单色的,并且没有DIB标题或颜色表,但是相对于对齐和方向,这些位仍然是DIB格式。光标和图标之间的另一个显着差异在于游标具有热点和图标。

图标和游标资源的组标题由NEWHEADER 结构加上一个或多个RESDIR结构组成。每个图标或光标都有一个RESDIR结构。组头包含Windows应用程序需要选择要显示的正确图标或光标的信息。组标题和组中每个图标或光标重复的数据都具有固定的长度。这允许应用程序随机访问信息。

菜单资源由MenuHeader 结构后跟一个或多个NormalMenuItem PopupMenuItem结构组成,一个用于菜单模板中的每个菜单项。MENUEX_TEMPLATE_HEADER MENUEX_TEMPLATE_ITEM 结构描述了扩展菜单资源的格式。

消息表是包含用于显示为错误消息或消息框中的格式化文本的资源。消息表资源中的主要结构是MESSAGE_RESOURCE_DATA 结构。消息表资源的组织类似于字符串表资源的组织。

版本资源中的主要结构是VS_FIXEDFILEINFO结构。其他结构包括用于存储语言信息数据的VarFileInfo结构,以及用于用户定义的字符串信息的StringFileInfo.版本资源中的所有字符串均为Unicode格式,用于基于Win32的应用程序。每个信息块在DWORD边界上对齐。

有关描述资源格式的结构的组列表,请参阅资源结构.