Partilhar via


Ferramentas definidas pelo usuário

MFC suporta ferramentas definidas pelo usuário. Uma ferramenta definida pelo usuário é um comando especial que executa um programa externo especificado pelo usuário. Você pode usar o processo de personalização para gerenciar ferramentas definidas pelo usuário. No entanto, você não pode usar esse processo se seu objeto de aplicativo não é derivado da classe CWinAppEx. Para obter mais informações sobre personalização, consulte Personalização para MFC.

Se você habilitou o suporte a ferramentas definidas pelo usuário, a caixa de diálogo de personalização incluirá automaticamente a guia Ferramentas . A ilustração a seguir mostra a página Ferramentas .

Guia Ferramentas na caixa de diálogo Personalizar.
Caixa de diálogo Personalização Guia Ferramentas

Habilitando o suporte a ferramentas definidas pelo usuário

Para habilitar ferramentas definidas pelo usuário em um aplicativo, chame CWinAppEx::EnableUserTools. No entanto, você deve primeiro definir várias constantes nos arquivos de recursos do seu aplicativo para usar como parâmetros para essa chamada.

No editor de recursos, crie um comando fictício que use uma ID de comando apropriada. No exemplo a seguir, usamos ID_TOOLS_ENTRY como ID de comando. Este ID de comando marca um local em um ou mais menus onde a estrutura inserirá as ferramentas definidas pelo usuário.

Você deve reservar alguns identificadores consecutivos na tabela de strings para representar as ferramentas definidas pelo utilizador. O número de cadeias de caracteres que reservaste é igual ao número máximo de ferramentas de utilizador que os utilizadores podem definir. No exemplo a seguir, eles são nomeados ID_USER_TOOL1 através de ID_USER_TOOL10.

Você pode oferecer sugestões aos usuários para ajudá-los a selecionar diretórios e argumentos para os programas externos que serão chamados como ferramentas. Para fazer isso, crie dois menus pop-up no editor de recursos. No exemplo a seguir, eles são nomeados IDR_MENU_ARGS e IDR_MENU_DIRS. Para cada comando nesses menus, defina uma cadeia de caracteres na tabela de cadeia de caracteres do aplicativo. O ID do recurso da cadeia de caracteres deve ser igual ao ID do comando.

Você também pode criar uma classe derivada de CUserTool Class para substituir a implementação padrão. Para fazer isso, passe as informações de tempo de execução para sua classe derivada como o quarto parâmetro em CWinAppEx::EnableUserTools, em vez de RUNTIME_CLASS(CUserTool Class).

Depois de definir as constantes apropriadas, chame CWinAppEx::EnableUserTools para habilitar as ferramentas definidas pelo usuário.

A chamada de método a seguir mostra como usar essas constantes:

EnableUserTools(ID_TOOLS_ENTRY,
                ID_USER_TOOL1,
                ID_USER_TOOL10,
                RUNTIME_CLASS(CUserTool),
                IDR_MENU_ARGS,
                IDR_MENU_DIRS);

Neste exemplo, a guia Ferramentas será incluída na caixa de diálogo Personalização . A estrutura substituirá qualquer comando que corresponda ao ID ID_TOOLS_ENTRY do comando em qualquer menu pelo conjunto de ferramentas de usuário atualmente definidas sempre que um usuário abrir esse menu. Os IDs de comando de ID_USER_TOOL1 a ID_USER_TOOL10 são reservados para uso em ferramentas definidas pelo utilizador. A classe CUserTool Class lida com chamadas para as ferramentas do usuário. A guia de ferramentas da caixa de diálogo Personalização fornece botões à direita dos campos de entrada de argumento e diretório para acessar os menus IDR_MENU_ARGS e IDR_MENU_DIRS. Quando um usuário seleciona um comando em um desses menus, a estrutura acrescenta à caixa de texto apropriada a cadeia de caracteres que tem o ID do recurso igual ao ID do comando.

Incluindo ferramentas predefinidas

Se você quiser predefinir algumas ferramentas na inicialização do aplicativo, você deve substituir o método CFrameWnd::LoadFrame da janela principal do seu aplicativo. Nesse método, você deve executar as seguintes etapas.

Para adicionar novas ferramentas no LoadFrame
  1. Obtenha um ponteiro para o objeto CUserToolsManager Class chamando CWinAppEx::GetUserToolsManager.

  2. Para cada ferramenta que você deseja criar, chame CUserToolsManager::CreateNewTool. Esse método retorna um ponteiro para um objeto CUserTool Class e adiciona a ferramenta de usuário recém-criada à coleção interna de ferramentas. Se você forneceu as informações de tempo de execução para uma classe derivada de CUserTool Class como o quarto parâmetro de CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool irá instanciar e retornar uma instância dessa classe.

  3. Para cada ferramenta, defina seu rótulo de texto definindo CUserTool::m_strLabel e defina seu comando chamando CUserTool::SetCommand. A implementação padrão da classe CUserTool recupera automaticamente os ícones disponíveis do programa especificado na chamada para SetCommand.

Ver também

Personalização para MFC
CUserTool Classe
CUserToolsManager Classe
CWinAppEx Classe