資源檔案格式
本節描述資源編譯程式根據資源定義檔的內容所建立的二進位資源檔格式。 此檔案通常擴展名為 .res。 鏈接器會將 .res 檔案重新格式化為資源物件檔,然後將它連結至應用程式的可執行檔。
二進位資源檔是由一些串連的資源專案所組成。 每個專案都包含資源標頭和該資源的數據。 資源標頭 DWORD-aligned 在檔案中,且包含下列專案:
- 包含資源標頭大小的 DWORD
- 包含資源數據大小的 DWORD
- 資源類型
- 資源名稱
- 其他資源資訊
RESOURCEHEADER 結構描述此標頭的格式。 資源的數據會遵循資源標頭,而且是每種資源類型特有的。 某些資源也會採用資源特定的群組標頭結構,以提供資源群組的相關信息。
快速鍵數據表資源
快速鍵數據表是資源檔中的一個資源專案。 它沒有群組標頭。 ACCELTABLEENTRY 結構描述快捷鍵數據表中的每個專案。 允許多個快捷鍵數據表。
數據指標和圖示資源
系統會以單一檔案處理每個圖示和游標。 不過,這些會儲存在 .res 檔案和可執行檔中,做為一組 RT_GROUP_ICON 圖示資源或 RT_GROUP_CURSOR 數據指標資源群組。 圖示和數據指標資源的檔格式很類似。 在 .res 檔案中,資源群組標頭會遵循所有個別圖示或數據指標群元件。
圖示和數據指標資源的群組標頭是由 NEWHEADER結構加上一或多個RESDIR 結構所組成。 每個圖示或游標都有一個 RESDIR 結構。 群組標頭包含應用程式需要選取正確圖示或游標以顯示的資訊。 群組標頭和針對群組中每個圖示或游標重複的數據都有固定長度。 這可讓應用程式隨機存取資訊。
每個 RT_ICON 圖示或 RT_CURSOR 數據指標資源元件的格式與.ico/.cur檔案的格式非常類似。 每個影像都會儲存在 BITMAPINFO 結構中,後面接著圖示 XOR 遮罩的色彩裝置獨立位圖 (DIB) 位。 AND 遮罩的單色 DIB 位會遵循色彩 DIB 位。 數據指標和圖示之間的顯著差異在於,數據指標具有 LOCALHEADER 結構,而圖示則不會插入位圖數據。
因為 Windows Vista RT_ICON 圖示或 RT_CURSOR 數據指標資源可能包含 PNG 壓縮的影像數據。
對話框資源
對話框也是資源檔中的一個資源專案。 它包含一個 DLGTEMPLATE 對話框標頭結構,再加上對話框中每個控件的一個 DLGITEMTEMPLATE 結構。 DLGTEMPLATEEX 和 DLGITEMTEMPLATEEX 結構描述擴充對話框資源的格式。
字型資源
字型會以資源群組的形式儲存在資源檔中。 個別字型組成字型群組。 中 FONT 語句 資源定義語句。RC 檔案會定義每個字型。 資源中的每個個別字型都包含相關.fnt檔案的完整內容。 FONTGROUPHDR 結構會遵循 .res 檔案中的所有個別字型元件。
字型資源不會新增至特定應用程式的資源。 相反地,它們通常會新增至擴展名為 .fon 的可執行檔。 這些檔案通常是僅限資源 DLL,而不是應用程式。
功能表資源
功能表資源 包含一個 MENUHEADER 結構,後面接著一或多個 NORMALMENUITEM 或 POPUPMENUITEM 結構,一個用於功能表範本中的每個功能表項。 MENUEX_TEMPLATE_HEADER 和 MENUEX_TEMPLATE_ITEM 結構描述擴充功能表資源的格式。
消息表資源
消息表 是一項資源,其中包含格式化的文字,以顯示為錯誤訊息或消息框中。 訊息數據表資源的主要結構是 MESSAGE_RESOURCE_DATA 結構。
版本資源
版本資源的主要結構是 VS_FIXEDFILEINFO 結構。 其他結構包括 VarFileInfo 結構來儲存語言信息數據,以及 StringFileInfo 使用者定義字串資訊。 版本資源中的所有字串都是 Unicode 格式。 每個資訊區塊都會對齊 DWORD 界限。