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.
Hinweis&Nbsp; Müssen Sie dies in Ihrem CWinApp-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
CWinApp::OnFileNew implementiert dieser Befehl unterschiedlich je nach Anzahl der Dokumentvorlagen in der Anwendung. Ist nur ein CDocTemplate, erstellen CWinApp::OnFileNew ein neues Dokument dieses Typs, wie auch der richtige Rahmen und Ansicht Klasse.
Ist mehr als ein CDocTemplate, fordert CWinApp::OnFileNew den Benutzer mit einem Dialog (AFX_IDD_NEWTYPEDLG) lassen sie wählen Sie die Belegart zu verwenden. Die ausgewählten CDocTemplate wird verwendet, um das Dokument zu erstellen.
Eine gemeinsame Anpassung von ID_FILE_NEW besteht darin, eine andere und größere grafische Auswahl von Dokumenttypen. In diesem Fall können Sie eigene CMyApp::OnFileNew implementieren und platzieren Sie es in der Meldungszuordnung statt CWinApp::OnFileNew. Es gibt keine Notwendigkeit, die Basisklassenimplementierung aufrufen.
Eine weitere gemeinsame Anpassung von ID_FILE_NEW besteht darin einen separaten Befehl für das Erstellen eines Dokuments jedes Typs. In diesem Fall sollten Sie neue Befehls-IDs, z. B. ID_FILE_NEW_CHART und ID_FILE_NEW_SHEET definieren.
Hinweis&Nbsp; Müssen Sie dies in Ihrem CWinApp-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
CWinApp::OnFileOpen hat eine sehr einfache Implementierung des Aufrufs von CWinApp::DoPromptFileName gefolgt von CWinApp::OpenDocumentFile mit dem Namen Datei oder der Pfad der Datei zu öffnen. Die CWinApp Umsetzung Routine DoPromptFileName der standard FileOpen-Dialog öffnet und füllt es mit den Dateiendungen entnommen dem aktuellen Dokument-Vorlagen.
Eine gemeinsame Anpassung des ID_FILE_OPEN ist den FileOpen-Dialog anpassen oder zusätzliche Dateifilter hinzufügen. Die empfohlene Vorgehensweise für das Anpassen ist die Standardimplementierung durch eigene FileOpen-Dialog ersetzen, und rufen Sie CWinApp::OpenDocumentFile mit dem Dokument Datei oder Pfadname. Es gibt keine Notwendigkeit, die Basisklasse aufrufen.
CDocument::OnFileClose ruft SaveModified , fordert den Benutzer auf das Dokument zu speichern, wenn es geändert wurde, und dann OnCloseDocument Ruft. Alle Abschlusslogik, einschließlich zerstören das Dokument, erfolgt in der OnCloseDocument -routine.
Hinweis&Nbsp;ID_FILE_CLOSE Handlungen anders als eine WM_CLOSE -Nachricht oder ein SC_CLOSE -System-Befehl an das Rahmenfenster Dokumente gesendet. Schließen eines Fensters schließt das Dokument nur dann, wenn das ist das letzte Frame-Fenster zeigt das Dokument. Schließen des Dokuments mit ID_FILE_CLOSE schließt nicht nur das Dokument aber werden alle Frame-Fenster zeigt das Dokument schließen.
Die Implementierung verwendet eine Hilfsfunktion CDocument::DoSave die für OnFileSave und OnFileSaveAsverwendet wird. Wenn Sie ein Dokument speichern, die nicht zuvor gespeichert wurde (das heißt, es muss keinen Pfadnamen, wie im Falle der FileNew) oder aus einem schreibgeschützten Dokument gelesen wurde, die OnFileSave Logik handeln wie den ID_FILE_SAVE_AS -Befehl und bitten Sie den Benutzer einen neuen Dateinamen angeben. Der eigentliche Vorgang die Datei zu öffnen und dabei die Einsparung erfolgt über die virtuelle Funktion OnSaveDocument.
Es gibt zwei Gründe, ID_FILE_SAVEanzupassen. Für Dokumente, die nicht speichern, einfach die ID_FILE_SAVE Menüelemente und Symbolleisten-Schaltflächen aus der Benutzeroberfläche entfernen. Stellen Sie außerdem sicher, dass Sie nie Ihr Dokument (das heißt, nie nennen CDocument::SetModifiedFlag) schmutzig und Rahmen wird nie dazu führen, dass das Dokument gespeichert werden soll. Definieren Sie für Dokumente, die irgendwo anders als eine Datei zu speichern einen neuen Befehl für diesen Vorgang.
Bei einem COleServerDoc abgeleitet istdient ID_FILE_SAVE sowohl für (für normale Dokumente) zum Speichern von Dateien und Dateiupdate (für eingebettete Dokumente).
Wenn Ihr Dokumentdaten werden in einzelnen Dateien, aber nicht die Standardeinstellung verwenden möchten CDocument Implementierung serialisiert, überschreiben Sie CDocument::OnSaveDocument anstelle von OnFileSave.
Die CDocument::OnFileSaveAs -Implementierung verwendet die gleichen CDocument::DoSave -Hilfsfunktion als OnFileSave. Der OnFileSaveAs -Befehl wird nur als ID_FILE_SAVE behandelt, hätte kein Dateiname vor dem Speichern der Dokumente. COleServerDoc::OnFileSaveAs implementiert die Logik für eine Standard-Dokument-Datei speichern oder speichern ein Serverdokument, das ein OLE-Objekt darstellt eingebettet in eine andere Anwendung als separate Datei.
Wenn Sie die Logik der ID_FILE_SAVEanpassen, Sie werden wahrscheinlich ID_FILE_SAVE_AS in ähnlicher Weise anpassen möchten oder der Betrieb von "Speichern unter" auf Ihr Dokument möglicherweise nicht zutreffen. Sie können das Menüelement in Ihrer Menüleiste entfernen, wenn es nicht benötigt wird.
Die COleServerDoc::OnFileSaveCopyAs -Implementierung ähnelt CDocument::OnFileSaveAs, des Document-Objekts nicht "die zugrunde liegende Datei nach dem speichern befestigt ist". Das heißt, wenn das Dokument im Arbeitsspeicher "vor dem Speichern geändert wurde", ist es immer noch "geändert". Darüber hinaus hat dieser Befehl keine Auswirkungen auf den Pfadnamen oder im Dokument gespeicherte Titel.
Die Umsetzung der COleServerDoc::OnUpdateDocument einfach Notifiies der Container, der die Einbettung gespeichert werden soll. Der Container ruft dann die entsprechenden OLE-APIs um das eingebettete Objekt speichern.
Derzeit gibt es keinen Standard für diesen Dialog, und der Rahmen hat keine Standardimplementierung dieser Befehl.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Hinweis&Nbsp; Müssen Sie dies in Ihrem CWinApp-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
Dieser Befehl ruft den standard-print Setup-Dialog, der erlaubt den Benutzer anpassen, den Drucker und Druckeinstellungen für mindestens in diesem Dokument oder in den meisten alle Dokumente in dieser Anwendung. Sie müssen die Systemsteuerung verwenden, um die Standarddruckereinstellungen für das gesamte System ändern.
CWinApp::OnFilePrintSetup hat eine sehr einfache Implementierung ein CPrintDialog -Objekt erstellen und Aufrufen der Funktion CWinApp::DoPrintDialog Umsetzung. Dadurch wird die Anwendung Standard Drucker-setup.
Die gemeinsamen Handlungsbedarf für die Anpassung dieser Befehl ist für pro-Dokument Druckereinstellungen zu ermöglichen, die mit dem Dokument beim Speichern gespeichert werden sollen. Dazu fügen Sie einen Handler der Meldungszuordnung in der CDocument -Klasse, die ein CPrintDialog -Objekt erstellt, initialisiert es mit den entsprechenden Drucker-Attributen (in der Regel hDevMode und hDevNames), und rufen Sie die CPrintDialog::DoModal, speichern Sie die geänderten Druckereinstellungen. Für eine robuste Implementierung sollten Sie bei der Umsetzung von CWinApp::DoPrintDialog suchen zum Erkennen von Fehlern und CWinApp::UpdatePrinterSelection Umgang mit vernünftigen Standardwerten und Drucker systemweite Änderungen verfolgen.
Hinweis&Nbsp; Müssen Sie dies auf Ihrer CView-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
Dieser Befehl druckt das aktuelle Dokument, oder genauer gesagt, beginnt den Druckvorgang, gehört das standard Drucken Dialogfenster aufrufen und Ausführen des Druckermoduls.
CView::OnFilePrint implementiert diesen Befehl und die Hauptschleife drucken. Es ruft die virtuelle diesem auffordern des Benutzers mit der Druckdialog. Anschließend bereitet die Ausgabe von DC bis zu den Drucker gehen, bringt die Druck-Fortschritts-Dialog (AFX_IDD_PRINTDLG), und die StartDoc Flucht an den Drucker sendet. CView::OnFilePrint enthält auch die main seitenorientierte print Loop. Für jede Seite ruft es die virtuelle CView::OnPrepareDC gefolgt von einer Startseite Escape und die virtuelle CView::OnPrint für diese Seite aufrufen. Wenn Sie fertig sind, die virtuelle CView:: OnEndPrinting heißt, und der Druck-Fortschritts-Dialog wird geschlossen.
Die MFC-Druckarchitektur soll in vielerlei Hinsicht für Drucken und Vorschau Haken. Normalerweise finden die verschiedenen CView überschreibbaren Funktionen ausreichend für alle Druckaufgaben seitenorientierte Sie. Nur für eine Anwendung, die der Drucker für orientierte Seitenausgabe verwendet, sollten Sie die Notwendigkeit, die Umsetzung ID_FILE_PRINT ersetzen finden.
Hinweis&Nbsp; Müssen Sie dies auf Ihrer CView-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
CView::OnFilePrintPreview startet den Seitenansicht-Modus, indem Sie die dokumentierten Hilfsfunktion CView::DoPrintPreview. CView::DoPrintPreview ist der wichtigste Motor für die Druckvorschau Schleife, wie OnFilePrint der wichtigste Motor für die Druck-Schleife.
Die Seitenansicht-Operation kann in eine Vielzahl von Möglichkeiten angepasst werden, durch verschiedene Parameter an DoPrintPreviewübergeben. Finden Sie technische Anmerkung 30, die einige Details der Seitenansicht und anpassen es diskutiert.
CWinApp::OnUpdateRecentFileMenu ist ein Update Befehl UI Handler, eine der erweiterten Einsatzmöglichkeiten der ON_UPDATE_COMMAND_UI -Mechanismus. In Ihrem Menüressource müssen Sie nur ein einzelnes Menüelement mit ID ID_FILE_MRU_FILE1definieren. Dieser Menüpunkt bleibt zunächst deaktiviert.
Die MRU wächst Liste, Menü "mehr", die Elemente der Liste hinzugefügt werden. Die Norm CWinApp Implementierung standardmäßig die standard Begrenzung der vier wichtigsten kürzlich verwendete Dateien. Sie können die Standardeinstellung ändern, durch Aufrufen von CWinApp::LoadStdProfileSettings mit einem größeren oder kleineren Wert. Die MRU-Liste wird in der Anwendungs gespeichert.INI-Datei. Die Liste wird in der Anwendung InitInstance -Funktion geladen, wenn Sie LoadStdProfileSettingsaufrufen, und beim Beenden der Anwendungs gespeichert ist. Der MRU Update Befehl UI-Handler wird auch absolute Pfade in relative Pfade für die Anzeige im Menü Datei konvertieren.
CWinApp::OnOpenRecentFile ist der ON_COMMAND -Handler, der den eigentlichen Befehl ausführt. Es wird einfach der Dateiname aus der MRU-Liste und fordert CWinApp::OpenDocumentFile, das macht die ganze Arbeit die Datei zu öffnen und die Aktualisierung der MRU-Liste.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
CEditView stellt eine Implementierung dieses Befehls mit CEdit::Clear. Der Befehl wird deaktiviert, wenn keine aktuelle Auswahl vorhanden ist.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID Finden Sie im MFC-Tutorial-Beispiel ein Beispiel für die Implementierung KRITZELN.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
CEditView stellt eine Implementierung dieses Befehls, die als CF_TEXT mit CEdit::Copyden markierten Text in die Zwischenablage kopiert. Der Befehl wird deaktiviert, wenn keine aktuelle Auswahl vorhanden ist.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
CEditView stellt eine Implementierung von diesem Befehl, der den markierten Text in die Zwischenablage als CF_TEXT schneidet mit CEdit::Cut. Der Befehl wird deaktiviert, wenn keine aktuelle Auswahl vorhanden ist.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
CEditView stellt eine Implementierung dieses Befehls die fordert die Umsetzung-Hilfsfunktion OnEditFindReplace verwenden und die vorherigen Einstellungen der Suchen/Ersetzen in privaten Implementierung Variablen speichern. Die CFindReplaceDialog -Klasse wird verwendet, um das nicht-modales Dialogfeld für den Benutzer aufzufordern, verwalten.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
CEditView stellt eine Implementierung dieses Befehls die aktuellen Daten in die Zwischenablage ersetzt den markierten Text mit CEdit::Pastekopiert. Der Befehl wird deaktiviert, wenn keine CF_TEXT in der Zwischenablage vorhanden ist.
COleClientDoc bietet nur einen Update Befehl UI-Handler für diesen Befehl. Wenn die Zwischenablage keine integrierbare OLE-Element/Objekt enthält, wird der Befehl deaktiviert werden. Sie sind verantwortlich für das Schreiben des Handlers für den eigentlichen Befehl zu tun, die tatsächliche einfügen. Wenn die OLE-Anwendung auch andere Formate einfügen kann, sollten Sie Ihr eigenes Update Befehl UI-Handler in Ihrem Dokument (d. h. irgendwo vor COleClientDoc in den Befehl Ziel routing) oder bereitstellen.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Verwenden Sie zum Ersetzen der standardmäßigen OLE-Implementierung, COleClientItem::CanPaste.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
COleDocument bietet nur einen Update Befehl UI-Handler für diesen Befehl. Wenn die Zwischenablage keine Linkbar OLE Elementobjekt enthält, wird der Befehl deaktiviert werden. Sie sind verantwortlich für das Schreiben des Handlers für den eigentlichen Befehl zu tun, die tatsächliche einfügen. Wenn die OLE-Anwendung auch andere Formate einfügen kann, sollten Sie Ihr eigenes Update Befehl UI-Handler in Ihrem Dokument (d. h. irgendwo vor COleDocument im Befehl Ziel routing) oder bereitstellen.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Verwenden Sie zum Ersetzen der standardmäßigen OLE-Implementierung, COleClientItem::CanPasteLink.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse. MFC bietet keine dieser dialog.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
CEditView stellt eine Implementierung dieses Befehls den letzten Suchvorgang wiederholt. Private Implementierung Variablen für die letzten Find dienen. Der Befehl wird deaktiviert, wenn eine Suche nicht versucht werden kann.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
CEditView stellt eine Implementierung dieses Befehls die fordert die Umsetzung-Hilfsfunktion OnEditFindReplace verwenden und die vorherigen Einstellungen der Suchen/Ersetzen in privaten Implementierung Variablen speichern. Die CFindReplaceDialog -Klasse wird verwendet, um das nicht modale Dialogfeld verwalten, das den Benutzer auffordert.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
CEditView stellt eine Implementierung dieses Befehls, die alle den Text im Dokument auswählt. Der Befehl wird deaktiviert, wenn es keinen Text auswählen.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
CEditView stellt eine Implementierung dieses Befehls mit CEdit::Undo. Der Befehl wird deaktiviert, wenn CEdit::CanUndo FALSE zurückgibt.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für jedes CViewimplementieren-abgeleitete Klasse.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
CMDIFrameWnd::OnWindowNew implementiert dieses leistungsfähige Feature mithilfe der Dokumentvorlage des aktuellen Dokuments auf einem anderen Frame enthält eine andere Ansicht des aktuellen Dokuments erstellen.
Wie die meisten mehrere Dokument Interface (MDI) Fenster Menübefehle ist der Befehl deaktiviert, wenn es keine aktive untergeordnete MDI-Fenster ist.
Anpassung von diesem Befehlshandler wird nicht empfohlen. Wenn Sie einen Befehl, der zusätzliche Ansichten oder Rahmenfenster erstellt bereitstellen möchten, werden Sie wahrscheinlich besser erfinden Ihre eigenen Befehl. Sie können Klon-Code von CMDIFrameWnd::OnWindowNew und ändern es zu den bestimmten Frame und View-Klassen von Ihren Wünschen.
CMDIFrameWnd implementiert diese MDI-Standardbefehl in eine Implementierung Hilfsfunktion OnMDIWindowCmd. Dieses Hilfsprogramm MDI-Fenster Nachrichten Befehls-IDs zugeordnet und kann daher viel Code teilen.
Wie die meisten Menübefehle für MDI-Fenster ist der Befehl deaktiviert, wenn es keine aktive untergeordnete MDI-Fenster ist.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
CMDIFrameWnd implementiert diese MDI-Standardbefehl in eine Implementierung Hilfsfunktion OnMDIWindowCmd. Dieses Hilfsprogramm MDI-Fenster Nachrichten Befehls-IDs zugeordnet und kann daher viel Code teilen.
Wie die meisten Menübefehle für MDI-Fenster ist der Befehl deaktiviert, wenn es keine aktive untergeordnete MDI-Fenster ist.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
Dieser Befehl ist in CMDIFrameWnd wie ID_WINDOW_CASCADEimplementiert, außer einer anderen MDI-Fenster Nachricht wird verwendet für den Betrieb.
Sie sollten die Standardorientierung Fliese für Ihre Anwendung auswählen. Dies können Sie durch Ändern der ID für das Fenster "Kacheln" Menüelement ID_WINDOW_TILE_HORZ oder ID_WINDOW_TILE_VERT.
Dieser Befehl ist in CMDIFrameWnd wie ID_WINDOW_CASCADEimplementiert, außer einer anderen MDI-Fenster Nachricht wird verwendet für den Betrieb.
Sie sollten die Standardorientierung Fliese für Ihre Anwendung auswählen. Dies können Sie durch Ändern der ID für das Fenster "Kacheln" Menüelement ID_WINDOW_TILE_HORZ oder ID_WINDOW_TILE_VERT.
CView verarbeitet diesen Befehl für das CSplitterWnd -Implementierung. Wenn die Ansicht in einem unterteilten Fenster ist, wird dieser Befehl an die Implementierung Funktion CSplitterWnd::DoKeyboardSplitdelegieren. Dies wird den Splitter in einem Modus platzieren, die ermöglicht Benutzern eine gespalten oder ungespalten ein Splitterfenster.
Dieser Befehl ist deaktiviert, wenn die Ansicht nicht in einen splitter.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
Es gibt keine standard-Implementierung für eine Anwendung über Box. Anwendungs-Assistent erstellt die Standardanwendung erstellen eine benutzerdefinierten Dialogfeldklasse für die Anwendung und verwenden Sie es als Ihre About-Box. AppWizard wird auch den triviale Befehlshandler geschrieben, das dieser Befehl verarbeitet und ruft den dialog.
Sie werden fast immer mit diesem Befehl implementieren.
CWinApp::OnAppExit behandelt diesen Befehl durch Senden einer Nachricht WM_CLOSE an Hauptfenster der Anwendung. Der Standard Herunterfahren der Anwendung (dem schmutzigen Dateien und so weiter) wird durch die CFrameWnd -Implementierung behandelt.
Anpassung von diesem Befehlshandler wird nicht empfohlen. Überschreiben von CWinApp::SaveAllModified oder die CFrameWnd empfiehlt Schließung Logik.
Wenn Sie diesen Befehl implementieren möchten, empfehlen wir die Verwendung dieses Befehls-ID.
Hinweis&Nbsp; Müssen Sie dies in Ihrem CWinApp-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
CWinApp::OnHelpIndex verarbeitet dieser Befehl durch Aufrufen von trivial CWinApp::WinHelp.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
Hinweis&Nbsp; Müssen Sie dies in Ihrem CWinApp-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
CWinApp::OnHelpUsing verarbeitet dieser Befehl durch Aufrufen von trivial CWinApp::WinHelp.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
Hinweis&Nbsp; Müssen Sie dies in Ihrem CWinApp-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
CWinApp::OnContextHelp behandelt diesen Befehl durch Festlegen den Hilfecursor Modus, eine modale Schleife eingeben und warten auf den Benutzer zum Auswählen eines Fensters erhalten Sie Hilfe auf. Entnehmen Sie bitte für weitere Einzelheiten zur Implementierung helfen, MFC technischen Anmerkung 28.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
Hinweis&Nbsp; Müssen Sie dies in Ihrem CWinApp-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
CWinApp::OnHelp behandelt diesen Befehl immer den richtige Hilfe-Kontext für den aktuellen Anwendungskontext der. Dies behandelt einfach F1-Hilfe, Hilfe zu Message-Boxen und so weiter. Entnehmen Sie bitte für weitere Details über die MFC-Implementierung Hilfe technische Anmerkung 28.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
Hinweis&Nbsp; Müssen Sie dies in Ihrem CWinApp-abgeleitete Klasse Nachricht Karte zum Aktivieren dieser Funktion.
Dieser Befehl wird in der Regel CWinApp::OnHelpIndex zugeordnet.
Ein anderen Befehlshandler kann bereitgestellt werden, wenn eine Unterscheidung zwischen Standard Hilfe und der Hilfe-Index gewünscht wird.
CView verarbeitet diesen Befehl für das CSplitterWnd -Implementierung. Wenn die Ansicht in einem unterteilten Fenster ist, wird dieser Befehl an die Implementierung Funktion CSplitterWnd::OnNextPaneCmddelegieren. Dies wird die aktive Ansicht zum nächsten Bereich in den Splitter verschieben.
Dieser Befehl ist deaktiviert, wenn die Ansicht nicht in einen Splitter oder es keine nächsten Bereich gibt zu gehen.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
CView verarbeitet diesen Befehl für das CSplitterWnd -Implementierung. Wenn die Ansicht in einem unterteilten Fenster ist, wird dieser Befehl an die Implementierung Funktion CSplitterWnd::OnNextPaneCmddelegieren. Dies wird die aktive Ansicht zum vorherigen Bereich in den Splitter verschieben.
Dieser Befehl ist deaktiviert, wenn die Ansicht nicht in einen Splitter oder es keine vorherigen Bereich gibt zu gehen.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
Derzeit gibt es keine standard-Implementierung für diesen Befehl. Sie müssen dies für Ihre CViewimplementieren-abgeleitete Klasse, um bei der aktuellen Auswahl ein neues OLE-Element/Objekt einfügen.
Alle OLE-Client-Anwendungen sollte dieser Befehl implementieren. AppWizard, wird mit der Option OLE eine Skelettimplementierung OnInsertObject in der Ansichtsklasse erstellen, die Sie abgeschlossen haben.
Finden Sie im MFC-OLE-Beispiel OCLIENT -Beispiel für eine vollständige Implementierung dieses Befehls.
COleDocument behandelt diesen Befehl, indem mithilfe der MFC bereitgestellte Implementierung der standard OLE-Verknüpfungen-Dialog. Die Umsetzung der in diesem Dialogfeld ist über die COleLinksDialog -Klasse zugegriffen. Wenn das aktuelle Dokument keine Links enthält, ist der Befehl deaktiviert.
Anpassung von diesem Befehlshandler wird nicht empfohlen.
COleDocument verwendet dieses Befehls-ID-Bereich für die Verben, die von der aktuell ausgewählten OLE-Elements/Objekt unterstützt. Dies muss eine Reihe sein, da ein bestimmtes OLE Element/Objekttyp NULL oder mehr benutzerdefinierte Verben unterstützen kann. In der Anwendung im Menü haben Sie ein Menüelement mit der ID des ID_OLE_VERB_FIRST. Wenn das Programm ausgeführt wird, wird das Menü mit den entsprechenden Verb-Beschreibung (oder Popup-Menü mit vielen Verben) aktualisiert werden. Die Verwaltung des OLE-Menüs wird von AfxOleSetEditMenu, getan in der Update Befehl UI-Handler für diesen Befehl verarbeitet.
Es gibt keine expliziten Befehlshandler für die Verarbeitung aller die Befehls-ID in diesem Bereich. COleDocument::OnCmdMsg wird überschrieben, um sie in nullbasierte Verb Zahlen verwandeln fangen alle Befehls-IDs in diesem Bereich und starten Sie den Server für das Verb (mit COleClientItem::DoVerb).
Anpassung oder sonstige Nutzung dieses Befehls-ID-Bereich wird nicht empfohlen.
CFrameWnd verarbeitet diesen Befehl und der Update-Befehl UI-Handler den sichtbaren Zustand der Symbolleiste wechseln. Die Symbolleiste muss ein untergeordnetes Fenster des Rahmens mit der untergeordneten Fenster ID AFX_IDW_TOOLBAR. Der Befehlshandler tatsächlich schaltet die Sichtbarkeit der Symbolleiste-Fensters. CFrameWnd::RecalcLayout wird verwendet, um das Frame-Fenster mit der Symbolleiste in seinem neuen Zustand neu zeichnen. Der Update-Befehl UI-Handler überprüft das Menüelement, wenn die Symbolleiste sichtbar ist.
Anpassung von diesem Befehlshandler wird nicht empfohlen. Wenn Sie zusätzliche Symbolleisten hinzufügen möchten, sollten Sie zu klonen, und ändern Sie den Command-Ereignishandler und der Update-Befehl UI-Handler für diesen Befehl.
Dieser Befehl ist in CFrameWnd wie ID_VIEW_TOOLBAR, implementiert, außer verschiedene untergeordnete Fenster ID (AFX_IDW_STATUS_BAR) verwendet wird.
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