TN020: ID-Benennungs- und Nummerierungskonventionen
In diesem Hinweis werden die Benennungs- und -Nummerierungskonventionen für IDs erläutert, die in MFC 2.0 für Ressourcen, Befehle, Zeichenfolgen, Steuerelemente und untergeordnete Fenster verwendet werden.
Die MFC-Benennungs- und -Nummerierungskonventionen für IDs müssen folgende Anforderungen erfüllen:
Bereitstellen eines konsistenten ID-Benennungsstandards, der in den MFC-Bibliotheken und MFC-Anwendungen verwendet wird, die vom Visual C++-Ressourcen-Editor unterstützt werden. Damit kann der Programmierer den Typ und den Ursprung einer Ressource einfacher anhand seiner ID interpretieren.
Hervorheben der engen 1:1-Beziehung zwischen bestimmten Typen von IDs.
Gewährleisten von Konformität mit bereits weit verbreiteten Standards für die Benennung von IDs in Windows.
Partitionieren des ID-Nummerierungsbereichs. ID-Nummern können vom Programmierer sowie von in MFC, Windows und Visual C++ bearbeiteten Ressourcen zugewiesen werden. Mit der entsprechenden Partitionierung kann die Duplizierungen von ID-Nummern vermieden werden.
Die ID-Präfix-Namenskonvention
Einige ID-Typen können in einer Anwendung auftreten. Die MFC-Benennungskonvention für ID definiert unterschiedliche Präfixe für unterschiedliche Ressourcentypen.
MFC verwendet das Präfix "IDR_", um eine Ressourcen-ID anzugeben, die für mehrere Ressourcentypen gilt. So verwendet MFC z. B. in einem bestimmten Rahmenfenster dasselbe "IDR_"-Präfix, um eine Menü-, Zugriffstasten-, Zeichenfolgen- und Symbolressource anzugeben. In der folgenden Tabelle werden die verschiedenen Präfixe und ihre Verwendung aufgeführt:
Präfix | Verwendung |
---|---|
IDR_ | Für mehrere Ressourcentypen (wird hauptsächlich für Menüs, Zugriffstasten und Menübänder verwendet). |
IDD_ | Für Ressourcen der Dialogfeldvorlage (z. B. IDD_DIALOG1). |
IDC_ | Für Cursorressourcen. |
IDI_ | Für Symbolressourcen. |
IDB_ | Für Bitmapressourcen. |
IDS_ | Für Zeichenfolgenressourcen. |
Innerhalb einer DIALOG-Ressource folgt MFC diesen Konventionen:
Präfix oder Bezeichnung | Verwendung |
---|---|
IDOK, IDCANCEL | Für Standardschaltflächen-IDs. |
IDC_ | Für andere Dialogfeld-Steuerelemente. |
Das Präfix "IDC_" wird auch für Cursor verwendet. Dieser Namenskonflikt ist normalerweise kein Problem, da eine typische Anwendung über wenige Cursor und viele Dialogfeld-Steuerelemente verfügt.
Innerhalb einer Menüressource folgt MFC diesen Konventionen:
Präfix | Verwendung |
---|---|
IDM_ | Für Menüelemente, in denen nicht die MFC-Befehlsarchitektur verwendet wird. |
ID_ | Für Menübefehle, in denen MFC-Befehlsarchitektur verwendet wird. |
Befehle, die der MFC-Befehlsarchitektur folgen, müssen über einen ON_COMMAND Befehlshandler verfügen und einen ON_UPDATE_COMMAND_UI Handler haben. Wenn diese Befehlshandler der MFC-Befehlsarchitektur folgen, funktionieren sie unabhängig davon ordnungsgemäß, ob sie an einen Menübefehl, an eine Symbolleisten-Schaltfläche oder an eine Dialogleisten-Schaltfläche gebunden sind. Das gleiche "ID_"-Präfix wird auch für eine Zeichenfolge in einer Menüeingabeaufforderung verwendet, die auf der Statusleiste des Programms angezeigt wird. Die meisten Menüelemente in der Anwendung sollten den MFC-Befehlskonventionen folgen. Alle Standardbefehls-IDs (z. B. ID_FILE_NEW) folgen dieser Konvention.
MFC verwendet auch "IDP_" als eine spezielle Form von Zeichenfolgen (anstelle von "IDS_"). Zeichenfolgen mit dem Präfix "IDP_" sind Eingabeaufforderungen, d. h. Zeichenfolgen, die in Meldungsfeldern verwendet werden. "IDP_"-Zeichenfolgen können "%1" "und "%2" als Platzhalter für Zeichenfolgen enthalten, die vom Programm bestimmt werden. "IDP_"-Zeichenfolgen sind in der Regel Hilfethemen zugeordnet, während "IDS_"-Zeichenfolgen keine Hilfethemen zugeordnet sind. "IDP_"-Zeichenfolgen werden immer lokalisiert, und "IDS_"-Zeichenfolgen können nicht lokalisiert werden.
Die MFC-Bibliothek verwendet auch das Präfix "IDW_" als eine spezielle Form von Steuerelement-IDs (anstelle von "IDC_"). Diese IDs werden durch die .NET-Frameworkklassen untergeordneten Fenstern als Ansichten und Aufteilung zugewiesen. IDs für MFC-Implementierungen wird "AFX_" vorangestellt.
Die ID-Nummerierungskonvention
In der folgenden Tabelle werden die gültigen Bereiche für die IDs der bestimmten Typen aufgeführt. Einige der Grenzen sind technische Implementierungsgrenzen und andere sind Konventionen, die entwickelt wurden, um zu verhindern, dass Konflikte zwischen den IDs und den von Windows vordefinierten IDs oder MFC-Standardimplementierungen auftreten.
Es wird dringend empfohlen, dass Sie alle IDs innerhalb der empfohlenen Bereiche definieren. Die Untergrenze dieser Bereiche ist 1, da 0 nicht verwendet wird. Es wird empfohlen, die allgemeine Konvention einzuhalten, 100 oder 101 als erste ID zu verwenden.
Präfix | Ressourcentyp | Gültiger Bereich |
---|---|---|
IDR_ | Vielfaches | 1 bis 0x6FFF |
IDD_ | Dialogfeldvorlagen | 1 bis 0x6FFF |
IDC_,IDI_,IDB_ | Cursor, Symbole, Bitmaps | 1 bis 0x6FFF |
IDS_, IDP_ | Allgemeine Zeichenfolgen | 1 bis 0x7FFF |
ID_ | befehle | 0x8000 bis 0xDFFF |
IDC_ | controls | 8 bis 0xDFFF |
Gründe für diese Begrenzungen:
Standardmäßig wird der ID-Wert 0 nicht verwendet.
Durch Einschränkungen der Windows-Implementierung werden echte Ressourcen-IDs auf einen Wert kleiner oder gleich 0x7FFF eingeschränkt.
Das interne MFC-Framework reserviert diese Bereiche:
0x7000 bis 0x7FFF (siehe afxres.h)
0xE000 bis 0xEFFF (siehe afxres.h)
16000 bis 18000 (siehe afxribbonres.h)
Diese Bereiche ändern sich möglicherweise in zukünftigen MFC-Implementierungen.
Einige Windows-Systembefehle verwenden den Bereich von 0xF000 bis 0xFFFF.
Steuerelemente-IDs von 1 bis 7 sind für Standardsteuerelemente wie IDOK und IDCANCEL reserviert.
Der Bereich von 0x8000 bis 0xFFFF für Zeichenfolgen ist für Befehle in Menüeingabeaufforderungen reserviert.
Siehe auch
Technische Hinweise – nach Nummern geordnet
Technische Hinweise – nach Kategorien geordnet