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:
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.
Reserve uma barra de ferramentas Imagem (ícone de botão) para o botão em todos os bitmaps da barra de ferramentas do pai.
No manipulador de mensagens que processa o AFX_WM_RESETTOOLBAR mensagem, faça o seguinte:
Construir o controle de botão, usando um CMFCToolbarButton-classe derivada.
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:
Adicione o botão e seus comandos para os recursos do aplicativo:
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.
Criar um novo item de menu com a ID de comando ID_EDIT_FIND.
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.
Criar uma nova classe, CFindComboBox, derivado de Classe CComboBox.
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.
Criar uma classe para o Find botão de caixa de combinação, derivado de Classe CMFCToolBarComboBoxButton. Neste exemplo, ele é denominado CFindComboButton.
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:
Passar o ID_EDIT_FIND_COMBO sistema autônomo a ID de comando.
Use CCommandManager::GetCmdImage com ID_EDIT_FIND Para obter o índice de imagem.
Para obter uma lista de estilos de caixa de combinação disponível, consulte Estilos de caixa de combinação.
No CFindComboButton classe, substituir o CMFCToolbarComboBoxButton::CreateCombo método. Aqui, você deve criar o CFindComboButton objeto e retornar um ponteiro para ele.
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.
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.
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:
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.
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
Referência
Classe CMFCToolBarComboBoxButton
Classe CMFCToolBarsCustomizeDialog