TN022: Standard-Befehle-Implementierung

Diese Applikationsschrift beschreibt die Standardbefehl Implementierungen von MFC 2.0 bereitgestellt. Bitte achten Sie darauf, technischer Hinweis 21 zuerst zu lesen, da das beschreibt die Mechanismen verwendet, um viele der standard-Befehle implementieren.

Diese Beschreibung wird davon ausgegangen wissen über die MFC-Architekturen, APIs und gemeinsamen Programmierstil. Dokumentierte sowie ohne Papiere "Implementierung nur" APIs werden beschrieben. Dies ist kein Ort zu starten, um die Features von oder MFC Programmieren lernen. Bitte finden Sie im Visual C++ Programmer's Guide für allgemeine Informationen und Informationen über dokumentierte APIs.

Das Problem

MFC definiert viele Standardbefehls-IDs in der Header-Datei AFXRES.H. Framework-Unterstützung für diese Befehle variiert. Nicht verstehen, wo und wie die Framework-Klassen diese Befehle werden behandelt nur zeigen Ihnen, wie das Framework arbeitet intern aber bieten nützliche Informationen über das Anpassen der Standardimplementierungen und hoffentlich lernen Sie einige Techniken zum Implementieren Ihrer eigenen Befehlshandler.

Inhalt dieser technische Hinweis

Jedes Befehls-ID wird in zwei Abschnitten beschrieben.:

Die meisten Standard-Befehl-Implementierungen sind in das Framework Basisklasse Meldungszuordnung vorverdrahtet. Es gibt einige Befehl Implementierungen erfordern explizite Verdrahtung in der abgeleiteten Klasse. Diese sind unter "Hinweis" beschrieben. Wenn Sie die richtigen Optionen in Anwendungs-Assistenten ausgewählt haben, werden diese Standard-Handler für Sie in die generierte Skelettanwendung verbunden werden.

Namenskonvention

Standard-Befehle folgen eine einfache Benennungskonvention, die wir empfehlen, dass Sie wenn möglich verwenden. Die meisten Befehle befinden sich in standard stellen in einer Anwendung Menüleiste. Der symbolische Name des Befehls beginnt mit "ID_" gefolgt vom Namen wenn Sie standardmäßige Popup-Menü, gefolgt vom Namen Menü-Element. Der symbolische Namen ist in Großbuchstaben mit Unterstrich Worttrennungen. Für Befehle, die nicht standard-Menü Element-Namen verfügen, ist ein logische Befehlsnamen definiert beginnt mit "ID_" (z.B. ID_NEXT_PANE).

Wir verwenden das Präfix "ID_" Befehle an, die entworfen sind, um Menüelemente, Symbolleisten-Schaltflächen oder andere Befehl Benutzeroberflächen Objekte gebunden zu sein. Befehlshandler Behandlung von "ID_" Befehlen sollten die ON_COMMAND und ON_UPDATE_COMMAND_UI Mechanismen der MFC Befehl Architektur verwenden.

Wir empfehlen, dass Sie das Norm "IDM_" Präfix für Menüelemente verwenden die nicht folgen Sie die Befehl Architektur und Menü-spezifische Code zum Aktivieren und deaktivieren sie benötigen. Natürlich sollte die Anzahl der Befehle im Menü klein sein, da nach die MFC Befehl Architektur nicht nur Befehlshandler stärker macht (da sie mit Symbolleisten arbeiten) aber den Befehl Handlercode wiederverwendbare macht.

ID-Bereiche

Entnehmen Sie bitte für weitere Details über die Verwendung von ID-Bereiche in MFC technischer Hinweis 20.

Standardmäßige MFC-Befehle liegen im Bereich von 0xE000 bis 0xEFFF. Bitte verlasse dich nicht auf bestimmte Werte diesen IDs da sie in zukünftigen Versionen der Bibliothek geändert werden.

Die Anwendung sollte im Bereich von 0 x 8000 bis 0xDFFF seine Befehle definieren.

Standard-Befehls-IDs

Für jedes Befehls-ID gibt es eine standard-Nachricht Linie-Eingabeaufforderungs-Zeichenfolge, die in den Anweisungen Datei gefunden werden kann.RC. Die Zeichenfolgen-ID für die Menüansage muss das gleiche wie für die Befehls-ID.

Update-nur Befehlshandler

Es gibt mehrere Standardbefehls-IDs, die als Indikatoren in Statusleisten verwendet werden. Diese verwenden das gleiche Update-Befehl UI Unterbrechungen um ihre aktuellen visuellen Zustand während der Leerlaufzeit Anwendung anzuzeigen. Da sie nicht vom Benutzer ausgewählt werden können (das heißt, Sie können keinen Statusleistenbereich schieben), dann es keinen Sinn macht, einen ON_COMMAND -Handler für diese Befehls-IDs haben.

Alle drei sind in CFrameWnd::OnUpdateKeyIndicator, eine Umsetzung-Hilfsklasse implementiert, die die Befehls-ID wird verwendet, um die entsprechende virtuelle Taste zuordnen. Eine gängige Implementierung aktiviert oder deaktiviert (für Statusbereiche deaktiviert = kein Text) Objekts CCmdUI je nachdem, ob die entsprechende virtuelle Taste gesperrt ist.

Anpassung von diesem Befehlshandler wird nicht empfohlen.

Derzeit gibt es keine Standardimplementierung für diese Indikatoren.

Wenn Sie diese Indikatoren implementieren möchten, empfehlen wir Sie diesen Indikator-IDs und pflegen die Reihenfolge der Indikatoren in der Statusleiste verwenden (das heißt, in dieser Reihenfolge: EXT, CAP, NUM, SCRL, OVR, REC).

Technische Hinweise von &Nummer |nbsp; Technische Hinweise nach Kategorie

Index