Exemplarische Vorgehensweise: Platzieren von Steuerelementen auf Symbolleisten

In diesem Thema wird beschrieben, wie eine Symbolleisten-Schaltfläche hinzufügt, die ein Windows-Steuerelement zu einer Symbolleiste enthält.In MFC muss eine Symbolleisten-Schaltfläche CMFCToolBarButton-Klasse abgeleitete Klasse sein, z. B. CMFCToolBarComboBoxButton-Klasse, CMFCToolBarEditBoxButton-Klasse, CMFCDropDownToolbarButton-Klasse oder CMFCToolBarMenuButton-Klasse.

Steuerelemente hinzufügen auf Symbolleisten

Um ein Steuerelement auf einer Symbolleiste hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Reservieren Sie blinden Ressourcen-ID für die Schaltfläche in der Elemente auf einer Ressource.Weitere Informationen darüber, wie Schaltflächen mit dem Symbolleisten-Editor in Visual Studio finden Sie unter Symbolleisten-Editor Thema beschrieben.

  2. Reservieren Sie ein Bild (Schaltflächensymbol Symbolleisten) für die Schaltfläche Bitmaps in allen Elementen der Symbolleiste.

  3. Im Meldungshandler, der die AFX_WM_RESETTOOLBAR Meldung verarbeitet, gehen Sie wie folgt vor:

    1. Erstellen Sie das Button-Steuerelement, indem Sie CMFCToolbarButton abgeleitete Klasse verwenden.

    2. Ersetzen Sie die blinde Schaltfläche durch das neue Steuerelement, indem Sie CMFCToolBar::ReplaceButton verwenden.Sie können die Schaltflächen Objekt auf dem Stapel erstellt werden, da ReplaceButton die Schaltflächen Objekt kopiert, und die Kopie beibehalten wird.

HinweisHinweis

Wenn Sie Anpassungen in der Anwendung aktiviert ist, müssen Sie möglicherweise die Symbolleiste zurücksetzen, indem Sie die Schaltfläche Zurücksetzen auf der Registerkarte Symbolleisten des Dialogfelds Anpassen verwenden, um das aktualisierte Steuerelement in der Anwendung zu überprüfen, nachdem Sie die Neukompilierung.Der Symbolleisten Zustand wird in der Windows-Registrierung gespeichert, und die Registrierungsinformationen werden geladen und angewendet, nachdem die ReplaceButton-Methode während der Anwendung starts ausgeführt wurde.

Symbolleisten-Steuerelemente und Anpassung

Die Registerkarte Befehle des Dialogfelds Anpassen enthält eine Liste von Befehlen, die in der Anwendung zur Verfügung stehen.Standardmäßig wird das Dialogfeld Anpassen die Anwendung Menüs und erstellt eine Liste der Eigenschaftensymbolleiste Standard in jeder Kategorie Menü.Um die erweiterte Funktionalität zu erhalten die die Symbolleisten-Steuerelemente bereitstellen, müssen Sie die Symbolleistenschaltfläche Standard durch das benutzerdefinierte Steuerelement im Dialogfeld Anpassen ersetzen.

Wenn Sie die Anpassung aktivieren, stellen Sie Folgendes Anpassen im Dialogfeld Anpassung für OnViewCustomize, indem Sie die CMFCToolBarsCustomizeDialog-Klasse-Klasse verwenden.Bevor Sie das Dialogfeld Anpassen anzeigen, indem Sie CMFCToolBarsCustomizeDialog::Create aufrufen, rufen Sie CMFCToolBarsCustomizeDialog::ReplaceButton auf, um die Schaltfläche Standard durch das neue Steuerelement zu ersetzen.

Beispiel: Ein Suchen-Kombinationsfeld erstellen

In diesem Abschnitt wird beschrieben, wie ein Find Kombinationsfeld-Steuerelement erstellen, das auf einer Symbolleiste angezeigt und bearbeitete zuletzt verwendeten Suchzeichenfolgen enthält.Der Benutzer kann eine Zeichenfolge im Steuerelement eingeben und die ENTER-Taste drücken, um ein Dokument zu suchen, oder drücken Sie die CANCEL-TASTE, um den Fokus auf den Großrechner zurückzugeben.In diesem Beispiel wird davon ausgegangen, dass das Dokument in CEditView-Klasse abgeleitete Sicht angezeigt wird.

Bb983718.collapse_all(de-de,VS.110).gifDas Erstellen Suchen-Steuerelement

