Partilhar via


Passo a passo: Colocando controles em barras de ferramentas

Este artigo descreve como adicionar um botão da barra de ferramentas que contém um controle do Windows a uma barra de ferramentas. No MFC, um botão da barra de ferramentas deve ser uma classe derivada de CMFCToolBarButton Class, por exemplo, CMFCToolBarComboBoxButton Class, CMFCToolBarEditBoxButton Class, CMFCDropDownToolbarButton Class, ou CMFCToolBarMenuButton Class.

Adicionando controles a barras de ferramentas

Para adicionar um controlo a uma barra de ferramentas, siga estes passos:

  1. Reserve um ID de recurso fictício para o botão no recurso de barra de ferramentas do pai. Para obter mais informações sobre como criar botões usando o Editor de barra de ferramentas no Visual Studio, consulte o artigo Editor de barra de ferramentas .

  2. Reserve uma imagem da barra de ferramentas (ícone do botão) para o botão em todos os bitmaps da barra de ferramentas pai.

  3. No manipulador de mensagens que processa a AFX_WM_RESETTOOLBAR mensagem, execute as seguintes etapas:

    1. Construa o controlo de botão usando uma classe derivada de CMFCToolbarButton.

    2. Substitua o botão fictício pelo novo controle usando CMFCToolBar::ReplaceButton. Você pode construir o objeto botão na pilha, porque ReplaceButton copia o objeto botão e mantém a cópia.

Observação

Se você habilitou a personalização em seu aplicativo, talvez seja necessário redefinir a barra de ferramentas usando o botão Redefinir na guia Barras de Ferramentas da caixa de diálogo Personalizar para ver o controle atualizado em seu aplicativo após a recompilação. O estado da barra de ferramentas é salvo no registro do Windows e as informações do Registro são carregadas e aplicadas depois que o método é executado durante a inicialização do ReplaceButton aplicativo.

Controles e personalização da barra de ferramentas

A guia Comandos da caixa de diálogo Personalizar contém uma lista de comandos disponíveis no aplicativo. Por padrão, a caixa de diálogo Personalizar processa os menus do aplicativo e cria uma lista de botões padrão da barra de ferramentas em cada categoria de menu. Para manter a funcionalidade estendida que os controles da barra de ferramentas fornecem, você deve substituir o botão padrão da barra de ferramentas pelo controle personalizado na caixa de diálogo Personalizar .

Ao habilitar a personalização, você cria a caixa de diálogo Personalizar no manipulador OnViewCustomize de personalização usando a CMFCToolBarsCustomizeDialog classe Class . Antes de exibir a caixa de diálogo Personalizar chamando CMFCToolBarsCustomizeDialog::Create, chame CMFCToolBarsCustomizeDialog::ReplaceButton para substituir o botão padrão pelo novo controle.

Exemplo: Criando uma caixa de combinação Localizar

Esta secção descreve como criar um controlo Find caixa de combinação que aparece numa barra de ferramentas e contém termos de pesquisa recentes. O usuário pode digitar uma cadeia de caracteres no controle e, em seguida, pressionar a tecla enter para pesquisar um documento ou pressionar a tecla escape para retornar o foco ao quadro principal. Este exemplo pressupõe que o documento é exibido numa vista derivada da CEditView Classe.

Criando o controle Find

