Compartilhar 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 .

Guia Ferramentas na caixa de diálogo Personalizar.
Guia Ferramentas da caixa de diálogo De 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 cadeia 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, eles são nomeados ID_USER_TOOL1 por meio ID_USER_TOOL10de .

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 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 ID_TOOLS_ENTRY de comando em qualquer menu com o conjunto de ferramentas de usuário definidas no momento sempre que um usuário abrir esse menu. As IDs ID_USER_TOOL1 de comando são ID_USER_TOOL10 reservadas para uso para ferramentas definidas pelo usuário. A classe CUserTool Class 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ório para acessar os menus IDR_MENU_ARGS e IDR_MENU_DIRS. Quando um usuário seleciona um comando de 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 você quiser predefinir algumas ferramentas na inicialização do aplicativo, deverá substituir 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 da 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 criará uma instância 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.

Consulte também

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