TN020: konwencje nazewnictwa i numerowania identyfikatorów
Uwaga ta opisuje konwencje nazewnictwa i numerowania identyfikatorów, których MFC 2.0 używa dla zasobów, poleceń, ciągów, kontrolek i okien podrzędnych.
Konwencje nazewnictwa i numerowania identyfikatorów są przeznaczone do spełniania następujących wymagań:
Zapewnienie spójnego standardu nazewnictwa identyfikatorów używanych między bibliotekami MFC i aplikacjami MFC, które są obsługiwane przez edytor zasobów Visual C++.Ułatwia to programiście interpretację typu i źródła zasobu na podstawie identyfikatora.
Wyróżnienie silnej relacji jeden do jednego między niektórymi typami identyfikatorów.
Zapewnienie zgodności z szeroko używanymi już standardami nazewnictwa identyfikatorów w systemie Windows.
Podzielenie przestrzeni numerowania identyfikatorów.Numery identyfikatorów mogą być przypisane przez programistę, MFC, system Windows i zasoby edytowane w Visual C++.Odpowiednie partycjonowanie pomoże uniknąć powielania numerów identyfikatorów.
Konwencja nazewnictwa prefiksu identyfikatora
W aplikacji może wystąpić kilka typów identyfikatorów.Konwencja nazewnictwa identyfikatorów MFC definiuje prefiksy dla różnych typów zasobów.
MFC używa prefiksu "IDR_" do oznaczenia identyfikatora zasobu, który ma zastosowanie do wielu typów zasobów.Na przykład dla danej ramki okna, MFC wykorzystuje ten sam prefiks "IDR_" do wskazania menu, skrótu, ciągu i zasobu ikony.W poniższej tabeli pokazano różne prefiksy i ich wykorzystanie:
Prefiks |
Użyj |
---|---|
IDR_ |
Dla wielu typów zasobów (przede wszystkim dla menu, skrótów i wstążek). |
IDD_ |
Dla zasobów szablonu okna dialogowego (na przykład IDD_DIALOG1). |
IDC_ |
Dla zasobów kursora. |
IDI_ |
Dla zasobów ikony. |
IDB_ |
Dla zasobów mapy bitowej. |
IDS_ |
Dla zasobów ciągu. |
W ramach zasobu DIALOG, MFC przestrzega następujących konwencji:
Prefiks lub etykieta |
Użyj |
---|---|
IDOK, IDCANCEL |
Dla identyfikatorów standardowego przycisku polecenia. |
IDC_ |
Dla innych kontrolek okna dialogowego. |
Prefiks "IDC_" jest także używany dla kursorów.Ten konflikt nazw nie jest zwykle problemem, ponieważ typowa aplikacja będzie miała tylko kilka kursorów i wiele kontrolek okna dialogowego.
W ramach zasobu menu, MFC przestrzega następujących konwencji:
Prefiks |
Użyj |
---|---|
IDM_ |
Dla elementów menu, które nie korzystają z architektury poleceń MFC. |
ID_ |
Dla poleceń menu, które używają architektury poleceń MFC. |
Polecenia, które przestrzegają architektury poleceń MFC, muszą mieć procedurę obsługi poleceń ON_COMMAND i mogą mieć procedurę obsługi ON_UPDATE_COMMAND_UI.Jeśli te procedury obsługi poleceń są zgodne z architekturą poleceń MFC, będą funkcjonować prawidłowo, niezależnie czy są powiązane z poleceniem menu, przyciskiem paska narzędzi lub przyciskiem paska dialogowego.Ten sam prefiks "ID_" jest także używany dla ciągu menu podpowiedzi, wyświetlanego w pasku komunikatów programu.Większość elementów menu w aplikacji powinna być zgodna z konwencjami poleceń MFC.Wszystkie standardowe identyfikatory poleceń (na przykład ID_FILE_NEW) przestrzegają tej konwencji.
MFC używa również "IDP_" jako wyspecjalizowanej postaci ciągów (zamiast "IDS_").Ciągi z prefiksem "IDP_" są monitami, czyli ciągami użytymi w polach wiadomości. Ciągi "IDP_" mogą zawierać "%1" i "%2" jako symbole zastępcze ciągów określone przez program. Ciągi "IDP_" posiadają zazwyczaj tematy pomocy z nimi skojarzone, w przeciwieństwie do ciągów "IDS_". Ciągi "IDP_" są zawsze zlokalizowane, natomiast ciągi "IDS_" mogą nie być zlokalizowane.
Biblioteka MFC używa również prefiksu "IDW_" jako wyspecjalizowanej postaci identyfikatorów kontrolek (zamiast "IDC_").Te identyfikatory są przypisane do okien podrzędnych, takich jak widoki i rozdzielacze według klas framework.Identyfikatory implementacji MFC są poprzedzone prefiksem "AFX_".
Konwencja numerowania identyfikatorów
Poniższa tabela zawiera listę prawidłowych zakresów dla identyfikatorów określonych typów.Niektóre limity są limitami implementacji technicznej, a inne są konwencjami, które mają na celu zapobiec kolizji identyfikatorów użytkownika z wstępnie zdefiniowanymi identyfikatorami systemu Windows lub domyślnymi implementacjami MFC.
Stanowczo zaleca się definiowanie wszystkich identyfikatorów wewnątrz zalecanych zakresów.Dolna granica tych zakresów wynosi 1, ponieważ 0 nie jest używane.Zaleca się używać wspólnej konwencji i używać 100 lub 101 dla pierwszego identyfikatora.
Prefiks |
Typ zasobu |
Prawidłowy zakres |
---|---|---|
IDR_ |
wiele |
od 1 do 0x6FFF |
IDD_ |
szablony okna dialogowego |
od 1 do 0x6FFF |
IDC_,IDI_,IDB_ |
kursory, ikony, mapy bitowe |
od 1 do 0x6FFF |
IDS_, IDP_ |
ciągi ogólne |
od 1 do 0x7FFF |
ID_ |
polecenia |
od 0x8000 do 0xDFFF |
IDC_ |
kontrolki |
od 8 do 0xDFFF |
Przyczyny tych limitów zasięgu:
Zgodnie z konwencją, wartość 0 identyfikatora nie jest używana.
Ograniczenia implementacji systemu Windows ograniczają prawdziwe identyfikatory zasobów na mniejsze lub równe 0x7FFF.
Wewnętrzna struktura MFC zastrzega sobie następujące zakresy:
od 0x7000 do 0x7FFF (patrz afxres.h)
od 0xE000 do 0xEFFF (patrz afxres.h)
od 16000 do 18000 (patrz afxribbonres.h)
Te zakresy mogą ulec zmianie w przyszłych implementacjach MFC.
Kilka poleceń systemu Windows używa zakresu od 0xF000 od 0xFFFF.
Identyfikatory kontrolek od 1 do 7 są zarezerwowane dla standardowych kontrolek, takich jak IDOK i IDCANCEL.
Zakres od 0x8000 do 0xFFFF dla ciągów jest zarezerwowany dla menu podpowiedzi lub poleceń.