Outils définis par l'utilisateur

MFC prend en charge les outils définis par l'utilisateur. Un outil défini par l'utilisateur est une commande spéciale qui exécute un programme externe 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 la classe CWinAppEx. Pour plus d’informations sur la personnalisation, consultez Personnalisation pour MFC.

Si vous avez activé 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 montre la page Outils .

Tools tab in the Customize dialog box.
Onglet Outils de la boîte de dialogue de personnalisation

Activation de la prise en charge des 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 l’ID de commande. Cet ID de commande marque un emplacement dans un ou plusieurs menus où le framework 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 utilisateur que les utilisateurs peuvent définir. Dans l'exemple suivant, ceux-ci sont nommés ID_USER_TOOL1 à ID_USER_TOOL10.

Vous pouvez faire 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, ceux-ci sont nommés IDR_MENU_ARGS et IDR_MENU_DIRS. Pour chaque commande dans ces menus, définissez une chaîne dans la table de chaînes de votre 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 la classe CUserTool pour remplacer l’implémentation par défaut. Pour ce faire, transmettez les informations d’exécution de votre classe dérivée en tant que quatrième paramètre dans CWinAppEx ::EnableUserTools, au lieu de RUNTIME_CLASS(classe CUserTool).

Après avoir défini les constantes appropriées, appelez CWinAppEx ::EnableUserTools pour activer les outils définis par l’utilisateur.

L'appel de méthode suivant 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 Outils sera inclus dans la boîte de dialogue Personnalisation . Le framework remplace toute commande correspondant à l'ID de commande ID_TOOLS_ENTRY dans un menu par l'ensemble des outils utilisateur actuellement définis lorsqu'un utilisateur ouvre ce menu. Les ID de commande ID_USER_TOOL1 à ID_USER_TOOL10 sont réservés à l'utilisation des outils définis par l'utilisateur. La classe CUserTool gère les appels aux outils utilisateur. L’onglet outil de la boîte de dialogue Personnalisation fournit des boutons à droite des champs d’entrée d’argument et d’annuaire pour accéder aux menus IDR_MENU_ARGS et IDR_MENU_DIRS. Lorsqu’un utilisateur sélectionne une commande dans l’un de ces menus, l’infrastructure ajoute à la zone de texte appropriée la chaîne dont l’ID de ressource est égal à l’ID de commande.

Ajout d'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. Dans cette méthode, vous devez effectuer les étapes suivantes :

Pour ajouter de nouveaux outils dans LoadFrame
  1. Obtenez un pointeur vers l’objet de classe CUserToolsManager en appelant CWinAppEx ::GetUserToolsManager.

  2. Pour chaque outil que vous souhaitez créer, appelez CUserToolsManager ::CreateNewTool. Cette méthode retourne un pointeur vers un objet CUserTool Class et ajoute l’outil utilisateur nouvellement créé à la collection interne d’outils. Si vous avez fourni les informations d’exécution pour une classe dérivée de la classe CUserTool en tant que quatrième paramètre de CWinAppEx ::EnableUserTools, CUserToolsManager ::CreateNewTool instancie et retourne une instance de cette classe à la place.

  3. Pour chaque outil, définissez son étiquette de texte en paramétrant CUserTool::m_strLabel et définissez sa commande en appelant CUserTool::SetCommand. L’implémentation par défaut de la classe CUserTool récupère automatiquement les icônes disponibles à partir du programme spécifié dans l’appel à SetCommand.

Voir aussi

Personnalisation pour MFC
CUserTool, classe
CUserToolsManager, classe
CWinAppEx, classe