Outils définis par l'utilisateur
Outils définis par l'utilisateur MFC prend en charge.Un outil défini par l'utilisateur est une commande spéciale 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 de l'application n'est pas dérivé de CWinAppEx, classe.Pour plus d'informations sur la personnalisation, consultez Personnalisation de MFC.
Si vous prise en charge définie par l'utilisateur active d'outils, la boîte de dialogue personnalisation inclut automatiquement l'onglet Outils .l'illustration suivante montre la page Outils .
Onglet outils de boîte de dialogue personnalisation
Activer la prise en charge définie par l'utilisateur d'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 fictive qui utilise un ID de commande appropriéeDans l'exemple suivant, nous utilisons ID_TOOLS_ENTRYcomme ID de commandeCet ID de commande marque un emplacement dans un ou plusieurs menus où l'infrastructure que vous les outils définis par l'utilisateur.
Vous devez mettre de côté des identificateurs consécutifs dans la table de chaînes pour représenter les outils définis par l'utilisateur.Le nombre de chaînes que vous mettez côté est égal au nombre maximal d'outils utilisateur que les utilisateurs peuvent configurer.Dans l'exemple suivant, ceux-ci sont nommés ID_USER_TOOL1 via ID_USER_TOOL10.
Vous pouvez offrir des suggestions aux utilisateurs pour sélectionner des répertoires et des arguments pour les programmes externes qui seront appelés comme outils.Pour ce faire, créez deux menus contextuels dans l'éditeur de ressources.Dans l'exemple suivant ils sont nommés IDR_MENU_ARGS et IDR_MENU_DIRS.Pour chaque commande dans ces menus, définissez une chaîne dans votre 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 ce faire, passez les informations d'exécution de votre classe dérivée au 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 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 .L'infrastructure remplace toute commande qui correspond à l'ID de commande ID_TOOLS_ENTRY dans les menus avec l'ensemble d'outils actuellement définis d'utilisateur chaque fois qu'un utilisateur ouvre ce menu.Les ID ID_USER_TOOL1 de commande via ID_USER_TOOL10 sont réservés pour l'utilisation des outils définis par l'utilisateur.La classe CUserTool, classe traite les appels aux outils utilisateur.L'onglet de l'outil de la boîte de dialogue Personnalisation fournit des boutons à droite des champs d'argument et d'entrée 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'infrastructure ajoute à la zone de texte appropriée la chaîne contenant l'ID de ressource égal à l'ID de commande
Notamment les outils prédéfinis
Si vous souhaitez prédéfinir certains outils au démarrage de l'application, vous devez substituer la méthode de CFrameWnd::LoadFrame de fenêtre principale de votre application.Dans cette méthode, vous devez exécuter les étapes suivantes.
Pour ajouter de nouveaux outils dans LoadFrame
Obtenir un pointeur vers l'objet de CUserToolsManager, classe en appelant CWinAppEx::GetUserToolsManager.
Pour chaque outil que vous souhaitez créer, appelez CUserToolsManager::CreateNewTool.Cette méthode retourne un pointeur vers un objet de CUserTool, classe et ajoute l'outil de création récente d'utilisateur à la collection interne d'outils.Si vous avez fourni les informations d'exécution pour une classe dérivée de CUserTool, classe au quatrième paramètre de CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool est-à-dire instancier et retourne une instance de cette classe.
Pour chaque outil, affectez à 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 extrait automatiquement les icônes disponibles pour le programme spécifié dans l'appel à SetCommand.