如何:管理符號
當您建立新的資源或資源物件時,開發環境會為其指派預設符號名稱,例如 IDD_DIALOG1
。 您可以使用 屬性視窗 來變更預設符號名稱,或變更任何已與資源相關聯的符號名稱。
對於與單一資源相關聯的符號,您也可以使用 [ 屬性 ] 視窗來變更符號值。 您可以使用 [ 資源符號] 對話框 來變更目前未指派給資源的符號值。
一般而言,所有符號定義都會儲存在 中 Resource.h
。 不過,您可能需要變更這 Include 檔案名稱,好讓您可以,比方說在相同目錄中處理多個資源檔。
注意
如果您的專案尚未包含 .rc 檔案,請參閱 如何:建立資源。
符號名稱限制
符號名稱限制如下所示:
所有 符號 在應用程式範圍內都必須是唯一的,才能防止頭檔中的符號定義衝突。
符號名稱的有效字元包括 A-Z、a-z、0-9 和底線 ( _ )。
符號名稱不能以數字開頭,而且限製為247個字元。
符號名稱不能包含空格。
符號名稱不區分大小寫,但會保留第一個符號定義的大小寫。
定義符號的標頭檔是由資源編譯器/編輯器和 C++ 程式用來參考資源檔中定義的資源。 對於只有大小寫不同的兩個符號名稱,C++ 程式會將其視為兩個不同的符號,而資源編譯器/編輯器則會將這兩個名稱視為參考到單一符號。
注意
如果您未遵循下面概述的標準符號名稱配置 (ID*_[keyword]),而且您的符號名稱會與資源腳本編譯程式已知的關鍵詞相同,則嘗試建置資源腳本檔案會導致看似隨機的錯誤產生,而難以診斷。 若要避免這個問題,請遵守標準命名配置。
符號名稱具有描述性前置詞,指出它們所代表的資源或物件種類。 這些描述性前置詞的開頭為文字組合識別碼。 Microsoft Foundation Class (MFC) 連結庫會使用下表所示的符號命名慣例:
類別 | 前置詞 | 使用 |
---|---|---|
資源 | IDR_、IDD_、IDC_、IDI_、IDB_ | 快捷鍵或功能表(以及相關聯的或自定義資源)、對話框、游標、圖示、點陣圖 |
功能表項目 | ID_ | 功能表項目 |
命令 | ID_ | Command |
控制項和子視窗 | IDC_ | 控制 |
字串 | IDS_ | 字串資料表中的字串 |
MFC | AFX_ | 保留給預先定義的 MFC 符號 |
變更符號名稱(識別元)
在 [ 資源檢視] 中,選取資源。
在 [屬性] 視窗中,輸入新的符號名稱,或從 [標識符] 方塊中的現有符號清單中選取。
如果您輸入新的符號名稱,則會自動指派值。
注意
您可以使用 [ 資源符號] 對話框 來變更目前未指派給資源的符號名稱。
符號值限制
符號值可以是預處理器指示詞的一般方式 #define
表示的任何整數。 以下是符號值的一些範例:
18
4001
0x0012
-3456
快捷鍵、位圖、游標、對話框、圖示、功能表、字串數據表和版本資訊等資源的符號值必須是介於 0 到 32,767 之間的十進位數,但不能是十六進位。 資源組件 (例如對話方塊控制項或字串資料表中的個別字串) 的符號值可以從 0 到 65,534 或從 -32,768 到 32,767。 如需數位範圍的詳細資訊,請參閱 TN023:標準 MFC 資源。
資源符號是16位數位。 您可以將它們輸入為帶正負號或不帶正負號,不過,它們會在內部用作無符號整數,因此負數會轉換成對應的正值。
符號值的一些限制如下:
Visual Studio 開發環境和 MFC 將一些數字範圍用於特殊用途。 MFC 會保留最大顯著性位元的所有數字 (-32,768 到 -1 或 32,768 到 65,534,根據正負號)。
您無法使用其他符號字串來定義符號值。 例如,不支援下列符號定義:
#define IDC_MYEDIT IDC_OTHEREDIT //not supported
您無法使用預處理器巨集搭配自變數做為值定義。 下列範例不是有效的表達式,不論在編譯時期評估為什麼
ID
:#define IDD_ABOUT ID(7) //not supported
您的應用程式可能具有現有檔案,包含以運算式定義的符號。
變更符號值
在 [ 資源檢視] 中,選取資源。
在 [屬性] 視窗中,輸入符號名稱後面接著等號,並在 [標識符] 方塊中輸入整數,例如:
IDC_EDITNAME=5100
下一次儲存專案時,會在符號標頭檔中儲存新值。 只有符號名稱會顯示在 [標識符] 方塊中,且驗證之後不會顯示等號和值。
變更或刪除符號
在 [ 資源符號] 對話框中,您可以編輯或刪除尚未指派給資源或對象的現有符號。
變更未指派的符號
在 [ 名稱] 方塊中,選取未指派的符號,然後選擇 [ 變更]。
在 [變更符號] 對話框中提供的方塊中編輯符號的名稱或值。
注意
若要變更指派給資源或物件的符號,您必須使用資源編輯器或 [屬性 ] 視窗。
刪除未指派 (未使用) 的符號
在 [ 資源符號] 對話框中,選取您要刪除的符號,然後選擇 [ 刪除]。
注意
在刪除資源檔中未使用的符號之前,請確定它不會在程式的其他位置或編譯時期所包含的資源檔使用。
包含符號
當開發環境第一次讀取另一個應用程式所建立的資源檔時,會將所有包含的標頭檔標示為唯讀。 雖然您可以使用 [ 資源包含] 對話框 來新增其他只讀符號頭檔。
您可能想要使用唯讀符號定義的其中一個原因是,您想要將它們在數個專案之間共用的符號檔中運用。
當您搭配使用現有資源與符號定義,且這些定義使用運算式而非是簡單的整數來定義符號值,您也可以使用包含的符號檔。 例如:
#define IDC_CONTROL1 2100
#define IDC_CONTROL2 (IDC_CONTROL1+1)
環境會正確解譯這些計算的符號,前題是:
計算的符號會放置在唯讀符號檔案。
您的資源檔包含已指派這些計算的符號的資源。
預期是數值運算式。
注意
如果預期字串或數值運算式,則不會評估運算式。
在資源檔中包含共用 (唯讀) 符號
在 [資源檢視] 中,以滑鼠右鍵按兩下 .rc 檔案,然後選取 [資源包含]。
在 [ 只讀符號指示 詞] 方塊中
#include
,使用編譯程式指示詞指定您要保留只讀符號的檔案。請勿呼叫 檔案
Resource.h
,因為這是主要符號頭檔通常使用的檔名。注意
您在 [ 只讀符號指示 詞] 方塊中輸入的內容,會包含在資源檔中,與您輸入它完全相同。 請確定您輸入的內容不包含任何拼字或語法錯誤。
使用 [只讀符號指示詞] 方塊,僅包含具有符號定義的檔案。 請勿包含資源定義,否則會在儲存盤案時建立重複的資源定義。
將符號放在您指定的檔案。
每次開啟資源檔時,都會評估檔案中包含的符號,但在儲存盤案時不會取代這些符號。
選取 [確定]。
變更資源符號標頭檔名稱
在 [資源檢視] 中,以滑鼠右鍵按兩下 .rc 檔案,然後選擇 [資源包含]。
在 [ 符號頭檔 ] 方塊中,輸入包含檔案的新名稱。
需求
Win32