TN022: Standard dominiert Implementierung
Hinweis |
---|
Im Folgenden technischen Hinweis ist nicht aktualisiert wurde, seitdem er erstmals in der Onlinedokumentation enthalten waren.Folglich können mehrere Prozeduren und Themen veraltet oder falsch.Die aktuellsten Informationen wird empfohlen, zum Thema Onlinedokumentations im Index finden. |
Dieser Hinweis wird die standardmäßige Implementierungen Befehl von MFC 2.0 bereitgestellt werden.Lesen Sie Technischer Hinweis 21 zuerst, da es die Mechanismen beschrieben, mit denen zahlreiche Befehle Standard zu implementieren.
Diese Beschreibung wird davon ausgegangen, MFC-Architekturen Wissen über die API und des allgemeinen Programmierstils an.Dokumentierte sowie nicht dokumentierten APIs werden nur" Implementierung "beschrieben.Dies ist kein Speicherplatz vorhanden, um die Fähigkeiten von kennen oder zum Programmieren in MFC zu starten.Siehe Visual C++ allgemeinerer Informationen und Details für dokumentierten APIs.
Das Problem
MFC definiert viele Standardwert in der Headerdatei Befehl ID AFXRES.H.Framework für diese Befehle abweichen kann.Das Verständnis, wo und wie die Framework Klassen für diese Befehle behandeln, wie Sie nicht nur das Anzeigen, aber intern Framework hilfreiche Informationen zur Verfügung stellen, werden auf, wie die standardmäßige Implementierungen angepasst wird und Ihnen verschiedene Techniken zum Implementieren eines eigenen Befehlshandler beibringt.
Inhalt dieses Hinweises technischen
Jede Befehls-ID besteht aus zwei Abschnitten beschrieben:
Der Name: Der symbolischen Namen der Befehls-ID (z. B. ID_FILE_SAVE) gefolgt vom Zweck des Befehls (z. B. "speichert das aktuelle Dokument") getrennt durch einen Doppelpunkt.
Eine oder mehrere Absätze, die beschreiben, welche Klassen den Befehl implementieren und führt die Standardimplementierung
Die meisten Implementierungen Standardbefehls befinden sich in der Basisklasse meldungszuordnung des Frameworks prewired.Es gibt mehrere Befehle, die explizite Implementierungen Verdrahtung in einer abgeleiteten Klasse benötigen.Diese werden mit "Hinweis" beschrieben.Wenn Sie im Anwendungs-Assistenten die richtigen Optionen ausgewählt haben, werden diese Standardhandler für Sie im generierten Anwendungsskelett verbunden.
Namenskonvention
Befehle Standard entsprechen einer einfachen Benennungskonvention, dass wir empfehlen die Verwendung Sie, sofern möglich.Die meisten Befehle sind in der Standardeinstellung Standard plätzen in der Menüleiste einer Anwendung.Die symbolischen Namen des Befehls beginnt mit "ID_" gefolgt vom Standardwert popupmenü, gefolgt vom Namen des Menüelements.Die symbolischen Namen wird in Großbuchstaben mit Unterstrichen wortbrüchen.Für Befehle, die Menüelement nicht standardmäßigen Namen haben, ist ein logischer Befehlsname definiertes Beginnen mit "ID_" (z. B. ID_NEXT_PANE).
Wir verwenden das Präfix "ID_", um Befehle anzugeben, die an-Menüelemente, Symbolleisten-Schaltflächen Benutzeroberfläche des Befehls oder anderen Objekten gebunden werden soll.Die Befehlshandler, die "ID_-" Befehle behandeln, sollten die ON_COMMAND und ON_UPDATE_COMMAND_UI Mechanismen der Architektur der MFC-Befehls verwenden.
Es wird empfohlen, verwenden Sie das Präfix "default" IDM_ für Menüelemente, die nicht der Architektur der Befehl folgen und Code erfordern eine besondere Menü, um sie zu aktivieren und zu deaktivieren.Natürlich kann die Nummer des Menüs, das bestimmte Befehle, da Folgen der Architektur der MFC-Befehls klein sein sollen, nicht nur Befehlshandler leistungsstärker (da sie mit Symbolleisten arbeiten), sondern macht den Befehlshandler Code wiederverwendet werden.
ID der Bereiche
Verweisen Sie stattdessen Technischer Hinweis 20 für weitere Details bei der Verwendung von IDs Bereichen in MFC an.
MFC-Standard 0xE000 Befehle fallen in den Bereich auf 0xEFFF.Bitte verlassen Sie sich nicht auf die spezifischen Werte dieser ID, da sie je nach Änderung in zukünftigen Versionen der Bibliothek sind.
Die Anwendung sollte seine Befehle im Bereich 0x8000 0xDFFF zu definieren.
Standardwert befehls-ID
Für jede Befehls-ID gibt es eine standardmäßige meldungs eingabeaufforderungs-zeichenfolge Zeilen, die in der Datei PROMPTS.RC gefunden werden kann.Die Zeichenfolgen-ID für diese Menü Eingabeaufforderung müssen dieselben wie für die Befehls-ID sein
ID_FILE_NEW erstellt ein neues/leeres Dokument.
Hinweis Sie müssen dieses an das CWinApp herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
CWinApp::OnFileNew anders implementiert diesen Befehl je nach der Anzahl der Vorlagen in der Anwendung.Wenn nur ein CDocTemplate vorhanden ist, erstellt CWinApp::OnFileNew ein neues Dokument dieses Typs sowie die richtigen Frame und die Ansichtsklasse.
Wenn es mehr als eine CDocTemplate wird, fordert CWinApp::OnFileNew den Benutzern ein AFX_IDD_NEWTYPEDLG(Dialogfeld) lassend wählen Sie sie aus, die auf den Dokumenttyp verwendet werden soll.Wählen Sie CDocTemplate wird verwendet, um das Dokument zu erstellen.
Eine allgemeine Anpassung von ID_FILE_NEW besteht darin, eine Auswahl von grafischere und andere Dokumenttypen bereitstellt.In diesem Fall können Sie ein eigenes CMyApp::OnFileNew implementieren und in der Meldungszuordnung anstelle CWinApp::OnFileNew platzieren.Es ist nicht erforderlich, die Basisklassenimplementierung aufrufen.
Eine weitere allgemeine Anpassung von ID_FILE_NEW besteht darin, einen separaten Befehl zum Erstellen eines Dokuments jedes Typs bereitzustellen.In diesem Fall sollten Sie neue Befehls-IDs, z. B. ID_FILE_NEW_CHART und ID_FILE_NEW_SHEET definieren.
ID_FILE_OPEN öffnet ein vorhandenes Dokument.
Hinweis Sie müssen dieses an das CWinApp herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
CWinApp::OnFileOpen verfügt über eine sehr einfache Implementierung des Aufrufs von CWinApp::DoPromptFileName gefolgt von CWinApp::OpenDocumentFile mit der Datei oder den Pfadnamen der zu öffnenden Datei.Die CWinAppDoPromptFileName Routine- Implementierung wird das Standard-FileOpen-Dialogfeld und füllt diese mit den Dateierweiterungen, die von den aktuellen Dokumentvorlagen aus.
Eine allgemeine Anpassung von ID_FILE_OPEN darstellt, das Filter FileOpen-Dialogfeld anpassen oder zusätzliche Datei hinzuzufügen.Es wird empfohlen, diese anzupassen, ist die Standardimplementierung von FileOpen-Dialogfeld Ihre eigenen ersetzen und ruft CWinApp::OpenDocumentFile mit der Belegdatei oder den Pfadnamen an.Es ist nicht erforderlich, die Basisklasse aufrufen.
ID_FILE_CLOSE schließt das gerade geöffnete Dokument.
CDocument::OnFileClose ruft CDocument::SaveModified auf, um den Benutzer aufzufordern, das Dokument zu speichern, wenn es geändert wurde und ruft dann OnCloseDocument an.Die gesamte schließende Logik, einschließlich dem Zerstören des Dokuments, ist in der Routine OnCloseDocument ausgeführt.
Hinweis ID_FILE_CLOSE verhält sich anders zu einer Meldung oder einem SC_CLOSE System WM_CLOSE, die dem Befehl rahmenfenster Dokumente gesendet werden.Durch das Schließen eines Fensters schließt das Dokument nur, wenn das das letzte Rahmenfenster ist, das im Dokument anzeigt.Durch das Schließen des Dokuments nicht nur mit ID_FILE_CLOSE jedoch das Dokument geschlossen wird, schließt alle nachfolgenden Rahmenfenster, die das Dokument anzeigen.
ID_FILE_SAVE speichert das aktuelle Dokument.
Die Implementierung verwendet eine Hilfe Routine- CDocument::DoSave, die für OnFileSave und OnFileSaveAs verwendet wird.Wenn Sie ein Dokument, das nicht gespeichert wurde (das heißt es vor, einen Pfadnamen, z. B. nicht im Falle FileNew) speichern oder dem von einem schreibgeschützten Dokument gelesen wurde, die OnFileSave Logik wie der ID_FILE_SAVE_AS Befehl verarbeitet und der Benutzer aufgefordert, einen neuen Dateinamen anzugeben.Der eigentliche Prozess des Öffnens der Datei und des Handelns der die virtuelle Funktion wurde durch Speichern OnSaveDocument durchgeführt.
Es gibt zwei allgemeine Gründe, ID_FILE_SAVE anzupassen.Für Dokumente, die nicht speichern, entfernen Sie einfach die ID_FILE_SAVE von Symbolleisten-Schaltflächen - Menüelemente und der Benutzeroberfläche.Stellen Sie außerdem sicher, dass rufen Sie niemals geändert das Dokument (also nie CDocument::SetModifiedFlag) und das Framework führt nie das Dokument gespeichert werden soll.Für Dokumente, die in einer Datenträgerdatei irgendwo im Gegensatz zu speichern, definieren Sie einen neuen Befehl für diesen Vorgang.
Im Fall COleServerDoc wird ID_FILE_SAVE für die Datei abwehr (für normale Dokumente) und Aktualisieren der Datei (für eingebettete Dokumente).
Wenn die Dokumentdaten in einzelnen Datenträgerdateien gespeichert ist, aber nicht standardmäßige Implementierung serialisiert CDocument verwenden möchten, sollten Sie anstelle CDocument::OnSaveDocumentOnFileSave überschreiben.
ID_FILE_SAVE_AS speichert das aktuelle Dokument unter einem anderen Dateinamen.
Die CDocument::OnFileSaveAs Implementierung verwendet dieselbe CDocument::DoSave Hilfe routine wie OnFileSave.Der Befehl ist momentan OnFileSaveAs als ID_FILE_SAVE behandelt, wenn die Dokumente keinen Dateinamen vor der Speicherung hätten.COleServerDoc::OnFileSaveAs implementiert die Logik, um eine normale datendatei Dokumente zu speichern oder ein Server Dokument zu speichern, das ein OLE-Objekt darstellt, der in einer anderen Anwendung als separate Datei eingebettet ist.
Wenn Sie die Logik aus ID_FILE_SAVE anpassen, möchten Sie wahrscheinlich ID_FILE_SAVE_AS oder den Vorgang "Speichern auf ähnliche Weise anpassen, z. B." nicht auf das Dokument angewendet werden kann.Sie können das Menüelement aus der Menüleiste entfernen, wenn sie nicht benötigt wird.
Speichern einer Kopie ID_FILE_SAVE_COPY_AS Aktuelles Dokument unter einem neuen Namen.
Die COleServerDoc::OnFileSaveCopyAs Implementierung ist in CDocument::OnFileSaveAs sehr ähnlich, mit dem Unterschied, dass das Dokumentobjekt wurde nicht auf die zugrunde liegende Datei nach dem Speichern "verknüpft".Das heißt, wenn das Dokument im Arbeitsspeicher "geändert" wurde, bevor die Speicherung immer noch "geändert wird."Außerdem enthält dieser Befehl keine Auswirkungen auf den Pfadnamen oder den Namen, die im Dokument gespeichert werden.
ID_FILE_UPDATE benachrichtigt den Container, um ein eingebettetes Dokument zu speichern.
Die Implementierung COleServerDoc::OnUpdateDocument einfach notifiies der Container, dass die Einbettung gespeichert werden soll.Der Container ruft dann die geeignete OLE API auf, um das eingebettete Objekt zu speichern.
ID_FILE_PAGE_SETUP ruft ein anwendungsspezifisches Seiteneinrichtungs-/Dialogfeld Layout auf.
Derzeit gibt es keinen Standardwert für diesen Dialog Box, und das Framework verfügt über keine Standardimplementierung des Befehls.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_FILE_PRINT_SETUP-Aufruf das Dialogfeld drucks-Setup Standardwert.
Hinweis Sie müssen dieses an das CWinApp herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
Mit diesem Befehl wird das standardmäßige setup drucks Dialogfeld an, das es dem Benutzer ermöglicht, um den Drucker und die Druckeinstellungen für dieses Dokument oder höchstens alle Dokumente in dieser Anwendung mindestens anzupassen.Sie müssen die Systemsteuerung verwenden, um die Einstellungen des standardmäßigen Druckers für das gesamte System zu ändern.
CWinApp::OnFilePrintSetup verfügt über eine sehr einfache Implementierung, die ein CPrintDialog-Objekt erstellt und die CWinApp::DoPrintDialog Feature Implementierung aufgerufen wird.Dadurch wird das Setup des standardmäßigen Druckers der Anwendung fest.
Die übliche Anforderung zum Anpassen dieses Befehls ist, DOCUMENT-Drucker einzelnen Einstellungen zu ermöglichen, die mit dem Dokument gespeichert werden sollen, wenn sie gespeichert sind.Dazu Meldungszuordnungs Sie einen Ereignishandler in der CDocument-Klasse hinzufügen sollten die ein CPrintDialog-Objekt erstellt, sie mit den entsprechenden Drucker attributen (normalerweise hDevMode und hDevNames) initialisiert CPrintDialog::DoModal, Sie aufrufen, und speichern Sie die geänderte Druckereinstellungen.Bei einer stabilen Implementierung sollten Sie die Implementierung von CWinApp::DoPrintDialog sich nach dem Erkennen von Fehlern und nach dem CWinApp::UpdatePrinterSelection vernünftige Behandlung von Standards und dem Nachverfolgen von systemweite Änderungen des Druckers.
ID_FILE_PRINT-Standarddruck des aktuellen Dokuments
Hinweis Sie müssen dieses an das CView herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
Dieser Befehl gibt das aktuelle Dokument oder ordnungsgemäß, der der Druckvorgang beginnt bei das Standarddialogfeld Drucken und den Druck das Modul aufgerufen wird.
CView::OnFilePrint implementiert diesen Befehl Drucken und die Hauptversionsnummer Schleife.Die virtuelle CView::OnPreparePrinting der Eingabeaufforderung des Benutzers mit dem Druckdialogfeld angezeigt.Er bereitet dann vor, DC auszugeben, um an den Drucker zu wechseln, wird das Drucken statusdialogfeld (AFX_IDD_PRINTDLG) und sendet die StartDoc Escapezeichen an den Drucker.CView::OnFilePrint enthält auch die Haupt- PAGE-ausgerichtete Schleife Drucken.Für jede Seite ruft es virtuelle CView::OnPrepareDC gefolgt von einem StartPage Escapezeichen und aus dem Aufruf virtuellen CView::OnPrint für diese Seite.Wenn vollständig, wird CView::OnEndPrinting virtuelle aufgerufen, und das Drucken statusdialogfeld ist geschlossen.
Die Architektur der MFC-Drucks entspricht dem Hook auf viele verschiedene Möglichkeiten zum Drucken und Seitenansicht vorgesehen.Suchen Sie in der Regel die verschiedenen schreibbaren Funktionen, die CView druckenden PAGE-ausgerichteten für alle Tasks geeignet sind.Nur im Fall einer Anwendung, mit dem der Drucker für Nicht richtete, PAGE Ausgabe aus, wenn Sie die Forderung suchen, die ID_FILE_PRINT Implementierung zu ersetzen.
ID_FILE_PRINT_PREVIEW-EINGABETASTE-Seitenansichts Modus für das aktuelle Dokument.
Hinweis Sie müssen dieses an das CView herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
CView::OnFilePrintPreview startet den Modus für die Seitenansicht, indem die dokumentierte Hilfsfunktion CView::DoPrintPreview aufruft.CView::DoPrintPreview ist das zentrale Modul für die Schleife Seitenansicht wie OnFilePrint das zentrale Modul für die Schleife Drucken.
Der Vorgang kann die Seitenansicht in einer Vielzahl von Methoden angepasst werden, indem Sie verschiedene Parameter in DoPrintPreview übergeben wird.Verweisen Sie stattdessen Technischer Hinweis 30 an, das einige Details der Seitenansicht wird und wie es anzupassen.
Bereich ID_FILE_MRU_FILE1…**FILE16 ** A von Befehls-IDs für die Datei MRU list.
CWinApp::OnUpdateRecentFileMenu ist ein Update befehlsbenutzeroberflächen, der für eine der erweiterte Verwendung des ON_UPDATE_COMMAND_UI Mechanismus ist.In der Menüressource müssen Sie lediglich ein einzelnes Menüelement mit der ID ID_FILE_MRU_FILE1 definieren.Dieses Menüelement zunächst deaktiviert bleibt.
Während die MRU-Liste, werden weitere Menüelemente der Liste hinzugefügt.Die Standard- CWinApp Implementierung führt zu gebundenen Standard der vier zuletzt verwendeten Dateien.Sie können die Standardeinstellung ändern, indem Sie CWinApp::LoadStdProfileSettings mit einem größeren oder kleineren Wert aufrufen.Die MRU-Liste wird in der INI-Datei einer Anwendung gespeichert.Die Liste ist in InitInstance-Funktion der Anwendung geladen, wenn Sie LoadStdProfileSettings aufrufen, wenn die Anwendung beendet wird und gespeichert.Der MRU-Update befehlsbenutzeroberflächen Klassenhandler auch absolute Pfade konvertiert den relativen Pfaden für die Anzeige im Menü Datei.
CWinApp::OnOpenRecentFile ist der ON_COMMAND-Handler, der den tatsächlichen Befehl ausführt.Es ruft einfach den Dateinamen aus der MRU-Liste ab und ruft CWinApp::OpenDocumentFile an, die die gesamte Arbeit des Öffnens der Datei und der Aktualisierung der MRU-Liste ausführt.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_EDIT_CLEAR löscht die aktuelle Auswahl
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
CEditView stellt eine Implementierung dieses Befehls mit CEdit::Clear bereit.Der Befehl ist deaktiviert, wenn keine aktuelle Auswahl vorhanden ist.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_EDIT_CLEAR_ALL löscht das gesamte Dokument.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.Weitere Informationen finden Sie MFC-Referenten die Implementierung beispiel- SCRIBBLE als Beispiel.
ID_EDIT_COPY kopiert die aktuelle Auswahl in die Zwischenablage.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
CEditView stellt eine Implementierung dieses Befehls, der den derzeit markierten Text in die Zwischenablage als CF_TEXT mit CEdit::Copy kopiert.Der Befehl ist deaktiviert, wenn keine aktuelle Auswahl vorhanden ist.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_EDIT_CUT schneidet die aktuelle Auswahl in die Zwischenablage.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
CEditView stellt eine Implementierung dieses Befehls, der den derzeit markierten Text in die Zwischenablage als CF_TEXT mit CEdit::Cut ausschneidet.Der Befehl ist deaktiviert, wenn keine aktuelle Auswahl vorhanden ist.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_EDIT_FIND wird der Suchvorgang, wird das nicht modale Dialogfeld Suchen.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
CEditView stellt eine Implementierung dieses Befehls, der die Implementierung hilfsfunktion OnEditFindReplace aufgerufen wird, um zu verwenden und die vorherige Suche zu speichern und die Einstellungen in den privaten Variablen Implementierungen ersetzen.Die CFindReplaceDialog-Klasse wird verwendet, um das nicht modale Dialogfeld zum Eingabeaufforderung des Benutzers zu verwalten.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_EDIT_PASTE fügt den aktuellen Inhalt der Zwischenablage ein.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
CEditView stellt eine Implementierung dieses Befehls, der die aktuellen Daten Zwischenablage kopiert, die den markierten Text mithilfe CEdit::Paste ersetzen.Der Befehl ist deaktiviert, wenn kein CF_TEXT in der Zwischenablage befinden.
COleClientDoc stellt nur eine Aktualisierung befehlsbenutzeroberflächen Klassenhandler für diesen Befehl.Wenn die Zwischenablage keine integrierbares OLE-Element/ein Objekt enthält, wird der Befehl deaktiviert.Sie sind für das Schreiben des Handlers verantwortlich, dass der tatsächliche das tatsächliche Befehl Einfügen durchführt.Wenn die OLE-Anwendung anderen Formaten einfügen kann, sollten Sie auch einen eigenen Klassenhandler befehlsbenutzeroberflächen Aktualisierung in der Ansicht oder Dokument bereitstellen (d. h. vor COleClientDoc irgendwo im Befehlsziel routing).
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
Für das Ersetzen der standardmäßigen Implementierung, OLE COleClientItem::CanPaste.
ID_EDIT_PASTE_LINK fügt einen Link von den aktuellen Inhalt der Zwischenablage ein.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
COleDocument stellt nur eine Aktualisierung befehlsbenutzeroberflächen Klassenhandler für diesen Befehl.Wenn die Zwischenablage keine verbindbares OLE-Element/Objekt enthält, wird der Befehl deaktiviert.Sie sind für das Schreiben des Handlers verantwortlich, dass der tatsächliche das tatsächliche Befehl Einfügen durchführt.Wenn die OLE-Anwendung anderen Formaten einfügen kann, sollten Sie auch einen eigenen Klassenhandler befehlsbenutzeroberflächen Aktualisierung in der Ansicht oder Dokument bereitstellen (d. h. vor COleDocument irgendwo im Befehlsziel routing).
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
Für das Ersetzen der standardmäßigen Implementierung, OLE COleClientItem::CanPasteLink.
ID_EDIT_PASTE_SPECIAL fügt den aktuellen Inhalt der Zwischenablage mit Optionen ein.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.MFC stellt keine dieses Dialogfeld angezeigt.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_EDIT_REPEAT wiederholt den letzten Vorgang.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
CEditView stellt eine Implementierung dieses Befehls, den letzten Suchvorgang zu überprüfen.Die privaten Variablen Implementierung für die letzte Suche verwendet werden.Der Befehl ist deaktiviert, wenn eine Suche nicht versucht werden kann.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_EDIT_REPLACE startet den Ersetzungsvorgang, wird das nicht modale Dialogfeld ersetzen.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
CEditView stellt eine Implementierung dieses Befehls, der die Implementierung hilfsfunktion OnEditFindReplace aufgerufen wird, um zu verwenden und die vorherige Suche zu speichern und die Einstellungen in den privaten Variablen Implementierungen ersetzen.Die CFindReplaceDialog-Klasse wird verwendet, um das nicht modale Dialogfeld zu verwalten, der den Benutzer auffordert.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_EDIT_SELECT_ALL wählt das gesamte Dokument.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
CEditView stellt eine Implementierung dieses Befehls, der den gesamten Text im Dokument ausgewählt werden.Der Befehl ist deaktiviert, wenn kein Text ausgewählt ist.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_EDIT_UNDO macht den letzten Vorgang.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
CEditView stellt eine Implementierung dieses Befehls, mit CEdit::Undo bereit.Der Befehl ist deaktiviert, wenn CEdit::CanUndo FALSE zurückgibt.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_EDIT_REDO wiederholt den letzten Vorgang.
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für jedes CView abgeleitete Klasse implementieren.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_WINDOW_NEW öffnet ein anderes Fenster im aktiven Dokument.
CMDIFrameWnd::OnWindowNew implementiert diese leistungsstarke Funktion, indem die Dokumentvorlage des aktuellen Dokuments verwendet, um eine andere Frames zu erstellen, die eine andere Ansicht des aktuellen Dokuments enthält.
Wie die meisten (Multiple Document Interface) des Fensters wird der Befehl deaktiviert, wenn kein untergeordnetes MDI-Fenster aktiv ist.
Anpassung dieses Befehlshandlers wird nicht empfohlen.Wenn Sie einen Befehl bereitstellen möchten, der weitere Ansichten oder Rahmenfenster erstellt wird, sind Sie wahrscheinlich besser, einen eigenen Befehl erfinden.Sie können den Code aus CMDIFrameWnd::OnWindowNew klonen und ihn auf spezifische Frames und Ansichtsklassen des Mögens ändern.
ID_WINDOW_ARRANGE ordnet Symbole am unteren Rand eines MDI-Fenster an.
CMDIFrameWnd implementiert diesen Befehl des Standardwerts in einer MDI hilfsfunktion Implementierung OnMDIWindowCmd.Diese Hilfe zu Befehls-IDs ordnet MDI-Windows-Meldungen zu viel Code und kann daher freigeben.
Wie die meisten MDI-Fenster des wird der Befehl deaktiviert, wenn kein untergeordnetes MDI-Fenster aktiv ist.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_WINDOW_CASCADE kaskadiert Fenster, sodass sie sich überschneiden.
CMDIFrameWnd implementiert diesen Befehl des Standardwerts in einer MDI hilfsfunktion Implementierung OnMDIWindowCmd.Diese Hilfe zu Befehls-IDs ordnet MDI-Windows-Meldungen zu viel Code und kann daher freigeben.
Wie die meisten MDI-Fenster des wird der Befehl deaktiviert, wenn kein untergeordnetes MDI-Fenster aktiv ist.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
Fenster ID_WINDOW_TILE_HORZ-Kachel horizontal.
Dieser Befehl ist in CMDIFrameWnd ebenso wie ID_WINDOW_CASCADE implementiert, außer einer anderen MDI-Windows-Meldung für den Vorgang verwendet wird.
Sie sollten die Kachel die Ausrichtung für die Anwendung auswählen.Sie können dies tun, indem Sie die ID für das Menüelement" Windows "Nebeneinander entweder zu ID_WINDOW_TILE_HORZ oder ID_WINDOW_TILE_VERT ändern.
Fenster ID_WINDOW_TILE_VERT-Kachel vertikal.
Dieser Befehl ist in CMDIFrameWnd ebenso wie ID_WINDOW_CASCADE implementiert, außer einer anderen MDI-Windows-Meldung für den Vorgang verwendet wird.
Sie sollten die Kachel die Ausrichtung für die Anwendung auswählen.Sie können dies tun, indem Sie die ID für das Menüelement" Windows "Nebeneinander entweder zu ID_WINDOW_TILE_HORZ oder ID_WINDOW_TILE_VERT ändern.
ID_WINDOW_SPLIT-Tastatur Oberfläche für den Splitter.
CView behandelt diesen Befehl für die CSplitterWnd Implementierung.Wenn die Ansicht Teil eines Splitterfensters ist, delegiert zur Implementierung CSplitterWnd::DoKeyboardSplit das Feature für diesen Befehl.Dies legt den Splitter in einem Modus, in geteiltem Benutzer die Tastatur oder ungeteiltem ein Splitterfenster zulässig.
Dieser Befehl ist deaktiviert, wenn die Ansicht nicht in einem Splitter ist.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_APP_ABOUT ruft das Dialogfeld Info auf.
Es ist keine Standardimplementierung für eine Anwendung über Feld.Die Standardeinstellung Anwendungs-Assistent-erstellte Dialogfeldklasse eine benutzerdefinierte Anwendung erstellt und verwendet sie für Ihre Anwendung als das Feld Info.Anwendungs-Assistent schreibt auch den trivialen Befehlshandler, der diesen Befehl verarbeitet und das Dialogfeld aufruft.
Implementieren Sie fast immer diesen Befehl.
ID_APP_EXIT-Beendigung die Anwendung.
CWinApp::OnAppExit diesen Befehl behandelt, indem eine WM_CLOSE Meldung an das Hauptfenster der Anwendung sendet.Das Standardabschalten der Anwendung (Eingabeaufforderung für modifizierte Dateien usw.), wird durch die Implementierung CFrameWnd behandelt.
Anpassung dieses Befehlshandlers wird nicht empfohlen.Das Überschreiben von CWinApp::SaveAllModified oder schließende Logik CFrameWnd wird empfohlen.
Wenn Sie diesen Befehl implementieren, sollten Sie verwenden diese Befehls-ID.
ID_HELP_INDEX führt Hilfethemen von .HLP-Datei auf.
Hinweis Sie müssen dieses an das CWinApp herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
CWinApp::OnHelpIndex diesen Befehl behandelt, indem belanglos CWinApp::WinHelp aufruft.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_HELP_USING-Anzeigen helfen, wie Sie Hilfe.
Hinweis Sie müssen dieses an das CWinApp herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
CWinApp::OnHelpUsing diesen Befehl behandelt, indem belanglos CWinApp::WinHelp aufruft.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_CONTEXT_HELP gibt Modus der Hilfe SHIFT-F1 ein.
Hinweis Sie müssen dieses an das CWinApp herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
CWinApp::OnContextHelp diesen Befehl behandelt, indem der Hilfe modus-Cursor festlegt, eine modale Schleife eingibt und auf den Benutzer zum Auswählen eines Fensters, um die Hilfe an abzurufenden wartet.Verweisen Sie stattdessen Technischer Hinweis 28 für weitere Details der Implementierung MFC-Hilfe an.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_HELP gibt die Hilfe für den aktuellen Kontext
Hinweis Sie müssen dieses an das CWinApp herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
CWinApp::OnHelp diesen Befehl behandelt, indem die rechte Hilfekontext für den aktuellen Anwendungskontext abruft.Dieses einfache behandelt, F1-Hilfe Hilfe in Meldungsfeldern usw.Verweisen Sie stattdessen Technischer Hinweis 28 für weitere Details der Implementierung MFC-Hilfe an.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_DEFAULT_HELP-Anzeigen-Standard können für Kontext
Hinweis Sie müssen dieses an das CWinApp herstellen, die Meldungszuordnung der abgeleiteten Klasse, um diese Funktion zu aktivieren.
Dieser Befehl wird normalerweise für CWinApp::OnHelpIndex zugeordnet.
Ein weiterer Befehlshandler kann bereitgestellt werden, wenn eine Unterscheidung zwischen Standardhilfsfunktion und den Hilfeindex erforderlich ist.
ID_NEXT_PANE wechselt zum nächsten Bereich
CView behandelt diesen Befehl für die CSplitterWnd Implementierung.Wenn die Ansicht Teil eines Splitterfensters ist, delegiert zur Implementierung CSplitterWnd::OnNextPaneCmd das Feature für diesen Befehl.Dadurch wird die aktive Ansicht auf den nächsten Bereich im Splitter.
Dieser Befehl ist deaktiviert, wenn die Ansicht nicht in einem Splitter oder kein nächsten Bereich vorhanden ist, zu wechseln.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_PREV_PANE wechselt zum vorherigen Bereich
CView behandelt diesen Befehl für die CSplitterWnd Implementierung.Wenn die Ansicht Teil eines Splitterfensters ist, delegiert zur Implementierung CSplitterWnd::OnNextPaneCmd das Feature für diesen Befehl.Dadurch wird die aktive Ansicht auf den vorherigen Bereich im Splitter.
Dieser Befehl ist deaktiviert, wenn die Ansicht nicht in einem Splitter oder kein vorherigen Bereich vorhanden ist, zu wechseln.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_OLE_INSERT_NEW ein OLE-Objekt wird ein neues
Derzeit gibt es keine Standardimplementierung für diesen Befehl.Sie müssen dieses für das CView- Die abgeleitete Klasse implementieren, um einen neuen OLE-Elements/des Objekts an der aktuellen Auswahl eingefügt werden soll.
Alle OLE-Clientanwendungen sollten diesen Befehl implementieren.Anwendungs-Assistent, mit der OLE-Option, wird ein Implementierungsskelett von OnInsertObject in der Ansichtsklasse, die Sie ausführen müssen.
Weitere Informationen finden Sie im OCLIENT B. B. für OLE MFC eine vollständige Implementierung dieses Befehls.
Bearbeiten ID_OLE_EDIT_LINKS OLE-Links
COleDocument behandelt diesen Befehl mit dem MFC-zur Verfügung, die Implementierung des Dialogfelds Link standardmäßigen OLE.Die Implementierung dieses Dialogfelds wird von der COleLinksDialog-Klasse zugegriffen wird.Wenn das aktuelle Dokument keine Links enthält, wird der Befehl deaktiviert.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_OLE_VERB_FIRST… LETZT Bereich für OLE-Verben ein ID
COleDocument verwendet diesen Befehls-ID-Bereich für die Verben, die vom derzeit ausgewählten OLE-Element/das Objekt unterstützt werden.Dies muss ein Gültigkeitsbereich sein, da ein angegebenes OLE-Element/ein Objekttyp keine oder mehrere benutzerdefinierte Verben unterstützen können.Klicken Sie im Menü Ihrer Anwendung sollten Sie ein Menüelement mit der ID ID_OLE_VERB_FIRST haben.Wenn das Programm ausgeführt wird, wird das Menü mit der entsprechenden Beschreibung der verb Menü aktualisiert (oder Popupmenü mit vielen Verben).Die Verwaltung des OLE-Menüs wird von AfxOleSetEditMenu behandelt, die im Update befehlsbenutzeroberflächen Klassenhandler für diesen Befehl ausgeführt wird.
Es gibt keine expliziten Befehlshandler für die Verarbeitung der einzelnen Befehls-ID in diesem Bereich.COleDocument::OnCmdMsg abgefangen wird dem alle Befehls-IDs in diesem Bereich außer Kraft, um sie zu nullbasierte Verb und Zahlen startet der Server für dieses Verb (mithilfe COleClientItem::DoVerb).
Anpassung oder anderer Verwendung dieses Befehls-ID-Bereich wird nicht empfohlen.
ID_VIEW_TOOLBAR wird die Symbolleiste angezeigt und um
CFrameWnd behandelt diesen Befehl und dem Update Befehl Benutzeroberfläche Ereignishandler den sichtbaren Zustand der Symbolleiste zu wechseln.Die Symbolleiste muss ein untergeordnetes Fenster den Frame mit ID des untergeordneten Fensters von AFX_IDW_TOOLBAR sein.Der Befehlshandler tatsächlich schaltet die Sichtbarkeit des Fensters um Symbolleisten.CFrameWnd::RecalcLayout wird verwendet, um das Rahmenfenster der Symbolleiste im neuen Zustand neu zeichnet.Der UpdateBefehl Benutzeroberfläche Handler überprüft das Menüelement, wenn die Symbolleiste sichtbar ist.
Anpassung dieses Befehlshandlers wird nicht empfohlen.Wenn Sie zusätzliche Symbolleisten hinzufügen möchten, können Sie den Befehlshandler und Update Befehl Benutzeroberfläche Handler für diesen Befehl klonen und ändern.
ID_VIEW_STATUS_BAR wird die Statusleiste an und um
Dieser Befehl ist in CFrameWndID_VIEW_TOOLBAR implementiert, außer wie eine andere ID des untergeordneten Fensters (AFX_IDW_STATUS_BAR) verwendet wird.
Nur zur Aktualisierung Befehls-Handler
Einige standardmäßige der Befehl ID wird als Indikatoren in der Statusleiste verwendet.Diese Aktualisierung verwenden denselben Mechanismus für die Behandlung der Benutzeroberfläche Befehl, um den aktuellen visuellen Zustand während der Anwendung leerlaufzeit anzuzeigen.Da sie nicht vom Benutzer (das heißt Sie können einen Statusleistenbereich nicht ausgewählt werden können), drücken, ist es nicht sinnvoll, einen Handler für diese ON_COMMAND Befehls-IDs haben.
ID_INDICATOR_CAPS : Sperren ABDECKUNGS Indikator.
ID_INDICATOR_NUM : Zähler der NUMERISCHEN Sperre.
ID_INDICATOR_SCRL : Indikator ROLLEN-Sperren.
ID_INDICATOR_KANA : KANA-Sperren nur anwendbar (Indikator für den japanischen Systemen).
Alle drei von diesen werden in CFrameWnd::OnUpdateKeyIndicator können eine Implementierung implementiert, die verwendet wird, um die Befehls-ID an die entsprechende virtuelle Taste zuzuordnen.Eine allgemeine Implementierung aktiviert oder deaktiviert werden soll (der Status = Deaktiviert Bereiche kein Text) CCmdUI das Objekt abhängig davon, ob die entsprechende virtuelle Taste gerade gesperrt ist.
Anpassung dieses Befehlshandlers wird nicht empfohlen.
ID_INDICATOR_EXT : EXT beendete ausgewählten Indikator.
Indikator Streik ID_INDICATOR_OVR : OV e R.
ID_INDICATOR_REC : REC, der Zähler ording ist.
Derzeit gibt es keine Standardimplementierung für diese Indikatoren.
Wenn Sie diese Indikatoren zu implementieren, empfehlen wir Sie verwenden diese Zähler ID und die Verwaltung der Reihenfolge von Indikatoren in der Statusleiste (d. h. in der folgenden Reihenfolge: EXT, ABDECKUNG, NUM, ROLLEN, OVR, REC).