Outils définis par l'utilisateur

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

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 Class. Pour plus d'informations sur la personnalisation du code, consultez Personnalisation pour 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 Outils de la boîte de dialogue Personnalisation
Onglet personnalisation de la boîte de dialogue des Outils

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 Class 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 Class).

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 Class 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
  1. Obtenir un pointeur vers l'objet CUserToolsManager Class en appelant CWinAppEx::GetUserToolsManager.

  2. Pour chaque outil à créer, appelez CUserToolsManager::CreateNewTool. Cette méthode retourne un pointeur vers un objet CUserTool Class 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 Class comme quatrième paramètre de CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool instanciera et retournera une instance de cette classe à la place.

  3. 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 Class récupère automatiquement les icônes disponibles du programme spécifié dans l'appel à SetCommand.

Personnalisation pour MFC
CUserTool Class
CUserToolsManager Class
CWinAppEx Class

Afficher: