outils définis par l'utilisateur
MFC prend en charge les outils définis pour l'utilisateur. Un outil défini par l'utilisateur est une commande particulière qui exécute un programme externe et spécifié par l'utilisateur. Vous pouvez utiliser le processus de personnalisation pour gérer les outils définis par l'utilisateur. Toutefois, vous ne pouvez pas utiliser ce processus si votre objet d'application n'est pas dérivé de CWinAppEx, classe. Pour plus d'informations sur la personnalisation du code, consultez Personnalisation de MFC.
Si vous activez la prise en charge des outils définis par l'utilisateur, la boîte de dialogue de personnalisation inclut automatiquement l'onglet Outils. L'illustration suivante présente la page Outils.
Onglet personnalisation de la boîte de dialogue des Outils
Activer la prise en charge d'outils définis par l'utilisateur
Pour activer les outils définis par l'utilisateur dans une application, appelez CWinAppEx::EnableUserTools. Toutefois, vous devez d'abord définir plusieurs constantes dans les fichiers de ressources de votre application à utiliser comme paramètres pour cet appel.
Dans l'éditeur de ressources créez une commande factice qui utilise un ID de commande approprié Dans l'exemple suivant, nous utilisons ID_TOOLS_ENTRY comme ID de commande Cet ID de commande signale un emplacement dans un ou plusieurs menus où l'environnement insèrera les outils définis par l'utilisateur.
Vous devez mettre de côté certains ID consécutifs dans la table de chaînes pour représenter les outils définis par l'utilisateur. Le nombre de chaînes à mettre de côté est égal au nombre maximal d'outils d'utilisateur que les utilisateurs peuvent définir. Dans l'exemple suivant, ils sont appelés ID_USER_TOOL1 via ID_USER_TOOL10.
Vous pouvez offrir des suggestions aux utilisateurs pour les aider à sélectionner des répertoires et des arguments pour les programmes externes qui seront appelés en tant qu'outils. Pour cela, créez deux menus contextuels dans l'éditeur de ressources. Dans l'exemple suivant, ils sont appelés IDR_MENU_ARGS et IDR_MENU_DIRS. Pour chaque commande dans les menus, définissez la chaîne dans la table de chaînes d'application. L'ID de ressource de la chaîne doit être égal à l'ID de commande
Vous pouvez également créer une classe dérivée de CUserTool, classe pour remplacer l'implémentation par défaut. Pour cela, transmettez les informations d'exécution pour votre classe dérivée comme quatrième paramètre dans CWinAppEx::EnableUserTools, au lieu de RUNTIME_CLASS (CUserTool, classe).
Après avoir défini les constantes appropriées, appelez CWinAppEx::EnableUserTools pour activer les outils définis par l'utilisateur.
L'appel de la méthode suivante montre comment utiliser ces constantes :
EnableUserTools(ID_TOOLS_ENTRY, ID_USER_TOOL1, ID_USER_TOOL10, RUNTIME_CLASS(CUserTool), IDR_MENU_ARGS, IDR_MENU_DIRS);
Dans cet exemple, l'onglet d'outils est inclus dans la boîte de dialogue Personnalisation. L'environnement remplace toute commande qui correspond à l'ID de commande ID_TOOLS_ENTRY dans n'importe quel élément avec l'ensemble d'outils définis par l'utilisateur lorsqu'un utilisateur ouvre le menu. Les IDs de commande ID_USER_TOOL1 via ID_USER_TOOL10 sont réservés à l'utilisation des outils définis par l'utilisateur. La classe CUserTool, classe traite les appels aux outils utilisateur. L'onglet d'outils de la boîte de dialogue Personnalisation fournit des boutons situés à droite de l'argument et des champs d'entrée du répertoire pour accéder aux menus IDR_MENU_ARGS et IDR_MENU_DIRS.Lorsqu'un utilisateur sélectionne une commande de l'un de ces menus, l'environnement ajoute à la zone de texte la chaîne qui possède l'ID ressource identique à celui de l'ID de commande.
Y compris les outils prédéfinis
Si vous souhaitez prédéfinir certains outils au démarrage de l'application, vous devez remplacer la méthode CFrameWnd::LoadFrame de la fenêtre principale de votre application. Avec cette méthode, vous devez suivre les étapes suivantes :
Pour ajouter de nouveaux outils dans LoadFrame
Obtenir un pointeur vers l'objet CUserToolsManager, classe en appelant CWinAppEx::GetUserToolsManager.
Pour chaque outil à créer, appelez CUserToolsManager::CreateNewTool. Cette méthode retourne un pointeur vers un objet CUserTool, classe et ajoute l'outil d'utilisateur créé récemment à la collection interne d'outils. Si vous avez fourni des informations d'exécution à une classe dérivée de CUserTool, classe comme quatrième paramètre de CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool instanciera et retournera une instance de cette classe à la place.
Pour chaque outil, définissez son étiquette de texte en définissant CUserTool::m_strLabel et définissez sa commande en appelant CUserTool::SetCommand. L'implémentation par défaut de CUserTool, classe récupère automatiquement les icônes disponibles du programme spécifié dans l'appel à SetCommand.