![]() |
什麼是 .res 的「相關文件」?
|
筆 者 在 08/11/97 介 紹 了 VB 所 提 供 的 Calendar
控 制 元 件 , 在 此 一 控 制 元 件 的 原 始 程 式 碼 相 關 模 組 中
, 以 .res 為 副 檔 名 的「相 關 文 件」是 書 中 未 曾 介 紹 過 的 , 如
下 圖 , 這 到 底 是 怎 樣 的 模 組 呢 ? 又 有 什 麼 用 處 呢 ?
如 果 使 用 C/C++ 寫 過 Windows 的 程 式 , 對「資 源 檔」(resource file)應 該 不 陌 生 , Calendar 控 制 元 件 中 的 calendar.res 檔 案 , 就 是 標 準 的 資 源 檔 。 何 謂「資 源」?對 於 使 用 C/C++ 所 開 發 的 Windows 程 式 而 言 , 字 串 、 BMP 圖 片 、 ICO 圖 示 、 功 能 表 的 定 義 、 交 談 窗 的 定 義 … 等 , 都 算 是 資 源 的 一 部 份 , 而 且 在 程 式 的 開 發 過 程 中 , 會 被 存 放 成「資 源 檔」。「資 源 檔」與「執 行 檔」在 編 譯 階 段 是 兩 種 獨 立 的 檔 案 , 直 到 最 後 連 結 時 , 才 結 合 在 一 起 成 為 最 後 的 執 行 檔 。 為 什 麼 要 將 資 源 檔 與 執 行 檔 分 開 呢 ? 舉 例 來 說 , 某 軟 體 預 定 發 行「中 文」及「英 文」兩 種 版 本 , 如 果 我 們 將 程 式 中 所 需 使 用 的「字 串」寫 死 在 程 式 裡 面 , 那 麼 當 我 們 想 將 程 式 中 的 所 有「字 串」改 成 另 一 種 語 言 時 , 就 會 變 得 很 麻 煩 , 如 果 將 這 些 字 串 放 在 獨 立 的「資 源 檔」之 中 , 則 發 行 不 同 語 言 的 版 本 時 , 只 要 修 改「資 源 檔」即 可 , 而 不 必 動 到 任 何 程 式 碼 。 資 料 檔 對 VB 程 式 來 說 , 還 有 另 一 項 好 處 , 假 設 我 們 在 程 式 中 會 使 用 到 許 多 圖 片 , 則 一 般 的 方 法 是 將 圖 片 設 定 給 Image 控 制 元 件 , 但 {控 制 元 件 +圖 片 }比 {圖 片 }本 身 要 浪 費 記 憶 體 , 若 使 用 資 源 檔 來 存 放 圖 片 , 則 可 節 省 {控 制 元 件 }部 分 的 記 憶 體 。 定 義 資 源 的 方 法資 源 的 種 類 很 多 , 筆 者 在 此 只 說 明 最 為 常 用 的「字 串」及「圖 片」兩 種 , 請 參 考 以 下 的「字 串」定 義 , 其 中 定 義 了 三 個 字 串 , 而 字 串 的 編 號 分 別 是 100、 101、 及 200。 再 來 看 以 下 的「圖 片」定 義 , 其 中 定 義 了 兩 個 .ico 的 圖 示 檔 及 一 個 .bmp 的 圖 片 檔 , 而 兩 個 .ico 圖 示 分 別 取 名 為 sun 及 cloud、 .bmp 圖 片 則 取 名 為 logo。 以 上 的 定 義 只 要 使 用 文 字 編 輯 器 (例 如 記 事 本 程 式 )輸 入 成 為 文 字 檔 即 可 。 從「資 源 定 義 檔」到「資 源 檔」「 資 源 定 義 檔」是 給 我 們 看 的 , 它 必 須 編 譯 成「資 源 檔」, 才 能 夠 提 供 給 程 式 使 用 , 此 時 必 須 使 用「資 源 編 譯 器」。 「 資 源 編 譯 器」程 式 可 以 在 VB5 光 碟 中 的 \Tools\Resource 目 錄 中 找 到 , 檔 案 名 稱 為 rc.exe, 這 是 在 DOS 模 式 底 下 執 行 的 程 式 , 指 令 下 法 是 : rc 資源定義檔 若 執 行 成 功 , 則 會 產 生 以 .res 為 副 檔 名 的「資 源 檔」。 如 何 在 VB 程 式 中 使 用「資 源 檔」的 資 源假 設 已 有 一 XXX.res 資 源 檔 , 其 中 定 義 的 字 串 及 圖 片 如 下 : 則 使 用 這 些 資 源 的 過 程 如 下 : 1. 利 用 功 能 表 的「檔 案 /新 增 檔 案」將 XXX.res 加 入 於 專 案 中 。 2. 程 式 中 使 用「字 串」資 源 的 方 法 如 下 : 例 如「S = LoadResString(100)」 , 則 S 將 等 於 "定義字串一"。 3. 程 式 中 載 入 .ico 圖 示 及 .bmp 圖 片 的 方 法 分 別 如 下 : 例 如 : |