Primeiro, crie o controle de caixa de combinação Localizar :

  1. Adicione o botão e seus comandos aos recursos do aplicativo:

    1. Nos recursos do aplicativo, adicione um novo botão com uma ID_EDIT_FIND ID de comando a uma barra de ferramentas em seu aplicativo e a quaisquer bitmaps associados à barra de ferramentas.

    2. Crie um novo item de menu com o ID do ID_EDIT_FIND comando.

    3. Adicione uma nova cadeia de caracteres "Find the text\nFind" à tabela de cadeias de caracteres e atribua-lhe um ID de ID_EDIT_FIND_COMBO comando. Este ID será usado como o ID de comando do botão da caixa de combinação Localizar .

      Observação

      Como ID_EDIT_FIND é um comando padrão que é processado pelo CEditView, não é necessário implementar um manipulador especial para esse comando. No entanto, você deve implementar um manipulador para o novo comando ID_EDIT_FIND_COMBO.

  2. Crie uma nova classe, CFindComboBox, derivada de CComboBox Class.

  3. Na classe CFindComboBox, substitua o método virtual PreTranslateMessage. Esse método permitirá que a caixa de combinação processe a WM_KEYDOWN mensagem. Se o usuário pressionar a tecla de escape (VK_ESCAPE), retorne o foco para a janela do quadro principal. Se o usuário pressionar a tecla Enter (VK_ENTER), poste na janela do quadro principal uma WM_COMMAND mensagem que contenha o ID do ID_EDIT_FIND_COMBO comando.

  4. Crie uma classe para o botão da caixa de combinação Localizar , derivado de CMFCToolBarComboBoxButton Class. Neste exemplo, ele é chamado CFindComboButton.

  5. O construtor de CMFCToolbarComboBoxButton leva três parâmetros: o ID de comando do botão, o índice de imagem do botão CMFCToolbarComboBoxButton e o estilo da caixa de combinação. Defina esses parâmetros da seguinte maneira:

    1. Passe o ID_EDIT_FIND_COMBO como o ID do comando.

    2. Use CCommandManager::GetCmdImage com ID_EDIT_FIND para obter o índice de imagem.

    3. Para obter uma lista dos estilos de caixa de combinação disponíveis, veja Combo-Box Estilos.

  6. Na classe CFindComboButton, substitua o método CMFCToolbarComboBoxButton::CreateCombo. Aqui deves criar o CFindComboButton objeto e retornar um ponteiro para ele.

  7. Use a IMPLEMENT_SERIAL macro para tornar o botão de combinação persistente. O gerenciador de espaço de trabalho carrega e salva automaticamente o estado do botão no registro do Windows.

  8. Implemente o ID_EDIT_FIND_COMBO manipulador em sua exibição de documento. Use CMFCToolBar::GetCommandButtons com ID_EDIT_FIND_COMBO para recuperar todos os botões da caixa de combinação Localizar . Pode haver várias cópias de um botão com o mesmo ID de comando devido à personalização.

  9. ID_EDIT_FIND No manipulador OnFindde mensagens, use CMFCToolBar::IsLastCommandFromButton para determinar se o comando localizar foi enviado do botão da caixa de combinação Find. Em caso afirmativo, localize o texto e adicione a cadeia de pesquisa à caixa de combinação.

Adicionando o controle Localizar à barra de ferramentas principal

Para adicionar o botão de caixa de combinação à barra de ferramentas, siga estes passos:

  1. Implemente o AFX_WM_RESETTOOLBAR manipulador OnToolbarReset de mensagens na janela do quadro principal.

    Observação

    A estrutura envia essa mensagem para a janela do quadro principal quando uma barra de ferramentas é inicializada durante a inicialização do aplicativo ou quando uma barra de ferramentas é redefinida durante a personalização. Em ambos os casos, você deve substituir o botão padrão da barra de ferramentas pelo botão personalizado da caixa de combinação Localizar .

  2. No manipulador AFX_WM_RESETTOOLBAR, examine o ID da barra de ferramentas, que é o WPARAM da mensagem AFX_WM_RESETTOOLBAR. Se o ID da barra de ferramentas for igual ao da barra de ferramentas que contém o botão da caixa de combinação Localizar , chame CMFCToolBar::ReplaceButton para substituir o botão Localizar (ou seja, o botão com o ID ID_EDIT_FINDdo comando) por um CFindComboButton objeto.

    Observação

    Você pode construir um objeto CFindComboBox na pilha, porque ReplaceButton copia o objeto botão e mantém a cópia.

Adicionando o controle Localizar à caixa de diálogo Personalizar

No manipulador OnViewCustomizede personalização , chame CMFCToolBarsCustomizeDialog::ReplaceButton para substituir o botão Localizar (ou seja, o botão com a ID ID_EDIT_FINDdo comando) por um CFindComboButton objeto.

Ver também

Gráfico de Hierarquia
Aulas
CMFCToolBar Classe
CMFCToolBarButton Classe
CMFCToolBarComboBoxButton Classe
CMFCToolBarsCustomizeDialog Classe