Benutzerdefinierte Tools
MFC unterstützt benutzerdefinierte Tools.Ein benutzerdefiniertes Tool ist ein spezieller Befehl, der ein externes, vom Benutzer angegebene Programm ausführt.Sie können den Prozess Anpassungen verwenden, um benutzerdefinierte Tools zu verwalten.Allerdings können Sie diesen Vorgang nicht verwenden, wenn das Anwendungsobjekt nicht von CWinAppEx-Klasse abgeleitet ist.Weitere Informationen zu Anpassungen finden Sie unter Anpassung für MFC.
Wenn Sie benutzerdefinierte Tool Unterstützung der Anpassung aktiviert ist, wird das Dialogfeld automatisch die Registerkarte Extras ein.Die folgende Abbildung zeigt die Seite Extras an.
Registerkarte Tool Dialogfeld Anpassung
Benutzerdefiniertes Tool Aktivieren der Unterstützung
Um benutzerdefinierte Tools in einer Anwendung ermöglichen, rufen Sie CWinAppEx::EnableUserTools.Sie müssen jedoch mehrere Konstanten in Ressourcendateien der Anwendung erstmalig definieren, die als Parameter für diesen Aufruf zu verwenden.
Im Ressourcen-Editor erstellen Sie einen blinden Befehl, der eine entsprechende Befehl verwendet.Im folgenden Beispiel werden ID_TOOLS_ENTRY als die Befehls-ID.Die Befehls-ID kennzeichnet eine Position in einem oder mehreren Menüs, in dem das Framework die benutzerdefinierten Tools eingefügt wird.
Sie müssen jede nachfolgende IDs in der Zeichenfolgentabelle beiseite setzen, um die benutzerdefinierten Tools darzustellen.Die Anzahl der Zeichenfolgen, die Sie beiseite stellen, entspricht der maximale Anzahl von Benutzern toolen, die die Benutzer definieren können.Im folgenden Beispiel werden diese ID_USER_TOOL1 von ID_USER_TOOL10 benannt.
Sie können Vorschläge, um Benutzern zu helfen, Verzeichnissen und Argumente für externe Programme aus, die als Tools aufgerufen werden.Dazu erstellen Sie zwei Popupmenüs im Ressourcen-Editor.Im folgenden Beispiel werden diese IDR_MENU_ARGS und IDR_MENU_DIRS benannt.Für jeden Befehl in den Menüs, definieren Sie eine Zeichenfolge in Ihrer Anwendung zeichenfolgentabelle.Die Ressourcen-ID der Zeichenfolge müssen gleich sein, die Befehls-ID.
Sie können eine abgeleitete Klasse von CUserTool-Klasse erstellen, um die Standardimplementierung zu ersetzen.Hierzu übergeben Sie die Laufzeitinformationen für die abgeleitete Klasse als vierte Parameter in CWinAppEx::EnableUserTools, statt RUNTIME_CLASS (CUserTool-Klasse).
Nachdem Sie die entsprechenden Konstanten definieren, rufen Sie CWinAppEx::EnableUserTools an, um benutzerdefinierte Tools zu aktivieren.
Der nächste 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 Registerkarte Tool auf dem Dialogfeld Anpassung enthalten.Das Framework ersetzt jeden Befehl die Befehls-ID ab, das mit ID_TOOLS_ENTRY in einem Menü durch den Satz der gegenwärtig definierten Benutzer toolen, wenn ein Benutzer das Menü geöffnet.Die Befehls-IDs von ID_USER_TOOL1ID_USER_TOOL10 ist für die Verwendung für benutzerdefinierte Tools reserviert.Die Klasse behandelt CUserTool-Klasse Aufrufe an den Benutzer toolen.Die Registerkarte des Dialogfelds Anpassung Tool stellt Schaltflächen auf der rechten Seite der Argument- und Verzeichnis eingabefelder bereit, um die Menüs IDR_MENU_ARGS und IDR_MENU_DIRS zuzugreifen., wenn ein Benutzer einen Befehl auswählt, der einem dieser Menüs das Framework fügt dem entsprechenden Textfeld die Zeichenfolge an, die die Ressourcen-ID gleich der Befehls-ID hat
Einbeziehen vordefinierte Tools
Wenn Sie mehrere Tools für den Anwendungsstart vordefinieren möchten, müssen Sie die CFrameWnd::LoadFrame-Methode des Hauptfensters der Anwendung überschreiben.In dieser Methode müssen Sie die folgenden Schritte ausführen.
So fügen LoadFrame in neue Tools
Abrufen eines Zeigers an das CUserToolsManager-Klasse-Objekt, indem er CWinAppEx::GetUserToolsManager aufruft.
Für jedes Tool, das Sie erstellen möchten, rufen Sie CUserToolsManager::CreateNewTool.Diese Methode gibt einen Zeiger auf einen CUserTool-Klasse-Objekt zurück und fügt die neu erstellte Benutzer der internen Auflistung von Tools Tool hinzu.Wenn Sie die Laufzeitinformationen für eine abgeleitete Klasse CUserTool-Klasse als vierte Parameter aus CWinAppEx::EnableUserTools bereitgestellt haben, instanziiert CUserToolsManager::CreateNewTool und gibt stattdessen eine Instanz dieser Klasse zurück.
Für jedes Tool legen Sie die zugehörige Beschriftung festlegen, indem Sie CUserTool::m_strLabel fest, und legen Sie den Befehl fest, indem Sie CUserTool::SetCommand aufgerufen haben.Die Standardimplementierung von CUserTool-Klasse ruft automatisch die verfügbaren Symbole vom Programm ab, das im Aufruf von SetCommand angegeben wird.