Ferramentas definidas pelo usuário
MFC O oferece suporte ferramentas definidos pelo usuário. Uma ferramenta definido 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 definidos pelo usuário. Porém, você não pode usar esse processo se o objeto do aplicativo não é derivado de Classe CWinAppEx. Para obter mais informações sobre a personalização, consulte Personalização para MFC.
Se você suporte definido pelo usuário habilitado ferramentas, a caixa de diálogo de personalização inclui automaticamente o guia de Ferramentas . A ilustração a seguir mostra a página de Ferramentas .
Guia de ferramentas da caixa de diálogo de personalização
Habilitando o suporte definido pelo usuário das ferramentas
Para habilitar ferramentas definidas pelo usuário em um aplicativo, chame CWinAppEx::EnableUserTools. Porém, você deve primeiro definir várias constantes em arquivos de recurso de seu aplicativo usar como parâmetros para essa chamada.
No publicador do recurso crie um comando fictícia que usa uma ID de comando apropriado No exemplo, usamos ID_TOOLS_ENTRY como ID de comando Essa ID do comando marca um local em um ou vários menus em que a estrutura insere as ferramentas definidos pelo usuário.
Você deve aguardar alguns IDs consecutivos na tabela de cadeia de caracteres para representar as ferramentas definidos pelo usuário. O número de cadeias de caracteres que foi reservado é igual ao número máximo de ferramentas do usuário que os usuários podem definir. No exemplo a seguir, esses são nomeados ID_USER_TOOL1 com ID_USER_TOOL10.
Você pode oferecer sugestões aos usuários ajudar a selecionar diretórios e argumentos para programas externos que serão destacados como ferramentas. Para fazer isso, crie dois menus pop-up no publicador do recurso. No exemplo a seguir esses 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 de aplicativo. A ID do recurso de cadeia de caracteres deve ser igual à ID de comando
Você também pode criar uma classe derivada de Classe CUserTool para substituir a implementação padrão. Para fazer isso, passe informações de tempo de execução para a 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 definidos pelo usuário.
A chamada do 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 de ferramentas será incluído na caixa de diálogo de Personalização . A estrutura substituirá qualquer comando que corresponder a ID ID_TOOLS_ENTRY de comando no menu com o conjunto de ferramentas do usuário atualmente definidas sempre que um usuário abre o menu. As IDs ID_USER_TOOL1 de comando com ID_USER_TOOL10 são reservados para uso para ferramentas definidos pelo usuário. A classe Classe CUserTool trata chamadas às ferramentas do usuário. A guia de ferramenta da caixa de diálogo de Personalização fornece os botões à direita dos campos de argumento e de entrada do diretório para acessar os menus IDR_MENU_ARGS e IDR_MENU_DIRS.quando um usuário selecionar um comando de um desses menus, a estrutura anexadas à caixa de texto apropriado a cadeia de caracteres que tem a ID de recurso igual à ID de comando
Incluindo ferramentas predefinidas
Se você quiser predefinir algumas ferramentas na inicialização do aplicativo, você deve substituir o método de CFrameWnd::LoadFrame da janela principal do seu aplicativo. Nesse método, você deve executar as seguintes etapas.
Para adicionar novas ferramentas em LoadFrame
Obtenha um ponteiro para o objeto de Classe CUserToolsManager chamando CWinAppEx::GetUserToolsManager.
Para cada ferramenta que você deseja criar, chame CUserToolsManager::CreateNewTool. Esse método retorna um ponteiro para um objeto de Classe CUserTool e adiciona a ferramenta recém-criado do usuário à coleção interna de ferramentas. Se você forneceu informações de tempo de execução para uma classe derivada de Classe CUserTool como o quarto parâmetro de CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool criará uma instância e retorna uma instância dessa classe em vez disso.
Para cada ferramenta, defina sua rótulo de texto definindo CUserTool::m_strLabel e definir seu comando chamando CUserTool::SetCommand. A implementação padrão de Classe CUserTool automaticamente recupera ícones disponíveis de programa que é especificado na chamada de SetCommand.