Freigeben über


Benutzerdefinierte Tools

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

Wenn Sie benutzerdefinierte Tools haben, schließt das Anpassungsdialogfeld automatisch die Registerkarte Tools ein. Die folgende Abbildung zeigt die Seite Tools an.

Anpassungsdialogfeld Toolregisterkarte

Registerkarte "Extras" im Dialogfeld "Anpassen"

Aktivieren der benutzerdefinierten Tools

Um benutzerdefinierte Tools in einer Anwendung zu ermöglichen, rufen Sie CWinAppEx::EnableUserTools auf. Sie müssen jedoch mehrere Konstanten in den Ressourcendateien der Anwendung zuerst definieren, als Parameter für den Aufruf zu verwenden.

Im Ressourcen-Editor erstellen Sie einen Befehl einem Dummy-, der ID eine entsprechende Befehl verwendet Im folgenden Beispiel verwenden Sie ID_TOOLS_ENTRY als Befehl ID Diese Befehls-ID markiert einen Speicherort in einen oder mehreren Menüs, in dem das Framework die benutzerdefinierten Tools ein.

Sie müssen einige nachfolgende IDs in der Zeichenfolgentabelle zurückstellen, um die benutzerdefinierten Tools darzustellen. Die Anzahl von Zeichenfolgen, die Sie zurückstellen, entspricht die maximale Anzahl Benutzertools, die die Benutzer definieren können. Im folgenden Beispiel werden diese ID_USER_TOOL1 durch ID_USER_TOOL10.

Sie können die Vorschläge Benutzern bereitstellen, das beim Diskutieren, Verzeichnisse und Argumente für die externe Programme auszuwählen, die mit Tools aufgerufen werden. Hierzu, erstellen Sie zwei Popupmenüs im Ressourcen-Editor. Im folgenden Beispiel werden diese IDR_MENU_ARGS und IDR_MENU_DIRS. Für jeden Befehl in den Menüs, definieren Sie eine Zeichenfolge in der Anwendungszeichenfolgentabelle. Die Ressourcen-ID der Zeichenfolge muss gleich der Befehl ID sein

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

Nachdem Sie die erforderlichen Konstanten definieren, rufen Sie CWinAppEx::EnableUserTools, um aus benutzerdefinierten Tools zu aktivieren.

Der folgenden Methodenaufruf veranschaulicht, wie diese Konstanten verwendet:

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

In diesem Beispiel wird die Toolregisterkarte im Dialogfeld Anpassung enthalten. Das Framework ersetzt jeden Befehl, der die Befehls-ID ID_TOOLS_ENTRY in einem Menü mit dem Satz des momentan definierten Benutzers verarbeitet, wenn ein Benutzer das Menü geöffnet wird. Die Befehls-IDs ID_USER_TOOL1 von ID_USER_TOOL10 werden zur Verwendung für benutzerdefinierte Tools reserviert. Die CUserTool-Klasse verarbeitet Aufrufe die Benutzertools. Die Toolregisterkarte des Dialogfelds Anpassung stellt Schaltflächen auf der rechten Seite der Verzeichniseingabefelder Argument- und bereit, um auf die Menüs IDR_MENU_ARGS und IDR_MENU_DIRS zuzugreifen., wenn ein Benutzer einen Befehl aus einem dieser Menüs auswählen, dem Framework fügt zum entsprechenden Textfeld die Zeichenfolge, die die Ressourcen-ID gleich der Befehl ID verfügt

Durch vordefinierte Tools

Wenn Sie mehrere Tools auf dem Anwendungsstart vordefinieren möchten, müssen Sie die Methode CFrameWnd::LoadFrame des Hauptfensters der Anwendung überschrieben. In dieser Methode müssen Sie die folgenden Schritte ausführen.

So neuen Tools in LoadFrame hinzufügen

  1. Rufen Sie einen Zeiger auf das CUserToolsManager-Klasse-Objekt, indem Sie CWinAppEx::GetUserToolsManager aufrufen.

  2. Für jedes Tool, das Sie erstellen möchten, rufen Sie CUserToolsManager::CreateNewTool. Diese Methode gibt einen Zeiger auf ein CUserTool-Klasse-Objekt zurück und fügt dem neu erstellten Benutzertool der internen Auflistung der Tools hinzugefügt. Wenn Sie die Laufzeitinformationen für eine abgeleitete Klasse CUserTool-Klasse als vierte Parameter von CWinAppEx::EnableUserTools bereitgestellt haben, instanziiert CUserToolsManager::CreateNewTool und gibt eine Instanz dieser Klasse stattdessen zurück.

  3. Für jedes Tool Festlegen seiner Beschriftung, indem Sie CUserTool::m_strLabel festlegen fest und den Befehl fest, indem Sie CUserTool::SetCommand aufgerufen haben. Die Standardimplementierung von CUserTool-Klasse wird automatisch verfügbaren Symbole vom Programm ab, das im Aufruf von SetCommand angegeben wird.

Siehe auch

Referenz

CUserTool-Klasse

CUserToolsManager-Klasse

CWinAppEx-Klasse

Konzepte

Anpassung für MFC