Share via


リソース ファイル形式

このセクションでは、リソース定義ファイルの内容に基づいてリソース コンパイラによって作成されるバイナリ リソース ファイルの形式について説明します。 通常、このファイルには .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) ビットが格納されます。 AND マスクのモノクロ 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_HEADERMENUEX_TEMPLATE_ITEMの構造体は、拡張メニュー リソースの形式を記述します。

メッセージ テーブルリソース

メッセージ テーブルは、エラー メッセージまたはメッセージ ボックスに表示するための書式設定されたテキストを含むリソースです。 メッセージ テーブル リソースのメイン構造は、MESSAGE_RESOURCE_DATA構造です。

バージョン リソース

バージョン リソースのメイン構造は、VS_FIXEDFILEINFO構造です。 その他の構造体には、言語情報データを格納する VarFileInfo 構造体と、ユーザー定義の文字列情報用の StringFileInfo が含まれます。 バージョン リソース内のすべての文字列は Unicode 形式です。 各情報ブロックは、 DWORD 境界に配置されます。