Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como adicionar um botão de barra de ferramentas que contém um controle do Windows a uma barra de ferramentas. No MFC, um botão de barra de ferramentas deve ser uma classe derivada da CMFCToolBarButton
Classe, por exemplo CMFCToolBarComboBoxButton
Classe, CMFCToolBarEditBoxButton
Classe, CMFCDropDownToolbarButton
Classe ou CMFCToolBarMenuButton
Classe.
Adicionando controles a barras de ferramentas
Para adicionar um controle a uma barra de ferramentas, siga estas etapas:
Reserve uma ID do recurso fictícia para o botão no recurso da barra de ferramentas pai. Para obter mais informações sobre como criar botões usando o Editor de Barras de Ferramentas no Visual Studio, consulte o artigo do Editor de Barras de Ferramentas .
Reserve uma imagem da barra de ferramentas (ícone de botão) para o botão em todos os bitmaps da barra de ferramentas pai.
No manipulador de mensagens que processa a
AFX_WM_RESETTOOLBAR
mensagem, execute as seguintes etapas:Construa o controle de botão usando uma
CMFCToolbarButton
classe derivada.Substitua o botão fictício pelo novo controle usando
CMFCToolBar::ReplaceButton
. Você pode construir o objeto de botão na pilha, poisReplaceButton
copia o objeto de 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 ReplaceButton
método é executado durante a inicialização do 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 da barra de ferramentas padrão em cada categoria de menu. Para manter a funcionalidade estendida que os controles da barra de ferramentas fornecem, substitua o botão da barra de ferramentas padrão 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: criar uma caixa de combinação Localizar
Esta seção descreve como criar um controle de caixa de combinação Localizar que aparece em uma barra de ferramentas e contém cadeias de caracteres de pesquisa usadas recentemente. O usuário pode digitar uma cadeia de caracteres no controle e pressionar a tecla Enter para pesquisar um documento ou pressionar a tecla de escape para retornar o foco ao quadro principal. Este exemplo pressupõe que o documento seja exibido em uma visão derivada de uma CEditView
classe.
Criando o controle Localizar
Primeiro, crie o controle da caixa de combinação Localizar:
Adicione o botão e seus comandos aos recursos do aplicativo:
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.Crie um novo item de menu com a ID do
ID_EDIT_FIND
comando.Adicione uma nova cadeia de caracteres
"Find the text\nFind"
à tabela de cadeia de caracteres e atribua umaID_EDIT_FIND_COMBO
ID de comando. Esse 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 porCEditView
, você não é obrigado a implementar um manipulador especial para esse comando. No entanto, você deve implementar um manipulador para o novo comandoID_EDIT_FIND_COMBO
.
Crie uma nova classe,
CFindComboBox
derivada daCComboBox
Classe.Na classe
CFindComboBox
, substitua o método virtualPreTranslateMessage
. Esse método habilitará a caixa de combinação a processar a mensagemWM_KEYDOWN
. Se o usuário atingir a tecla de escape (VK_ESCAPE
), retorne o foco para a janela de quadro principal. Se o usuário pressionar a tecla Enter (VK_ENTER
), poste uma mensagem na janela principal que contenha o ID do comandoWM_COMMAND
.Crie uma classe para o botão da caixa de combinação Localizar, derivada de
CMFCToolBarComboBoxButton
Classe. Neste exemplo, ele é nomeadoCFindComboButton
.O construtor de
CMFCToolbarComboBoxButton
usa três parâmetros: a ID de comando do botão, o índice de imagem do botão e o estilo da caixa de combinação. Defina estes parâmetros da seguinte maneira:Passe a
ID_EDIT_FIND_COMBO
como a ID de comando.Use
CCommandManager::GetCmdImage
comID_EDIT_FIND
para obter o índice de imagem.Para obter uma lista de estilos de caixa de combinação disponíveis, consulte Estilos de caixa de combinação.
Na classe
CFindComboButton
, substitua o métodoCMFCToolbarComboBoxButton::CreateCombo
. Aqui, você deve criar o objetoCFindComboButton
e retornar um ponteiro para ele.Use a
IMPLEMENT_SERIAL
macro para tornar o botão de combinação persistente. O gerenciador de workspaces carrega e salva automaticamente o estado do botão no Registro do Windows.Implementar o manipulador
ID_EDIT_FIND_COMBO
no modo de exibição do documento. UseCMFCToolBar::GetCommandButtons
comID_EDIT_FIND_COMBO
para recuperar todos os botões das caixas de combinação Find. Pode haver várias cópias de um botão com a mesma ID de comando devido à personalização.No
ID_EDIT_FIND
manipulador de mensagensOnFind
, useCMFCToolBar::IsLastCommandFromButton
para determinar se o comando Localizar foi enviado do botão da caixa de combinação Localizar. Nesse caso, localize o texto e adicione a cadeia de caracteres de pesquisa à caixa de combinação.
Adicionando o controle Localizar à barra de ferramentas principal
Para adicionar o botão caixa de combinação à barra de ferramentas, siga estas etapas:
Implemente o
AFX_WM_RESETTOOLBAR
manipulador de mensagensOnToolbarReset
na janela de quadro principal.Observação
A estrutura envia essa mensagem para a janela de 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 de barra de ferramentas padrão pelo botão de caixa de combinação Localizar personalizado.
No manipulador
AFX_WM_RESETTOOLBAR
, examine o ID da barra de ferramentas, ou seja, oWPARAM
da mensagemAFX_WM_RESETTOOLBAR
. Se o ID da barra de ferramentas for igual ao da barra de ferramentas que contém a caixa de combinação do botão Localizar, chameCMFCToolBar::ReplaceButton
para substituir o botão Localizar (ou seja, o botão com o ID de comandoID_EDIT_FIND
) por um objetoCFindComboButton
.Observação
Você pode construir um objeto
CFindComboBox
na pilha, poisReplaceButton
copia o objeto de botão e mantém a cópia.
Adicionar o controle Localizar à caixa de diálogo Personalizar
No manipulador de personalização OnViewCustomize
, chame CMFCToolBarsCustomizeDialog::ReplaceButton
para substituir o botão Localizar (ou seja, o botão com a ID do comando ID_EDIT_FIND
) por um objeto CFindComboButton
.
Consulte também
Gráfico da hierarquia
Classes
Classe CMFCToolBar
Classe CMFCToolBarButton
Classe CMFCToolBarComboBoxButton
Classe CMFCToolBarsCustomizeDialog