TN020: ID 命名和編號慣例
這張便箋說明 ID 命名與編號 MFC 2.0 會使用的資源、 指令、 字串、 控制項和子視窗的慣例。
MFC ID 命名和編號慣例被為了符合下列需求:
提供一致的識別碼命名標準的 MFC 程式庫和 MFC 應用程式所支援的 Visual C++ 資源編輯器內適用。 這簡化了程式設計人員,都將受益的型別和原點將資源從它的 id。
強調的強式 1 對 1 關係某些類型的識別碼。
符合已經廣泛使用的標準命名 Windows 中的編號。
磁碟分割的 ID 編號的空間。 可以由程式設計師、 MFC、 視窗和 Visual C++ 編輯的資源指派 ID 編號。 適當的分割有助於避免重複的 ID 編號。
ID 前置詞命名慣例
在應用程式就會發生幾種類型的識別碼。 MFC ID 命名慣例會定義不同的資源類型的不同的首碼。
MFC 會使用"IDR_"的前置詞來表示會套用到多個資源類型的資源識別碼。 比方說,為指定的框架視窗中,MFC 會使用相同的"IDR_"前置詞來指示功能表、 快速鍵、 字串和圖示的資源。 下表顯示各種不同的前置詞和及其使用方式:
前置詞 |
使用 |
---|---|
IDR_ |
(主要是用於功能表、 快速鍵,以及型 (緞帶)) 的多個資源類型。 |
IDD_ |
對話方塊範本資源 (例如 IDD_DIALOG1)。 |
IDC_ |
游標資源。 |
IDI_ |
圖示資源。 |
IDB_ |
點陣圖資源。 |
IDS_ |
對各個字串資源。 |
在對話方塊資源,MFC 會遵循這些慣例:
前置詞或標籤 |
使用 |
---|---|
IDOK IDCANCEL |
標準的推入按鈕識別碼。 |
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 與 Windows 預先定義的 Id 或 MFC 互相預設實作的慣例。
我們強烈建議您定義在建議範圍內的所有 Id。 這些範圍的下限為 1,因為無法使用 0。 我們建議使用常見的慣例,並使用 100 或 101,作為第一個 id。
前置詞 |
資源類型 |
有效範圍 |
---|---|---|
IDR_ |
多個 |
1 到 0x6FFF |
IDD_ |
對話方塊範本 |
1 到 0x6FFF |
IDC_,IDI_,IDB_ |
資料指標,圖示、 點陣圖 |
1 到 0x6FFF |
IDS_ IDP_ |
一般的字串 |
1 到 0x7FFF |
ID_ |
命令 |
透過 0xDFFF 0x8000 |
IDC_ |
控制項 |
8 到 0xDFFF |
這些範圍限制的原因:
依照慣例,不使用的識別碼值為 0。
Windows 實作限制,則為 true 的資源應小於或等於 0x7FFF 的識別碼。
MFC 的內部架構實作保留兩個範圍: 0x7000 到 0x7FFF 和 0xE000 到 0xEFFF。
Windows 系統的數個命令使用 0xF000 透過 0xFFFF 的範圍。
1 到 7 的控制項 Id 被保留給標準的控制項,例如 IDOK 及 IDCANCEL。
0X8000 透過字串 0xFFFF 的範圍被保留給命令的選單提示。