Compartilhar via


Como: 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 a uma barra de ferramentas.No MFC Feature Pack estrutura, um botão de barra de ferramentas deve ser um Classe CMFCToolBarButton-derivado de classe, por exemplo Classe CMFCToolBarComboBoxButton, Classe CMFCToolBarEditBoxButton, Classe CMFCDropDownToolbarButton, ou Classe CMFCToolBarMenuButton.

Adicionando controles para barras de ferramentas

Para adicionar um controle a uma barra de ferramentas, execute as seguintes etapas:

  1. Reserve uma recurso fictício sua ID do 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 Editor de barra de ferramentas tópico.

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

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

    1. Construir o controle de botão, 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, pois ReplaceButton Copia o objeto de botão e mantém a cópia.

Observação:

Se Você habilitado personalização do aplicativo, Talvez seja necessário reiniciar a barra de ferramentas Por Usando o reiniciar botão a Barras de ferramentas Guia de do Personalizar caixa de diálogo 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 após a ReplaceButton método é executado durante a inicialização do aplicativo.

Controles de barra de ferramentas e personalização

The Comandos Guia de do Personalizar caixa de diálogo contém uma lista de comandos que estão disponível no aplicativo.Por padrão, a Personalizarcaixa 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 da barra de ferramentas, você deve substituir botão de barra de ferramentas padrão por controle personalizado no Personalizar caixa de diálogo.

Quando você habilita a personalização, você criar 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 chamandoCMFCToolBarsCustomizeDialog::criar, ligue para CMFCToolBarsCustomizeDialog::ReplaceButton para substituir o botão padrão com o novo controle.

Exemplo: Criar uma caixa de combinação localizar

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

Criando o controle Find

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

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

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

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

    3. Adicione uma nova seqüência de caracteres "Localizar Texto\nFind" à tabela de seqüência de caracteres e atribua a ele umID_EDIT_FIND_COMBO ID de comando. Essa ID será usada sistema autônomo a ID de comando da Find botão de caixa de combinação.

      Observação:

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

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

  3. No CFindComboBox classe, substituir o PreTranslateMessage método virtual. Esse método irá ativar a caixa de combinação processar o WM_KEYDOWN mensagem. Se o usuário pressiona o escape chave (VK_ESCAPE), retornar o foco para a janela do quadro principal. Se o usuário pressiona a tecla ENTER (VK_ENTER), a janela do quadro principal postar 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, ele é denominado CFindComboButton.

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

    1. Passar o ID_EDIT_FIND_COMBO sistema autônomo a ID de comando.

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

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

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

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

  8. Implementar o ID_EDIT_FIND_COMBO manipulador do 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 ID de comando por causa de personalização.

  9. No manipulador de mensagens ID_EDIT_FIND OnFind, use CMFCToolBar::IsLastCommandFromButton para determinar se o comando find foi enviado o Find botão de caixa de combinação. Nesse caso, localizar o texto e adicione a seqüência de caracteres de Pesquisar da caixa de combinação.

Adicionando o controle Find à barra de ferramentas principal

Para adicionar o botão de caixa de combinação à barra de ferramentas, execute as seguintes etapas:

  1. Implementar o AFX_WM_RESETTOOLBAR manipulador de mensagens OnToolbarReset Na janela do quadro principal.

    Observação:

    T Ele estrutura envia t sua mensagem na janela do quadro principal quando uma barra de ferramentas é inicializado durante a inicialização do aplicativo, ou Quando uma barra de ferramentas é Redefina durante a personalização.Em ambos os casos , Você deve Substituir botão de barra de ferramentas padrão personalizado Find botão de caixa de combinação.

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

    Observação:

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

Adicionando o controle de localizar a caixa de diálogo Personalizar

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

Consulte também

Conceitos

Gráfico de hierarquia do MFC

Referência

Classe CMFCToolBar

Classe CMFCToolBarButton

Classe CMFCToolBarComboBoxButton

Classe CMFCToolBarsCustomizeDialog

Outros recursos

Classes (@@)