共用方式為


如何:管理符號

當您建立新的資源或資源物件時,開發環境會為其指派預設符號名稱,例如 IDD_DIALOG1 。 您可以使用 屬性視窗 來變更預設符號名稱,或變更已與資源相關聯的任何符號名稱。

對於與單一資源相關聯的符號,您也可以使用 [ 屬性 ] 視窗來變更符號值。 您可以使用 [ 資源符號] 對話方塊 來變更目前未指派給資源的符號值。

一般而言,所有符號定義都會儲存在 中 Resource.h 。 不過,您可能需要變更這 Include 檔案名稱,好讓您可以,比方說在相同目錄中處理多個資源檔。

注意

如果您的專案尚未包含 .rc 檔案,請參閱 如何:建立資源

符號名稱限制

符號名稱限制如下所示:

  • 所有 符號 在應用程式範圍內都必須是唯一的,才能防止標頭檔中的符號定義衝突。

  • 符號名稱的有效字元包括 A-Z、a-z、0-9 和底線 ( _ )。

  • 符號名稱不能以數位開頭,而且限制為 247 個字元。

  • 符號名稱不能包含空格。

  • 符號名稱不區分大小寫,但會保留第一個符號定義的大小寫。

    定義符號的標頭檔是由資源編譯器/編輯器和 C++ 程式用來參考資源檔中定義的資源。 對於只有大小寫不同的兩個符號名稱,C++ 程式會將其視為兩個不同的符號,而資源編譯器/編輯器則會將這兩個名稱視為參考到單一符號。

注意

如果您未遵循下面概述的標準符號名稱配置 (ID*_[keyword]),而且您的符號名稱會與資源腳本編譯器已知的關鍵字相同,則嘗試建置資源腳本檔案會導致看似隨機的錯誤產生,而難以診斷。 若要避免這個問題,請遵守標準命名配置。

符號名稱具有描述性前置詞,指出它們所代表的資源或物件種類。 這些描述性前置詞的開頭為文字組合識別碼。 Microsoft Foundation Class (MFC) 程式庫會使用下表所示的符號命名慣例:

類別 Prefix 使用
資源 IDR_、IDD_、IDC_、IDI_、IDB_ 快速鍵或功能表(以及相關聯的或自訂資源)、對話方塊、游標、圖示、點陣圖
功能表項目 ID_ 功能表項目
命令 ID_ Command
控制項和子視窗 IDC_ 控制
字串 IDS_ 字串資料表中的字串
MFC AFX_ 保留給預先定義的 MFC 符號

變更符號名稱(識別碼)

  1. 在 [ 資源檢視] 中,選取資源。

  2. 在 [ 屬性 ] 視窗中,輸入新的符號名稱,或從 [識別碼 ] 方塊中的 現有符號清單中選取。

    如果您輸入新的符號名稱,則會自動指派值。

注意

您可以使用 [ 資源符號] 對話方塊 來變更目前未指派給資源的符號名稱。

符號值限制

符號值可以是預處理器指示詞的一般方式 #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
    
  • 您的應用程式可能具有現有檔案,包含以運算式定義的符號。

變更符號值

  1. 在 [ 資源檢視] 中,選取資源。

  2. 在 [ 屬性] 視窗中,輸入符號名稱後面接著等號,並在 [識別碼 ] 方塊中 輸入整數,例如:

    IDC_EDITNAME=5100
    

    下一次儲存專案時,會在符號標頭檔中儲存新值。 只有符號名稱會顯示在 [識別碼] 方塊中,且驗證之後不會顯示等號和值。

變更或刪除符號

在 [ 資源符號] 對話方塊中 ,您可以編輯或刪除尚未指派給資源或物件的現有符號。

變更未指派的符號

  1. 在 [ 名稱] 方塊中,選取未指派的符號,然後選擇 [ 變更 ]。

  2. 在 [變更符號 ] 對話方塊中提供的 方塊中編輯符號的名稱或值。

注意

若要變更指派給資源或物件的符號,您必須使用資源編輯器或 [屬性 ] 視窗。

刪除未指派 (未使用) 的符號

在 [ 資源符號] 對話方塊中,選取您要刪除的符號,然後選擇 [ 刪除 ]。

注意

在刪除資源檔中未使用的符號之前,請確定它不會在程式的其他位置或編譯時期所包含的資源檔使用。

包含符號

當開發環境第一次讀取另一個應用程式所建立的資源檔時,會將所有包含的標頭檔標示為唯讀。 雖然您可以使用 [ 資源包含] 對話方塊 來新增其他唯讀符號標頭檔。

您可能想要使用唯讀符號定義的其中一個原因是,您想要將它們在數個專案之間共用的符號檔中運用。

當您搭配使用現有資源與符號定義,且這些定義使用運算式而非是簡單的整數來定義符號值,您也可以使用包含的符號檔。 例如:

#define   IDC_CONTROL1 2100
#define   IDC_CONTROL2 (IDC_CONTROL1+1)

環境會正確解譯這些計算的符號,前題是:

  • 計算的符號會放置在唯讀符號檔案。

  • 您的資源檔包含已指派這些計算的符號的資源。

  • 預期是數值運算式。

注意

如果預期字串或數值運算式,則不會評估運算式。

在資源檔中包含共用 (唯讀) 符號

  1. 在 [資源檢視] 中 ,以滑鼠右鍵按一下 . rc 檔案,然後選取 [ 資源包含 ]。

  2. 在 [ 唯讀符號指示 詞] 方塊中 #include ,使用編譯器指示詞指定您要保留唯讀符號的檔案。

    請勿呼叫 檔案 Resource.h ,因為這是主要符號標頭檔通常使用的檔案名。

    注意

    您在 [ 唯讀符號指示 詞] 方塊中輸入的內容,會包含在資源檔中,與您輸入它完全相同。 請確定您輸入的內容不包含任何拼字或語法錯誤。

    使用 [唯讀符號指示詞] 方塊,僅包含具有符號定義的檔案。 請勿包含資源定義,否則會在儲存檔案時建立重複的資源定義。

  3. 將符號放在您指定的檔案。

    每次開啟資源檔時,都會評估檔案中包含的符號,但在儲存檔案時不會取代這些符號。

  4. 選取 [確定]。

變更資源符號標頭檔名稱

  1. 在 [資源檢視] 中 ,以滑鼠右鍵按一下 . rc 檔案,然後選擇 [ 資源包含 ]。

  2. 在 [ 符號標頭檔 ] 方塊中,輸入包含檔案的新名稱。

需求

Win32

另請參閱

資源識別項 (符號)
如何:建立符號
預先定義的符號識別碼