Erstellen Sie zunächst das Find Kombinationsfeld-Steuerelement:

  1. Fügen Sie die Schaltfläche und die zugehörigen Befehle den Anwendungsressourcen hinzu:

    1. In den Anwendungsressourcen fügen Sie eine neue Schaltfläche mit einer ID_EDIT_FIND Befehls-ID einer Symbolleiste in der Anwendung und Bitmaps hinzu, die der Symbolleiste zugewiesen werden.

    2. Erstellen Sie ein neues Menüelement mit der ID_EDIT_FIND-Befehl ID.

    3. Fügen Sie eine neue Zeichenfolge "\ nFind den Text suchen" der Zeichenfolgentabelle zuweisen und diesem eine Befehls-ID ID_EDIT_FIND_COMBO hinzuDiese ID wird als die Befehls-ID der Find Schaltfläche Kombinationsfeld verwendet.

      HinweisHinweis

      Da ID_EDIT_FIND Befehl ein Standardname ist, der durch CEditView verarbeitet wird, ist es nicht erforderlich, einen speziellen Handler für diesen Befehl zu implementieren.Sie müssen jedoch einen Handler für den Befehl Neu ID_EDIT_FIND_COMBO implementieren.

  2. Erstellen Sie eine neue Klasse, CFindComboBox von CComboBox-Klasse abgeleitet ist.

  3. In der CFindComboBox-Klasse überschreiben Sie die virtuelle Methode PreTranslateMessage.Diese Methode ermöglicht das Kombinationsfeld, um die WM_KEYDOWN Nachricht zu verarbeiten.Wenn der Benutzer die CANCEL-TASTE (VK_ESCAPE) erreicht, geben Sie den Fokus auf das Hauptrahmenfenster zurück.Wenn der Benutzer die EINGABETASTE VK_ENTER() lässt, senden Sie in das Hauptrahmenfenster ein WM_COMMAND Meldung, die die ID_EDIT_FIND_COMBO Befehl ID enthält.

  4. Erstellen Sie eine Klasse für die Find Schaltfläche Kombinationsfeld, abgeleitet von CMFCToolBarComboBoxButton-Klasse.In diesem Beispiel wird davon CFindComboButton benannt.

  5. Der Konstruktor von CMFCToolbarComboBoxButton akzeptiert drei Parameter: Die Befehls-ID der Schaltfläche des Schaltflächensymbol indexes und Stil des Kombinationsfelds.Legen Sie für diese Parameter wie folgt fest:

    1. Führen Sie ID_EDIT_FIND_COMBO als die Befehls-ID.

    2. Verwenden Sie CCommandManager::GetCmdImage mit ID_EDIT_FIND, um den Index des Bilds.

    3. Eine Liste verfügbarer Kombinationsfeld Dateiformaten finden Sie Kombinationsfeld-Formate.

  6. Überschreiben Sie in der CFindComboButton-Klasse die CMFCToolbarComboBoxButton::CreateCombo-Methode.Hier sollten Sie das CFindComboButton-Objekt zurückgeben und einen Zeiger darauf erstellen.

  7. Verwenden Sie das IMPLEMENT_SERIAL Makro, um die Kombinatione Schaltfläche permanent zu erstellen.Der Manager Arbeitsbereich automatisch lädt und speichert den Zustand der Schaltfläche in der Windows-Registrierung.

  8. Implementieren Sie den ID_EDIT_FIND_COMBO-Handler in der Ansicht Dokumente.Verwenden Sie CMFCToolBar::GetCommandButtons mit ID_EDIT_FIND_COMBO, um alle Schaltflächen Find Kombinationsfelds abzurufen.Es kann mehrere Kopien einer Schaltfläche mit derselben Befehls-ID geben aufgrund der Anpassung.

  9. Im ID_EDIT_FIND-Message-Handler OnFindCMFCToolBar::IsLastCommandFromButton verwendet, um zu bestimmen, ob der Befehl Suche in der Find Schaltfläche Kombinationsfeld gesendet wurde.Wenn dies der Fall ist, suchen Sie den Text, und fügen Sie dem Kombinationsfeld mit der Suchzeichenfolge hinzu.

Bb983718.collapse_all(de-de,VS.110).gifDas Suchen-Steuerelement auf der Hauptsymbolleiste hinzu

Um die Kombinationsfeld auf der Symbolleiste auf die Schaltfläche hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Implementieren Sie den AFX_WM_RESETTOOLBAR Meldungshandler OnToolbarReset in das Hauptrahmenfenster.

    HinweisHinweis

    Das Framework sendet diese Meldung in das Hauptrahmenfenster, wenn eine Symbolleiste während der Anwendung starts initialisiert wird oder wenn eine Symbolleiste während der Anpassung zurückgesetzt wird.In beiden Fällen müssen Sie die Symbolleistenschaltfläche Standard von der benutzerdefinierten Schaltfläche Kombinationsfeld Find ersetzen.

  2. Im AFX_WM_RESETTOOLBAR-Handler überprüfen Sie die Symbolleiste ID der WPARAM d. h. AFX_WM_RESETTOOLBAR Meldung.Wenn die Symbolleiste ID gleich der der Symbolleiste auf die Schaltfläche Kombinationsfeld Find enthält, rufen Sie CMFCToolBar::ReplaceButton auf, um die Find Schaltfläche ersetzt werden soll (die Schaltfläche mit der Befehls-ID ID_EDIT_FIND) mit einem CFindComboButton-Objekt.

    HinweisHinweis

    Sie können ein CFindComboBox-Objekt auf dem Stapel erstellt werden, da ReplaceButton die Schaltflächen Objekt kopiert, und die Kopie beibehalten wird.

Bb983718.collapse_all(de-de,VS.110).gifDas Hinzufügen Anpassens-Dialogfeld dem Suchen-Steuerelement

Geben Sie im Handler Anpassung OnViewCustomize, rufen Sie CMFCToolBarsCustomizeDialog::ReplaceButton, um die Find Schaltfläche ersetzt werden soll (die Schaltfläche mit der Befehls-ID ID_EDIT_FIND) mit einem CFindComboButton-Objekt.

Siehe auch

Referenz

Hierarchien-Diagramm

CMFCToolBar-Klasse

CMFCToolBarButton-Klasse

CMFCToolBarComboBoxButton-Klasse

CMFCToolBarsCustomizeDialog-Klasse

Weitere Ressourcen

MFC-Klassen