TN020:ID 命名和編號慣例
這個附註說明 MFC 2.0 為資源、命令、字串、控制項和子視窗使用的 ID 編號和命名慣例。
MFC ID 編號和命名慣例不符合下列要求:
提供跨由 Visual C++ 資源編輯器支援的 MFC 程式庫和 MFC 應用程式使用具有一致的 ID 命名標準。 這讓程式設計者可以更容易的從其ID翻譯其類型和原點。
強調某些類型的 ID 一對一的關聯性。
依照廣泛使用 ID 姓名標準,為在 Windows 使用的 ID 命名。
分割 ID 編號空間。 識別碼可由程式設計人員、MFC、視窗和 Visual C++ 編輯之資源指派。 適當分割可協助避免 ID 編號重複。
ID 前置詞命名慣例
ID 的幾種類型的應用程式可能會發生。 ID 命名慣例的 MFC 定義不同的資源型別的不同的前置詞。
MFC 使用前置詞「IDR_」表示適用於多個資源類型的資源 ID。 例如,針對指定的框架視窗, MFC 會使用相同的「IDR_」前置詞表示功能表、快速鍵、字串和圖示資源。 下表顯示各種前置及其使用方式:
前置詞 |
用法 |
---|---|
IDR_ |
在多個資源類型 (主要用於功能表、快速鍵和功能區)。 |
IDD_ |
在對話方塊範本資源 (例如, IDD_DIALOG1)。 |
IDC_ |
針對資料指標資源。 |
IDI_ |
對於圖示資源。 |
IDB_ |
針對點陣圖資源。 |
IDS_ |
針對字串資源 |
在對話方塊資源中, MFC 會遵循下列慣例:
前置詞或標籤。 |
用法 |
---|---|
IDOK, IDCANCEL |
針對標準按鈕 ID。 |
IDC_ |
對於其他對話方塊控制項。 |
游標也使用「IDC_」為前置詞。 因為一般的應用程式將有少量的資料指標和許多對話方塊控制項,命名衝突通常不是問題。
在選單資源中, MFC 會遵循下列慣例:
前置詞 |
用法 |
---|---|
IDM_ |
對於沒有使用 MFC 命令結構的功能表項目。 |
ID_ |
對於使用 MFC 命令結構的功能表命令。 |
遵循 MFC 命令結構的命令必須有 ON_COMMAND 命令處理常式,而且有 ON_UPDATE_COMMAND_UI 處理常式。 如果這些命令處理常式追蹤的 MFC 命令結構,則它們會正常運作無論它們是否繫結至功能表命令、工具列按鈕或對話方塊列按鈕。 相同的「ID_」前置詞為在程式的訊息列顯示的功能表提示字串也使用。 大部分在應用程式的功能表項目會遵循 MFC 命令慣例。 所有標準命令 ID (例如, ID_FILE_NEW) 遵循這個慣例。
MFC 也使用「IDP_」,字串特定表單 (而不是「IDS_」)。 以「IDP_」為前置詞的字串是提示,也就是說,用於訊息方塊的字串。「IDP_」字串可能包含「%1」和「%2」做為程式相依的字串預留位置。「IDP_」字串通常有說明主題,而「IDS_」字串沒有。「IDP_」字串永遠當地語系化,而「IDS_」字串可能不會當地化。
MFC 程式庫也使用「IDW_」為前置詞,為特定的 ID 控制項表單 (而不是「IDC_」)。 這些 ID 指派至例如檢視和分隔器由架構類別的子視窗。 MFC 實作 ID 前加上「AFX_」作為前置詞。
ID 編號慣例
下表列出特定型別之 ID 的有效範圍。 某些限制為技術限制,其他的是設計來讓您的 ID 衝突視窗預先定義 ID 或 MFC 預設實作的慣例。
強烈建議您在建議的範圍內定義所有 ID。 因為沒有使用 0 ,所以這些範圍的下限是 1。 建議您使用通用慣例和使用 100 或 101 為第一個 ID.
前置詞 |
資源類型。 |
有效範圍 |
---|---|---|
IDR_ |
多個 |
1 個傳遞 0x6FFF |
IDD_ |
對話方塊範本 |
1 個傳遞 0x6FFF |
IDC_,IDI_,IDB_ |
游標,圖示,點陣圖 |
1 個傳遞 0x6FFF |
IDS_, IDP_ |
一般字串 |
1 個透過 0x7FFF |
ID_ |
命令 |
0x8000 透過 0xDFFF |
IDC_ |
控制項 |
8 個透過 0xDFFF |
範圍限制的原因:
依照慣例,沒有使用 ID 值為 0。
視窗實作條件限制為 true 的資源 ID 小於或等於 0x7FFF。
MFC 的內部框架保留這些範圍:
0x7000 透過 0x7FFF (請參閱) afxres.h
0xE000 傳遞 0xEFFF (請參閱) afxres.h
16000 至 18000 (請參閱) afxribbonres.h
這些範圍在未來 MFC 實作可能會變更。
幾個 Windows 系統命令來使用 0xF000 0xFFFF 的範圍。
控制項 ID 1 至 7 為標準控制項有保留例如 IDOK 和 IDCANCEL。
0x8000 範圍傳遞字串的 0xFFFF 為功能表提示是保留的輸入命令。