Benutzerdefinierte Tools

MFC unterstützt benutzerdefinierte Tools. Ein benutzerdefiniertes Tool ist ein spezieller Befehl, der ein externes, vom Benutzer angegebenes Programm ausführt. Sie können den Anpassungsprozess verwenden, um benutzerdefinierte Tools zu verwalten. Sie können diesen Prozess jedoch nicht verwenden, wenn Ihr Anwendungsobjekt nicht von der CWinAppEx-Klasse abgeleitet ist. Weitere Informationen zur Anpassung finden Sie unter Anpassung für MFC.

Wenn Sie die unterstützung für benutzerdefinierte Tools aktiviert haben, enthält das Dialogfeld "Anpassung" automatisch die Registerkarte "Extras ". Die folgende Abbildung zeigt die Seite "Extras ".

Tools tab in the Customize dialog box.
Registerkarte 'Anpassung' im Dialogfeld 'Extras'

Aktivieren der Unterstützung von benutzerdefinierten Tools

Rufen Sie CWinAppEx::EnableUserTools auf, um benutzerdefinierte Tools in einer Anwendung zu aktivieren. Sie müssen jedoch zunächst mehrere Konstanten in den Ressourcendateien Ihrer Anwendung definieren, die als Parameter für diesen Aufruf verwendet werden sollen.

Erstellen Sie im Ressourcen-Editor einen Dummy-Befehl, der eine entsprechende Befehls-ID verwendet. Im folgenden Beispiel wird als Befehls-ID verwendet ID_TOOLS_ENTRY . Diese Befehls-ID kennzeichnet einen Speicherort in einem oder mehreren Menüs, in dem das Framework die benutzerdefinierten Tools einfügt.

Sie müssen einige aufeinander folgende IDs in der Zeichenfolgentabelle festlegen, um die benutzerdefinierten Tools darzustellen. Die Anzahl der Zeichenfolgen, die Sie beiseite legen, entspricht der maximalen Anzahl von Benutzertools, die die Benutzer definieren können. Im folgenden Beispiel werden diese durch ID_USER_TOOL10benanntID_USER_TOOL1.

Sie können den Benutzern Vorschläge anbieten, um ihnen bei der Auswahl von Verzeichnissen und Argumenten für die externen Programme zu helfen, die als Tools bezeichnet werden. Erstellen Sie dazu zwei Popupmenüs im Ressourcen-Editor. Im folgenden Beispiel werden diese benannt IDR_MENU_ARGS und IDR_MENU_DIRS. Definieren Sie für jeden Befehl in diesen Menüs eine Zeichenfolge in der Anwendungszeichenfolgentabelle. Die Ressourcen-ID der Zeichenfolge muss der Befehls-ID entsprechen.

Sie können auch eine abgeleitete Klasse von der CUserTool-Klasse erstellen, um die Standardimplementierung zu ersetzen. Übergeben Sie dazu die Laufzeitinformationen für die abgeleitete Klasse als vierten Parameter in CWinAppEx::EnableUserTools anstelle von RUNTIME_CLASS(CUserTool Class).

Rufen Sie nach dem Definieren der entsprechenden Konstanten CWinAppEx::EnableUserTools auf, um benutzerdefinierte Tools zu aktivieren.

Der folgende Methodenaufruf zeigt, wie diese Konstanten verwendet werden:

EnableUserTools(ID_TOOLS_ENTRY,
                ID_USER_TOOL1,
                ID_USER_TOOL10,
                RUNTIME_CLASS(CUserTool),
                IDR_MENU_ARGS,
                IDR_MENU_DIRS);

In diesem Beispiel wird die Registerkarte "Extras" im Dialogfeld "Anpassung " angezeigt. Das Framework ersetzt alle Befehle, die der Befehls-ID ID_TOOLS_ENTRY in jedem Menü entsprechen, durch den Satz der aktuell definierten Benutzertools, wenn ein Benutzer dieses Menü öffnet. Die Befehls-IDs ID_USER_TOOL1 ID_USER_TOOL10 durch sind für die Verwendung für benutzerdefinierte Tools reserviert. Die Klasse CUserTool-Klasse verarbeitet Aufrufe der Benutzertools. Auf der Registerkarte "Tool" des Dialogfelds "Anpassung " werden Schaltflächen rechts neben den Argument- und Verzeichniseintragsfeldern bereitgestellt, um auf die Menüs IDR_MENU_ARGS und IDR_MENU_DIRS zuzugreifen. Wenn ein Benutzer einen Befehl aus einem dieser Menüs auswählt, fügt das Framework an das entsprechende Textfeld die Zeichenfolge mit der Ressourcen-ID an, die der Befehls-ID entspricht.

Einschließen vordefinierter Tools

Wenn Sie einige Tools beim Starten der Anwendung vordefinieren möchten, müssen Sie die CFrameWnd::LoadFrame-Methode des Standard Fensters Ihrer Anwendung überschreiben. In dieser Methode müssen Sie die folgenden Schritte ausführen.

So fügen Sie neue Tools in LoadFrame hinzu
  1. Rufen Sie einen Zeiger auf das CUserToolsManager-Klassenobjekt ab, indem Sie CWinAppEx::GetUserToolsManager aufrufen.

  2. Rufen Sie für jedes Tool, das Sie erstellen möchten, CUserToolsManager::CreateNewTool auf. Diese Methode gibt einen Zeiger auf ein CUserTool Class -Objekt zurück und fügt das neu erstellte Benutzertool der internen Auflistung von Tools hinzu. Wenn Sie die Laufzeitinformationen für eine abgeleitete Klasse der CUserTool-Klasse als vierten Parameter von CWinAppEx::EnableUserTools Bereitgestellt haben, instanziieren und geben Sie stattdessen eine Instanz dieser Klasse zurück.

  3. Legen Sie für jedes Tool die Beschriftung fest, indem CUserTool::m_strLabel Sie den Befehl durch Aufrufen CUserTool::SetCommandfestlegen und festlegen. Die Standardimplementierung der CUserTool-Klasse ruft automatisch verfügbare Symbole aus dem Programm ab, das im Aufruf von SetCommand.

Siehe auch

Anpassung für MFC
CUserTool-Klasse
CUserToolsManager-Klasse
CWinAppEx-Klasse