Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
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 .
Reserve uma imagem da barra de ferramentas (ícone do botão) para o botão em todos os bitmaps da barra de ferramentas pai.
No manipulador de mensagens que processa a
AFX_WM_RESETTOOLBARmensagem, execute as seguintes etapas:Construa o controlo de botão usando uma classe derivada de
CMFCToolbarButton.Substitua o botão fictício pelo novo controle usando
CMFCToolBar::ReplaceButton. Você pode construir o objeto botão na pilha, porqueReplaceButtoncopia 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 :
Adicione o botão e seus comandos aos recursos do aplicativo:
Nos recursos do aplicativo, adicione um novo botão com uma
ID_EDIT_FINDID 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 o ID do
ID_EDIT_FINDcomando.Adicione uma nova cadeia de caracteres
"Find the text\nFind"à tabela de cadeias de caracteres e atribua-lhe um ID deID_EDIT_FIND_COMBOcomando. 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 peloCEditView, não é necessário 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 deCComboBoxClass.Na classe
CFindComboBox, substitua o método virtualPreTranslateMessage. Esse método permitirá que a caixa de combinação processe aWM_KEYDOWNmensagem. 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 umaWM_COMMANDmensagem que contenha o ID doID_EDIT_FIND_COMBOcomando.Crie uma classe para o botão da caixa de combinação Localizar , derivado de
CMFCToolBarComboBoxButtonClass. Neste exemplo, ele é chamadoCFindComboButton.O construtor de
CMFCToolbarComboBoxButtonleva três parâmetros: o ID de comando do botão, o índice de imagem do botãoCMFCToolbarComboBoxButtone o estilo da caixa de combinação. Defina esses parâmetros da seguinte maneira:Passe o
ID_EDIT_FIND_COMBOcomo o ID do comando.Use
CCommandManager::GetCmdImagecomID_EDIT_FINDpara obter o índice de imagem.Para obter uma lista dos estilos de caixa de combinação disponíveis, veja Combo-Box Estilos.
Na classe
CFindComboButton, substitua o métodoCMFCToolbarComboBoxButton::CreateCombo. Aqui deves criar oCFindComboButtonobjeto e retornar um ponteiro para ele.Use a
IMPLEMENT_SERIALmacro 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.Implemente o
ID_EDIT_FIND_COMBOmanipulador em sua exibição de documento. UseCMFCToolBar::GetCommandButtonscomID_EDIT_FIND_COMBOpara 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.ID_EDIT_FINDNo manipuladorOnFindde mensagens, useCMFCToolBar::IsLastCommandFromButtonpara 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:
Implemente o
AFX_WM_RESETTOOLBARmanipuladorOnToolbarResetde 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 .
No manipulador
AFX_WM_RESETTOOLBAR, examine o ID da barra de ferramentas, que é oWPARAMda mensagemAFX_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 , chameCMFCToolBar::ReplaceButtonpara substituir o botão Localizar (ou seja, o botão com o IDID_EDIT_FINDdo comando) por umCFindComboButtonobjeto.Observação
Você pode construir um objeto
CFindComboBoxna pilha, porqueReplaceButtoncopia 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