Compartilhar via


Passo a passo: Colocar controles em barras de ferramentas

Este tópico descreve como adicionar um botão de barra de ferramentas que contém um controle do Windows para uma barra de ferramentas.No MFC, um botão de barra de ferramentas deve ser um Classe CMFCToolBarButton-derivado classe, por exemplo Classe CMFCToolBarComboBoxButton, Classe CMFCToolBarEditBoxButton, Classe CMFCDropDownToolbarButton, ou Classe CMFCToolBarMenuButton.

Adicionar controles a barras de ferramentas

Para adicionar um controle a uma barra de ferramentas, siga estas etapas:

  1. Reserve um ID de recurso fictício para 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 em Visual Studio, consulte o Editor de barra de ferramentas tópico.

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

  3. No manipulador de mensagem que processa o AFX_WM_RESETTOOLBAR a mensagem, faça o seguinte:

    1. Construir o controle button, usando um CMFCToolbarButton-classe derivada.

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

ObservaçãoObservação

Se você ativou a personalização do aplicativo, talvez seja necessário redefinir a barra de ferramentas usando o Redefinir no botão de barras de ferramentas guia do Personalizar caixa de diálogo para ver o controle 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 carregadas e aplicadas após a ReplaceButton método é executado durante a inicialização do aplicativo.

Personalização e controles de barra de ferramentas

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

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

Exemplo: Criação de uma caixa de combinação localizar

Esta seção descreve como criar um Find controle de caixa de combinação que aparece na barra de ferramentas e contém seqüências de pesquisa usados recentemente.O usuário pode digitar uma seqüência de caracteres no controle e, em seguida, pressione a tecla enter para pesquisar um documento ou pressione a tecla escape para retornar o foco para o quadro principal.Este exemplo assume que o documento é exibido em uma Classe CEditView-derivado do modo de exibição.

Bb983718.collapse_all(pt-br,VS.110).gifCriando o controle Find

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

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

    1. Recursos de aplicativo, adicionar um novo botão com uma ID_EDIT_FIND ID de comando para uma barra de ferramentas em seu aplicativo e os bitmaps associado com a barra de ferramentas.

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

    3. Adicione uma nova seqüência de caracteres "Localizar o text\nFind" para a tabela de seqüência de caracteres e atribua a ele um ID_EDIT_FIND_COMBO comando ID.Essa identificação será usada como a ID de comando da Find botão de caixa de combinação.

      ObservaçãoObservação

      Porque ID_EDIT_FIND é um comando padrão é processado por CEditView, não é necessário para implementar um manipulador especial para este comando.No entanto, você deve implementar um manipulador para o novo comando ID_EDIT_FIND_COMBO.

  2. Criar uma nova classe CFindComboBox, derivada de Classe CComboBox.

  3. No CFindComboBox classe, substituir o PreTranslateMessage método virtual.Esse método permitirá que a caixa de combinação processar o WM_KEYDOWN mensagem.Se o usuário pressiona a tecla escape (VK_ESCAPE), retornar o foco para a janela do quadro principal.Se o usuário pressiona a tecla Enter (VK_ENTER), enviar para a janela do quadro principal um WM_COMMAND mensagem que contém o ID_EDIT_FIND_COMBO ID de comando

  4. Criar uma classe para o Find botão de caixa de combinação, derivado de Classe CMFCToolBarComboBoxButton.Neste exemplo, é denominado CFindComboButton.

  5. O construtor de CMFCToolbarComboBoxButton usa três parâmetros: a identificação de comando do botão, o índice de imagem do botão e o estilo da caixa de combinação.Defina esses parâmetros como segue:

    1. Passar o ID_EDIT_FIND_COMBO como a ID de comando.

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

    3. Para uma lista de estilos de caixa de combinação disponíveis, consulte Estilos de caixa de combinação.

  6. No CFindComboButton classe, substituir o CMFCToolbarComboBoxButton::CreateCombo método.Aqui você deve criar o CFindComboButton de objeto e retornar um ponteiro para ele.

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

  8. Implementar a ID_EDIT_FIND_COMBO manipulador no modo de exibição de documento.Use CMFCToolBar::GetCommandButtons com ID_EDIT_FIND_COMBO para recuperar todos Find botões da caixa de combinação.Pode haver várias cópias de um botão com a mesma identificação de comando devido à personalização.

  9. No manipulador de mensagem ID_EDIT_FIND OnFind, use CMFCToolBar::IsLastCommandFromButton para determinar se o comando Localizar foi enviado a Find botão de caixa de combinação.Em caso afirmativo, localizar o texto e adicionar a string de pesquisa à caixa de combinação.

Bb983718.collapse_all(pt-br,VS.110).gifAdicionar o controle de localizar a barra de ferramentas principal

Para adicionar o botão de caixa de combinação à barra de ferramentas, siga estas etapas:

  1. Implementar a AFX_WM_RESETTOOLBAR manipulador de mensagem OnToolbarReset na janela do quadro principal.

    ObservaçãoObservação

    A estrutura envia esta 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 é redefinir durante a personalização.Em qualquer caso, você deve substituir o botão de barra de ferramentas padrão com personalizado Find botão de caixa de combinação.

  2. No AFX_WM_RESETTOOLBAR manipulador, examine o ID de barra de ferramentas, ou seja, o WPARAM do AFX_WM_RESETTOOLBAR mensagem.Se a barra de ferramentas identificação é igual a que a barra de ferramentas que contém o Find botão de caixa de combinação, chamada CMFCToolBar::ReplaceButton para substituir o Find botão (isto é, o botão com a ID de comando ID_EDIT_FIND) com um CFindComboButton objeto.

    ObservaçãoObservação

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

Bb983718.collapse_all(pt-br,VS.110).gifAdicionar o controle de localizar a caixa de diálogo Personalizar

No manipulador de personalização OnViewCustomize, chamada CMFCToolBarsCustomizeDialog::ReplaceButton para substituir o Find botão (isto é, o botão com a ID de comando ID_EDIT_FIND) com um CFindComboButton objeto.

Consulte também

Referência

Gráfico de hierarquia

Classe CMFCToolBar

Classe CMFCToolBarButton

Classe CMFCToolBarComboBoxButton

Classe CMFCToolBarsCustomizeDialog

Outros recursos

Classes MFC