跳轉到內容

Windows 程式設計/資源指令碼

來自華夏公益教科書,開放的書籍,開放的世界

Windows 平臺 SDK 包含一個名為 rc.exe 的特殊實用程式,即 資源指令碼編譯器。資源指令碼是 Windows 程式設計中一個強大的部分,任何優秀的程式設計師都應該知道如何有效地利用它。

有關特定資源的更多資訊,請參閱 資源指令碼參考

什麼是資源指令碼

[編輯 | 編輯原始碼]

資源編譯器編譯一種稱為 資源指令碼 的特殊型別的檔案。資源指令碼包含 GUI 資料,並且在編譯後,可以連結到程式中。然後程式可以訪問資源指令碼中包含的資料。需要注意的是,Windows 作業系統會出於各種目的訪問程式的資源。例如,右鍵單擊程式,然後單擊“屬性”。如果有,請單擊“版本”選項卡。此選項卡將包含一些描述程式的不同文字字串。這些文字字串都來自資源指令碼。

此外,每個人都熟悉通常每個程式都有一個獨特的圖示的事實。如果你希望你的程式可執行檔案使用一個特殊的圖示,你必須將其包含在一個資源指令碼中。

透過資源指令碼,可以在程式中儲存許多不同型別的資源。資源指令碼不是在程式中儲存此資訊的唯一方法,但它們比編寫硬 C 或 VB 程式碼來儲存和訪問它們要容易得多。

資源型別

[編輯 | 編輯原始碼]

以下是常見資源的列表:

  • 下拉選單
  • 彈出選單
  • 文字字串
  • 鍵盤加速鍵(按鍵組合,例如 [Ctrl]+[C] 用於複製文字)
  • 圖示
  • 點陣圖影像
  • 對話方塊
  • 版本資訊
  • 滑鼠游標

製作資源指令碼

[編輯 | 編輯原始碼]

編寫資源指令碼的語法類似於 C。例如,資源指令碼編譯器使用標準 C 預處理器。這很重要,因為你必須包含標頭檔案 <afxres.h> 來製作資源指令碼。此外,大多數資源指令碼都包含宏值,因此程式設計師經常將相關的宏定義儲存在標頭檔案“resource.h”中。這樣,相同的宏就可以包含在主程式檔案中並使用。

我們將在後面的章節中詳細討論資源;還有一個附錄列出了所有常見的資源型別,包括有關如何使用它們的說明。這個附錄位於 Windows 程式設計/資源指令碼參考

使用資源

[編輯 | 編輯原始碼]

一旦資源儲存在你的可執行檔案中,就有各種方法可以訪問它。這些方法根據你試圖訪問的資源型別而有所不同。例如,如果你想訪問一個字串資源,你需要使用 LoadString 函式;相應地,需要 LoadIcon 函式來訪問圖示。

要訪問資源,你必須擁有包含該資源的可執行檔案的例項控制代碼。這意味著,如果你獲得另一個可執行檔案(或 DLL)檔案的例項控制代碼,就可以遠端訪問資源!有時,程式設計師會建立僅包含資源的 DLL 檔案,供其他程式使用。

MAKEINTRESOURCE

[編輯 | 編輯原始碼]

MAKEINTRESOURCE 關鍵字,我們有時會在處理資源時看到,是一個重要的關鍵字,如果使用不正確,程式會崩潰(甚至無法編譯),所以花點時間理解它非常值得。

所有資源都儲存在一個名稱中,該名稱可以是字串或數字識別符號。如果是數字,則該數字必須不大於無符號 16 位整數(65535,最大)。所有資源都按名稱呼叫,即系統期望一個包含資源名稱的 Unicode 字串。但是,如果我們使用數字識別符號,我們需要通知系統我們這樣做,這樣它就不會混淆並嘗試將你的整數視為字串。為此,我們將 MAKEINTRESOURCE 宏傳遞給 make。宏接受一個引數 - 數字識別符號 - 它返回一個適合在系統中使用的字串指標。我們將在後面演示這一點。

下一章

[編輯 | 編輯原始碼]
華夏公益教科書