Share via


資源檔案格式

本節描述資源編譯器根據資源定義檔的內容所建立的二進位資源檔案格式。 此檔案通常副檔名為 .res。 連結器會將 .res 檔案重新格式化為資源物件檔,然後將它連結到應用程式的可執行檔。

二進位資源檔是由數個串連的資源專案所組成。 每個專案都包含資源標頭和該資源的資料。 資源標頭在檔案中對齊 DWORD,並包含下列專案:

  • 包含資源標頭大小的DWORD
  • 包含資源資料大小的DWORD
  • 資源類型
  • 資源名稱
  • 其他資源資訊

RESOURCEHEADER結構描述此標頭的格式。 資源的資料會遵循資源標頭,而且是每種資源類型特有的。 有些資源也會採用資源特定的群組標頭結構,以提供資源群組的相關資訊。

快速鍵資料表資源

快速鍵資料表是資源檔中的一個資源專案。 它沒有群組標頭。 ACCELTABLEENTRY結構描述快速鍵資料表中的每個專案。 允許多個快速鍵資料表。

資料指標和圖示資源

系統會處理每個圖示和游標做為單一檔案。 不過,這些會儲存在 .res 檔案和可執行檔中,做為 一組RT_GROUP_ICON 圖示資源或資料指標資源的 RT_GROUP_CURSOR 群組。 圖示和游標資源的檔案格式類似。 在 .res 檔案中,資源群組標頭會遵循所有個別圖示或資料指標群組元件。

圖示和游標資源的群組標頭包含 NEWHEADER 結構加上一或多個 RESDIR 結構。 每個圖示或游標都有一個 RESDIR 結構。 群組標頭包含應用程式選取要顯示的正確圖示或游標的資訊。 群組標頭和針對群組中每個圖示或游標重複的資料都有固定長度。 這可讓應用程式隨機存取資訊。

每個 RT_ICON 圖示或 RT_CURSOR 資料指標資源元件的格式與 .ico/.cur 檔案的格式非常類似。 每個影像都會儲存在 BITMAPINFO 結構中,後面接著色彩與裝置無關的點陣圖, (DIB) 圖示 XOR 遮罩的位。 AND遮罩的單色 DIB 位遵循色彩 DIB 位。 資料指標和圖示之間的顯著差異在於,資料指標具有點陣圖資料之前插入熱點的 LOCALHEADER 結構,而圖示則不會。

由於 Windows Vista RT_ICON 圖示或 RT_CURSOR 游標資源可能包含 PNG 壓縮的影像資料。

對話方塊資源

對話方塊也是資源檔中的一個資源專案。 它包含一個 DLGTEMPLATE 對話方塊標頭結構,以及對話方塊中每個控制項的 一個 DLGITEMTEMPLATE 結構。 DLGTEMPLATEEXDLGITEMTEMPLATEEX結構描述擴充對話方塊資源的格式。

字型資源

字型會以資源群組的形式儲存在資源檔中。 個別字型組成字型群組。 中的 FONT 語句 資源定義語句。RC 檔案會定義每個字型。 資源中的每個個別字型都包含相關 .fnt 檔案的完整內容。 FONTGROUPHDR結構會遵循 .res 檔案中的所有個別字型元件。

字型資源不會新增至特定應用程式的資源。 相反地,它們通常會新增至副檔名為 .fon 的可執行檔。 這些檔案通常是僅限資源 DLL,而不是應用程式。

功能表資源是由MENUHEADER結構所組成,後面接著一或多個NORMALMENUITEMPOPUPMENUITEM結構,一個用於功能表範本中的每個功能表項目。 MENUEX_TEMPLATE_HEADERMENUEX_TEMPLATE_ITEM結構描述擴充功能表資源的格式。

消息表資源

消息表是一種資源,其中包含格式化文字,可顯示為錯誤訊息或訊息方塊中。 消息表資源的主要結構是 MESSAGE_RESOURCE_DATA 結構。

版本資源

版本資源中的主要結構是 VS_FIXEDFILEINFO 結構。 其他結構包括 VarFileInfo 結構來儲存語言資訊資料,以及使用者定義字串資訊的 StringFileInfo 。 版本資源中的所有字串都是 Unicode 格式。 每個資訊區塊都會對齊 DWORD 界限。