リソース ファイル形式
このセクションでは、リソース定義ファイルの内容に基づいてリソース コンパイラが作成するバイナリ リソース ファイルの形式について説明します。 このファイルは通常、拡張子が .res です。 リンカーは、.res ファイルをリソース オブジェクト ファイルに再フォーマットし、アプリケーションの実行可能ファイルにリンクします。
バイナリ リソース ファイルは、複数の連結されたリソース エントリで構成されます。 各エントリは、リソース ヘッダーとそのリソースのデータで構成されます。 リソース ヘッダーは DWORD ファイル内に配置され、次の要素で構成されます。
- リソース ヘッダーのサイズを含む DWORD
- リソース データのサイズを含む DWORD
- リソースの種類
- リソース名
- その他のリソース情報
RESOURCEHEADER 構造体は、このヘッダーの形式を記述します。 リソースのデータはリソース ヘッダーに従い、リソースの種類ごとに固有です。 一部のリソースでは、リソースのグループに関する情報を提供するために、リソース固有のグループ ヘッダー構造も使用されます。
アクセラレータ テーブルのリソース
アクセラレータ テーブルは、リソース ファイル内の 1 つのリソース エントリです。 グループ ヘッダーはありません。 ACCELTABLEENTRY 構造体は、アクセラレータ テーブル内の各エントリを記述します。 複数のアクセラレータ テーブルを使用できます。
カーソルとアイコンのリソース
システムは、各アイコンとカーソルを 1 つのファイルとして処理します。 ただし、これらは .res ファイルと実行可能ファイルに、RT_GROUP_ICON アイコン リソースのグループまたはカーソル リソースの RT_GROUP_CURSOR グループとして格納されます。 アイコン リソースとカーソル リソースのファイル形式は似ています。 .res ファイルでは、リソース グループ ヘッダーが個々のアイコンまたはカーソル グループ コンポーネントすべてに従います。
アイコン リソースとカーソル リソースの両方のグループ ヘッダーは、NEWHEADER 構造体と 1 つ以上の RESDIR 構造体で構成されます。 アイコンまたはカーソルごとに 1 つの RESDIR 構造があります。 グループ ヘッダーには、アプリケーションが表示する正しいアイコンまたはカーソルを選択するために必要な情報が含まれています。 グループ ヘッダーと、グループ内の各アイコンまたはカーソルに対して繰り返されるデータの両方に固定長があります。 これにより、アプリケーションは情報にランダムにアクセスできます。
各 RT_ICON アイコンまたは RT_CURSOR カーソル リソース コンポーネントの形式は、.ico/.cur ファイルの形式によく似ています。 各イメージは、BITMAPINFO 構造体に格納され、その後、アイコンの XOR マスクのカラー デバイスに依存しないビットマップ (DIB) ビットが格納されます。 および マスクのモノクロ DIB ビットは、カラー DIB ビットに従います。 カーソルとアイコンの大きな違いは、カーソルには、ビットマップ データの前にホットスポットが挿入された LOCALHEADER 構造があり、アイコンは挿入されないということです。
Windows Vista RT_ICON アイコンまたは RT_CURSOR カーソル リソースには PNG 圧縮イメージ データが含まれている可能性があるためです。
ダイアログ ボックスのリソース
ダイアログ ボックスは、リソース ファイル内の 1 つのリソース エントリでもあります。 これは、1 つの DLGTEMPLATE ダイアログ ボックス ヘッダー構造に加えて、ダイアログ ボックス内の各コントロールに対して 1 つの DLGITEMTEMPLATE 構造体で構成されます。 DLGTEMPLATEEX と DLGITEMTEMPLATEEX 構造体は、拡張ダイアログ ボックス リソースの形式を記述します。
フォント リソース
フォントはリソース ファイルにリソースのグループとして格納されます。 個々のフォントは、フォント グループを構成します。 内のリソース定義ステートメント FONT ステートメント。RC ファイルは、各フォントを定義します。 リソース内の各フォントは、関連する.fnt ファイルの完全な内容で構成されます。 FONTGROUPHDR 構造体は、.res ファイル内のすべての個々のフォント コンポーネントに従います。
フォント リソースは、特定のアプリケーションのリソースには追加されません。 代わりに、通常、拡張子が .fon の実行可能ファイルに追加されます。 通常、これらのファイルはアプリケーションではなくリソースのみの DLL です。
メニュー リソース
メニュー リソース は、MENUHEADER 構造の後に、1 つ以上の NORMALMENUITEM または POPUPMENUITEM 構造体で構成されます。これは、メニュー テンプレートのメニュー項目ごとに 1 つです。 MENUEX_TEMPLATE_HEADER および MENUEX_TEMPLATE_ITEM 構造体は、拡張メニュー リソースの形式を記述します。
メッセージ テーブルリソース
メッセージ テーブル は、エラー メッセージまたはメッセージ ボックスに表示するための書式設定されたテキストを含むリソースです。 メッセージ テーブル リソースの主な構造は、MESSAGE_RESOURCE_DATA 構造体です。
バージョン リソース
バージョン リソースの主な構造は、VS_FIXEDFILEINFO 構造です。 その他の構造体には、言語情報データを格納するための VarFileInfo 構造体や、ユーザー定義の文字列情報用の StringFileInfoをがあります。 バージョン リソース内のすべての文字列は Unicode 形式です。 各情報ブロックは、DWORD 境界に配置されます。