Windows 程式設計/資源指令碼
Windows 平臺 SDK 包含一個名為 rc.exe 的特殊實用程式,即 資源指令碼編譯器。資源指令碼是 Windows 程式設計中一個強大的部分,任何優秀的程式設計師都應該知道如何有效地利用它。
有關特定資源的更多資訊,請參閱 資源指令碼參考。
資源編譯器編譯一種稱為 資源指令碼 的特殊型別的檔案。資源指令碼包含 GUI 資料,並且在編譯後,可以連結到程式中。然後程式可以訪問資源指令碼中包含的資料。需要注意的是,Windows 作業系統會出於各種目的訪問程式的資源。例如,右鍵單擊程式,然後單擊“屬性”。如果有,請單擊“版本”選項卡。此選項卡將包含一些描述程式的不同文字字串。這些文字字串都來自資源指令碼。
此外,每個人都熟悉通常每個程式都有一個獨特的圖示的事實。如果你希望你的程式可執行檔案使用一個特殊的圖示,你必須將其包含在一個資源指令碼中。
透過資源指令碼,可以在程式中儲存許多不同型別的資源。資源指令碼不是在程式中儲存此資訊的唯一方法,但它們比編寫硬 C 或 VB 程式碼來儲存和訪問它們要容易得多。
以下是常見資源的列表:
- 下拉選單
- 彈出選單
- 文字字串
- 鍵盤加速鍵(按鍵組合,例如 [Ctrl]+[C] 用於複製文字)
- 圖示
- 點陣圖影像
- 對話方塊
- 版本資訊
- 滑鼠游標
編寫資源指令碼的語法類似於 C。例如,資源指令碼編譯器使用標準 C 預處理器。這很重要,因為你必須包含標頭檔案 <afxres.h> 來製作資源指令碼。此外,大多數資源指令碼都包含宏值,因此程式設計師經常將相關的宏定義儲存在標頭檔案“resource.h”中。這樣,相同的宏就可以包含在主程式檔案中並使用。
我們將在後面的章節中詳細討論資源;還有一個附錄列出了所有常見的資源型別,包括有關如何使用它們的說明。這個附錄位於 Windows 程式設計/資源指令碼參考。
一旦資源儲存在你的可執行檔案中,就有各種方法可以訪問它。這些方法根據你試圖訪問的資源型別而有所不同。例如,如果你想訪問一個字串資源,你需要使用 LoadString 函式;相應地,需要 LoadIcon 函式來訪問圖示。
要訪問資源,你必須擁有包含該資源的可執行檔案的例項控制代碼。這意味著,如果你獲得另一個可執行檔案(或 DLL)檔案的例項控制代碼,就可以遠端訪問資源!有時,程式設計師會建立僅包含資源的 DLL 檔案,供其他程式使用。
MAKEINTRESOURCE 關鍵字,我們有時會在處理資源時看到,是一個重要的關鍵字,如果使用不正確,程式會崩潰(甚至無法編譯),所以花點時間理解它非常值得。
所有資源都儲存在一個名稱中,該名稱可以是字串或數字識別符號。如果是數字,則該數字必須不大於無符號 16 位整數(65535,最大)。所有資源都按名稱呼叫,即系統期望一個包含資源名稱的 Unicode 字串。但是,如果我們使用數字識別符號,我們需要通知系統我們這樣做,這樣它就不會混淆並嘗試將你的整數視為字串。為此,我們將 MAKEINTRESOURCE 宏傳遞給 make。宏接受一個引數 - 數字識別符號 - 它返回一個適合在系統中使用的字串指標。我們將在後面演示這一點。