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的範圍會保留給命令的功能表提示字元。