Partilhar via


Ferramentas definidas pelo usuário

O MFC dá suporte a 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 poderá usar esse processo se o objeto do aplicativo não for 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.

Tools tab in the Customize dialog box.
Guia Ferramentas da caixa de diálogo Personalização

Habilitando o suporte a ferramentas definidas pelo usuário

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

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

Você deve reservar algumas IDs consecutivas na tabela de cadeias de caracteres para representar as ferramentas definidas pelo usuário. O número de cadeias de caracteres que você reserva é igual ao número máximo de ferramentas de usuário que os usuários podem definir. No exemplo a seguir, elas são nomeados ID_USER_TOOL1 por meio 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. A ID do recurso da cadeia de caracteres deve ser igual à ID do comando.

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

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 à ID de comando ID_TOOLS_ENTRY em qualquer menu pelo conjunto de ferramentas de usuário definidas no momento, sempre que um usuário abrir esse menu. As IDs de comando ID_USER_TOOL1 por meio de ID_USER_TOOL10 são reservadas para uso por ferramentas definidas pelo usuário. A Classe CUserTool manipula chamadas para as ferramentas de usuário. A guia ferramenta da caixa de diálogo Personalização fornece botões à direita dos campos de entrada de argumento e diretórios 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 a ID do recurso igual à ID do comando.

Incluindo ferramentas predefinidas

Se quiser inserir algumas ferramentas na inicialização do aplicativo, substitua o método CFrameWnd::LoadFrame da janela principal do aplicativo. Nesse método, você deve executar as etapas a seguir.

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

  2. Para cada ferramenta que você deseja criar, chame CUserToolsManager::CreateNewTool. Esse método retorna um ponteiro para um objeto Classe CUserTool e adiciona a ferramenta de usuário recém-criada à coleção interna de ferramentas. Se você forneceu as informações de runtime para uma classe derivada da Classe CUserTool como o quarto parâmetro de CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool será instanciado 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.

Confira também

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