共用方式為


TN020:ID 命名和編號慣例

此附注描述 MFC 2.0 用於資源、命令、字串、控制項和子視窗的識別碼命名和編號慣例。

MFC 識別碼命名和編號慣例旨在符合下列需求:

  • 提供 Visual C++ 資源編輯器所支援之 MFC 程式庫和 MFC 應用程式所使用的一致識別碼命名標準。 這可讓程式設計人員更輕鬆地從其識別碼解譯資源的類型和來源。

  • 強調特定識別碼類型之間的強式 1 對 1 關聯性。

  • 符合 Windows 中已廣泛使用的命名識別碼標準。

  • 分割識別碼編號空間。 程式設計人員、MFC、Windows 和 Visual C++編輯的資源可以指派識別碼。 適當的資料分割有助於避免重複識別碼。

識別碼前置詞命名慣例

應用程式中可能會發生數種類型的識別碼。 MFC 識別碼命名慣例會針對不同的資源類型定義不同的前置詞。

MFC 會使用前置詞 「IDR_」 來指出套用至多個資源類型的資源識別碼。 例如,針對指定的框架視窗,MFC 使用相同的 「IDR_」 前置詞來指出功能表、快速鍵、字串和圖示資源。 下表顯示各種前置詞及其使用方式:

Prefix 使用
IDR_ 適用于多個資源類型(主要用於功能表、快速鍵和功能區)。
Idd_ 針對對話方塊範本資源(例如,IDD_DIALOG1)。
IDC_ 針對資料指標資源。
IDI_ 針對圖示資源。
IDB_ 針對點陣圖資源。
IDS_ 針對字串資源。

在 DIALOG 資源內,MFC 會遵循下列慣例:

前置詞或標籤 使用
IDOK、IDCANCEL 針對標準按鈕識別碼。
IDC_ 對於其他對話方塊控制項。

「IDC_」 前置詞也用於資料指標。 此命名衝突通常不是問題,因為一般應用程式會有幾個資料指標和許多對話方塊控制項。

在功能表資源內,MFC 會遵循下列慣例:

Prefix 使用
Idm_ 對於不使用 MFC 命令架構的功能表項目。
ID_ 針對使用 MFC 命令架構的功能表命令。

遵循 MFC 命令架構的命令必須具有ON_COMMAND命令處理常式,而且可以有ON_UPDATE_COMMAND_UI處理常式。 如果這些命令處理常式遵循 MFC 命令架構,無論它們系結至功能表命令、工具列按鈕或對話方塊列按鈕,它們都會正常運作。 相同的「ID_」前置詞也用於程式消息列上顯示的功能表提示字串。 應用程式中大部分的功能表項目都應該遵循 MFC 命令慣例。 所有標準命令識別碼(例如,ID_FILE_NEW)都遵循此慣例。

MFC 也會使用 「IDP_」 作為特殊形式的字串(而不是 「IDS_」。 具有 「IDP_」 前置詞的字串是提示,也就是訊息方塊中使用的字串。 「IDP_」 字串可以包含 「%1」 和 「%2」 作為程式所決定字串的預留位置。 「IDP_」 字串通常有與其相關聯的說明主題,而 「IDS_」 字串則沒有。 「IDP_」 字串一律會當地語系化,而且 「IDS_」 字串可能不會當地語系化。

MFC 程式庫也會使用 「IDW_」 前置詞作為特殊形式的控制項識別碼(而不是 「IDC_」。 這些識別碼會指派給子視窗,例如架構類別的檢視和分割器。 MFC 實作識別碼前面會加上 「AFX_」。

ID-Numbering 慣例

下表列出特定類型識別碼的有效範圍。 有些限制是技術實作限制,有些是設計來防止識別碼與 Windows 預先定義識別碼或 MFC 預設實作相衝突的慣例。

強烈建議您在建議的範圍內定義所有識別碼。 這些範圍的下限為 1,因為未使用 0。 建議您使用一般慣例,並使用 100 或 101 作為第一個識別碼。

Prefix 資源類型 有效範圍
IDR_ 多個 1 到 0x6FFF
Idd_ 對話方塊範本 1 到 0x6FFF
IDC_,IDI_,IDB_ 資料指標、圖示、點陣圖 1 到 0x6FFF
IDS_,IDP_ 一般字串 1 到 0x7FFF
ID_ 命令 透過0xDFFF 0x8000
IDC_ 控制項 8 到 0xDFFF

這些範圍限制的原因:

  • 依照慣例,不會使用識別碼值 0。

  • Windows 實作限制會限制真正的資源識別碼小於或等於0x7FFF。

  • MFC 的內部架構會保留下列範圍:

    • 0x7000到0x7FFF(請參閱 afxres.h)

    • 0xE000到0xEFFF (請參閱 afxres.h)

    • 16000 到 18000 (見 afxribbonres.h)

    這些範圍可能會在未來的 MFC 實作中變更。

  • 數個 Windows 系統命令使用0xF000到0xFFFF的範圍。

  • 1 到 7 的控制項識別碼會保留給 IDOK 和 IDCANCEL 等標準控制項。

  • 字串0x8000到0xFFFF的範圍會保留給命令的功能表提示字元。

另請參閱

依編號顯示的技術提示
依分類區分的技術提示