TN020: konwencje nazewnictwa i numerowania identyfikatorów

W tej notatce opisano konwencje nazewnictwa identyfikatorów i numerowania używane przez MFC 2.0 dla zasobów, poleceń, ciągów, kontrolek i okien podrzędnych.

Konwencje nazewnictwa i numerowania identyfikatorów MFC mają spełniać następujące wymagania:

  • Podaj spójny standard nazewnictwa identyfikatorów używany w bibliotece MFC i aplikacjach MFC obsługiwanych przez edytor zasobów języka Visual C++. Ułatwia to programistom interpretowanie typu i źródła zasobu z jego identyfikatora.

  • Podkreśl silną relację od 1 do 1 między określonymi typami identyfikatorów.

  • Zgodność z powszechnie używanymi standardami nazewnictwa identyfikatorów w systemie Windows.

  • Partycjonuj miejsce numerujące identyfikatory. Numery identyfikatorów mogą być przypisywane przez programistę, MFC, Windows i zasoby edytowane w języku Visual C++. Odpowiednie partycjonowanie pomoże uniknąć duplikowania numerów identyfikatorów.

Konwencja nazewnictwa prefiksów identyfikatorów

W aplikacji może wystąpić kilka typów identyfikatorów. Konwencja nazewnictwa identyfikatorów MFC definiuje różne prefiksy dla różnych typów zasobów.

MFC używa prefiksu "IDR_", aby wskazać identyfikator zasobu, który ma zastosowanie do wielu typów zasobów. Na przykład dla danego okna ramki MFC używa tego samego prefiksu "IDR_", aby wskazać menu, akcelerator, ciąg i zasób ikony. W poniższej tabeli przedstawiono różne prefiksy i ich użycie:

Prefiks Używanie
IDR_ W przypadku wielu typów zasobów (używanych głównie do menu, akceleratorów i wstążek).
IDD_ W przypadku zasobów szablonu okna dialogowego (na przykład IDD_DIALOG1).
IDC_ W przypadku zasobów kursora.
IDI_ Dla zasobów ikony.
IDB_ W przypadku zasobów mapy bitowej.
IDENTYFIKATORY_ W przypadku zasobów ciągów.

W ramach zasobu DIALOG MFC są zgodne z następującymi konwencjami:

Prefiks lub etykieta Używanie
IDOK, IDCANCEL W przypadku standardowych identyfikatorów przycisków push.
IDC_ W przypadku innych kontrolek okien dialogowych.

Prefiks "IDC_" jest również używany dla kursorów. Ten konflikt nazewnictwa nie jest zwykle problemem, ponieważ typowa aplikacja będzie mieć kilka kursorów i wiele kontrolek okna dialogowego.

W ramach zasobu menu MFC są zgodne z następującymi konwencjami:

Prefiks Używanie
IDM_ W przypadku elementów menu, które nie używają architektury poleceń MFC.
IDENTYFIKATOR_ W przypadku poleceń menu korzystających z architektury poleceń MFC.

Polecenia zgodne z architekturą poleceń MFC muszą mieć program obsługi poleceń ON_COMMAND i może mieć program obsługi ON_UPDATE_COMMAND_UI. Jeśli te programy obsługi poleceń są zgodne z architekturą poleceń MFC, będą działać poprawnie niezależnie od tego, czy są one powiązane z poleceniem menu, przyciskiem paska narzędzi lub przyciskiem paska dialogowego. Ten sam prefiks "ID_" jest również używany dla ciągu monitu menu wyświetlanego na 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) są zgodne z tą konwencją.

MFC używa również "IDP_" jako wyspecjalizowanej formy ciągów (zamiast "IDS_"). Ciągi z prefiksem "IDP_" są monitami, czyli ciągami używanymi w polach komunikatów. Ciągi "IDP_" mogą zawierać ciągi "%1" i "%2" jako symbole zastępcze ciągów określonych przez program. Ciągi "IDP_" zwykle mają skojarzone tematy pomocy, a ciągi "IDS_". Ciągi "IDP_" są zawsze zlokalizowane, a ciągi "IDS_" mogą nie być zlokalizowane.

Biblioteka MFC używa również prefiksu "IDW_" jako wyspecjalizowanej formy identyfikatorów kontrolek (zamiast "IDC_"). Te identyfikatory są przypisywane do okien podrzędnych, takich jak widoki i podziały według klas platformy. Identyfikatory implementacji MFC mają prefiks "AFX_".

Konwencja numerowania identyfikatorów

W poniższej tabeli wymieniono prawidłowe zakresy identyfikatorów określonych typów. Niektóre z limitów to limity implementacji technicznej, a inne to konwencje, które mają na celu zapobieganie kolizji identyfikatorów ze wstępnie zdefiniowanymi identyfikatorami systemu Windows lub domyślnymi implementacjami MFC.

Zdecydowanie zalecamy zdefiniowanie wszystkich identyfikatorów wewnątrz zalecanych zakresów. Niższy limit tych zakresów wynosi 1, ponieważ 0 nie jest używane. Zalecamy użycie wspólnej konwencji i użycie 100 lub 101 jako 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
IDENTYFIKATOR_ polecenia 0x8000 przez 0xDFFF
IDC_ kontrolki od 8 do 0xDFFF

Przyczyny tych limitów zakresów:

  • Zgodnie z konwencją wartość identyfikatora 0 nie jest używana.

  • Ograniczenia implementacji systemu Windows ograniczają rzeczywiste identyfikatory zasobów do mniejszego lub równego 0x7FFF.

  • Wewnętrzna struktura MFC zastrzega sobie następujące zakresy:

    • 0x7000 przez 0x7FFF (zobacz afxres.h)

    • 0xE000 przez 0xEFFF (zobacz afxres.h)

    • od 16000 do 18000 (zobacz afxribbonres.h)

    Te zakresy mogą ulec zmianie w przyszłych implementacjach MFC.

  • Kilka poleceń systemu Windows używa zakresu 0xF000 za pośrednictwem 0xFFFF.

  • Identyfikatory kontrolek od 1 do 7 są zarezerwowane dla standardowych kontrolek, takich jak IDOK i IDCANCEL.

  • Zakres 0x8000 przez 0xFFFF dla ciągów jest zarezerwowany dla wierszy menu dla poleceń.

Zobacz też

Uwagi techniczne według numerów
Uwagi techniczne według kategorii