Manipulação de notificações de personalização

Um controle comum da barra de ferramentas Windows tem recursos internos de personalização, incluindo uma caixa de diálogo de personalização definidas pelo sistema, que permitem que o usuário inserir, excluir ou reorganizar botões da barra de ferramentas.O aplicativo determina se os recursos de personalização estão disponível e controla a extensão à qual o usuário pode personalizar a barra de ferramentas.

Você pode disponibilizar esses recursos de personalização para o usuário, oferecendo a barra de ferramentas a CCS_ADJUSTABLE estilo. Os recursos de personalização permitem que o usuário arrastar um botão para uma nova posição ou remover um botão, arrastando-a fora da barra de ferramentas.Além disso, o usuário poderá clicar duas vezes a barra de ferramentas para exibir o Personalizar barra de ferramentascaixa de diálogo , que permite ao usuário adicionar, excluir e reorganizar os botões da barra de ferramentas.O aplicativo pode exibir a caixa de diálogo usando o Personalizarfunção de membro .

O controle de barra de ferramentas envia mensagens de notificação para a janela pai em cada etapa no processo de personalização.Se o usuário mantiver a tecla deslocar chave para baixo e começa a arrastar um botão da barra de ferramentas automaticamente manipula a operação de arrastar.A barra de ferramentas envia o TBN_QUERYDELETE mensagem de notificação para a janela pai para determinar se o botão pode ser excluído.A operação de arrastar termina se a janela pai retorna FALSE.Caso contrário, a barra de ferramentas captura a entrada do mouse e aguarda que o usuário solte o botão do mouse.

Quando o usuário solta o botão do mouse, o controle de barra de ferramentas determina o local do cursor do mouse.Se o cursor estiver fora da barra de ferramentas, ele é excluído.Se o cursor estiver em outro botão de barra de ferramentas, barra de ferramentas envia o TBN_QUERYINSERT mensagem de notificação para a janela pai para determinar se um botão pode ser inserido para a esquerda do botão especificado.O botão será inserido se a janela pai retorna TRUE; caso contrário, não é.A barra de ferramentas envia o TBN_TOOLBARCHANGE mensagem de notificação para sinalizar o participante da operação de arrastar.

Se o usuário começa uma operação de arrastar sem manter pressionada a tecla deslocar, o controle de barra de ferramentas enviará o TBN_BEGINDRAG mensagem de notificação para a janela do proprietário.Um aplicativo que implementa seu próprio código arrastando o botão pode usar esta mensagem sistema autônomo um sinal para iniciar uma operação de arrastar.A barra de ferramentas envia o TBN_ENDDRAG mensagem de notificação para sinalizar o participante da operação de arrastar.

Um controle de barra de ferramentas envia mensagens de notificação quando o usuário personaliza uma barra de ferramentas usando o Personalizar barra de ferramentas caixa de diálogo.A barra de ferramentas envia o TBN_BEGINADJUSTmensagem de notificação de depois que o usuário clica duas vezes a barra de ferramentas, mas antes da caixa de diálogo caixa é criada.Em seguida, a barra de ferramentas começa a enviar uma série de TBN_QUERYINSERT mensagens de notificação para determinar se a barra de ferramentas permite botões para ser inserido.Quando a janela pai retorna TRUE, a barra de ferramentas interrompe o envio de TBN_QUERYINSERT mensagens de notificação.Se a janela pai não retornar TRUE para qualquer botão, a barra de ferramentas destrói a caixa de diálogo.

Em seguida, o controle de barra de ferramentas determina se quaisquer botões podem ser excluídos da barra de ferramentas, enviando um TBN_QUERYDELETE mensagem de notificação para cada botão na barra de ferramentas.A janela pai retorna TRUE para indicar que um botão pode ser excluído; caso contrário, ela retornará FALSE.A barra de ferramentas adiciona todos os botões da barra de ferramentas para a caixa de diálogo, mas grays aqueles que não podem ser excluídas.

Sempre que o controle de barra de ferramentas precisa de informações sobre um botão na caixa de diálogo Personalizar barra de ferramentas, ele envia o TBN_GETBUTTONINFO mensagem de notificação, especificando o índice do botão para o qual precisa de informações e o endereço de um TBNOTIFY estrutura.A janela pai deve preencher a estrutura com as informações relevantes.

The Personalizar barra de ferramentas caixa de diálogo inclui um botão de ajuda e um botão reiniciar.Quando o usuário escolhe o botão Ajuda, o controle de barra de ferramentas envia o TBN_CUSTHELP mensagem de notificação.A janela pai deve responder, exibindo informações de Ajuda.A caixa de diálogo envia o TBN_RESET mensagem de notificação quando o usuário seleciona o botão reiniciar.Esta mensagem indica que a barra de ferramentas está prestes a reinicializar a caixa de diálogo.

Essas mensagens são todos os WM_NOTIFY mensagens e podem ser manipulada na janela do proprietário adicionando entradas de MAP de mensagens do seguinte formato ao MAP de mensagem da janela do proprietário:

ON_NOTIFY( wNotifyCode, idControl, memberFxn )

  • wNotifyCode
    Código de identificador de mensagem de notificação, sistema autônomo TBN_BEGINADJUST.

  • idControl
    O identificador do controle enviando a notificação.

  • memberFxn
    A função de membro a ser chamado quando esta notificação é recebida.

Função de membro deve ser declarada com o seguinte protótipo:

afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );

Se o manipulador de mensagens de notificação retorna um valor, ele deve colocá-lo no LRESULT apontada por resultado.

Para cada mensagem, pNotifyStruct aponta para qualquer um NMHDR estrutura ou um TBNOTIFY estrutura.Essas estruturas são descritas abaixo:

The NMHDR estrutura contém os seguintes membros:

typedef struct tagNMHDR {

HWND hwndFrom; // handle of control sending message

UINT idFrom;// identifier of control sending message

UINT code; // notification code; see below

} NMHDR;

  • hwndFrom
    Identificador da janela do controle que está enviando a notificação.Para converter este identificador para um CWnd ponteiro, uso CWnd::FromHandle.

  • idFrom
    Identificador do controle enviando a notificação.

  • código
    Código de notificação.Este membro pode ser um valor específico para um tipo de controle, sistema autônomo TBN_BEGINADJUST or TTN_NEEDTEXT, ou pode ser um dos valores de notificação comuns listados abaixo:

    • NM_CLICK   O usuário clicou a botão do mouse esquerdo do mouse dentro do controle.

    • NM_DBLCLK   O usuário clicou duas vezes com botão do mouse esquerdo do mouse no controle.

    • NM_KILLFOCUS   O controle perdeu o foco de entrada.

    • NM_OUTOFMEMORY   O controle não foi possível concluir uma operação porque não há memória suficiente disponível.

    • NM_RCLICK   O usuário clicou a botão do mouse direito do mouse dentro do controle.

    • NM_RDBLCLK   O usuário clicou duas vezes com botão do mouse direito do mouse no controle.

    • NM_RETURN   O controle tem o foco de entrada e o usuário pressionou a tecla ENTER.

    • NM_SETFOCUS   O controle tiver recebido o foco de entrada.

The TBNOTIFY estrutura contém os seguintes membros:

typedef struct {

NMHDR hdr; // information common to all WM_NOTIFY messages

int iItem; // index of button associated with notification

TBBUTTON tbButton; // info about button associated withnotification

int cchText; // count of characters in button text

LPSTR lpszText;// address of button text

} TBNOTIFY, FAR* LPTBNOTIFY;

Comentários

  • cabeçalho
    Informações comuns a todos os WM_NOTIFY mensagens.

  • iItem
    Índice do botão associado à notificação.

  • tbButton
    TBBUTTON estrutura que contém informações sobre botão de barra de ferramentas associada a notificação.

  • cchText
    Contagem de caracteres no texto do botão.

  • lpszText
    Ponteiro para o texto do botão.

sistema autônomo notificações que da barra de ferramentas envia são:

  • TBN_BEGINADJUST   Enviado quando o usuário começa a personalização de um controle de barra de ferramentas.O ponteiro aponta para um NMHDR estrutura que contém informações sobre a notificação.O manipulador não precisa retornar qualquer valor específico.

  • TBN_BEGINDRAG   Enviado quando o usuário começa a arrastar um botão em um controle de barra de ferramentas.O ponteiro aponta para um TBNOTIFY estrutura.The iItem membro contém o índice baseado em zero do botão que está sendo arrastado.O manipulador não precisa retornar qualquer valor específico.

  • TBN_CUSTHELP   Enviado quando o usuário escolhe o botão Ajuda na caixa de diálogo Personalizar barra de ferramentas.Nenhum valor retornado.O ponteiro aponta para um NMHDR estrutura que contém informações sobre a mensagem de notificação.O manipulador não precisa retornar qualquer valor específico.

  • TBN_ENDADJUST   Enviado quando o usuário pára um controle de barra de ferramentas de personalização.O ponteiro aponta para um NMHDR estrutura que contém informações sobre a mensagem de notificação.O manipulador não precisa retornar qualquer valor específico.

  • TBN_ENDDRAG   Enviado quando o usuário parar de arrastar um botão em um controle de barra de ferramentas.O ponteiro aponta para um TBNOTIFY estrutura.The iItem membro contém o índice baseado em zero do botão que está sendo arrastado.O manipulador não precisa retornar qualquer valor específico.

  • TBN_GETBUTTONINFO   Enviado quando o usuário estiver personalizando um controle de barra de ferramentas.A barra de ferramentas usa esta mensagem de notificação para recuperar as informações necessárias para a caixa de diálogo Personalizar.O ponteiro aponta para um TBNOTIFY estrutura.The iItem membro Especifica o índice baseado em zero de um botão.The pszText and cchText membros especifique o endereço e o comprimento, em caracteres de texto do botão corrente.Um aplicativo deve preencher a estrutura de informações sobre o botão. RetornarTRUE se as informações de botão foi copiadas para a estrutura ou FALSE outra forma.

  • TBN_QUERYDELETE   Enviado enquanto o usuário estiver personalizando uma barra de ferramentas para determinar se um botão pode ser excluído de um controle de barra de ferramentas.O ponteiro aponta para um TBNOTIFY estrutura.The iItem membro contém o índice baseado em zero do botão a ser excluído. RetornarTRUE para permitir que o botão para ser excluído ou FALSE para impedir que o botão seja excluído.

  • TBN_QUERYINSERT   Enviado enquanto o usuário estiver personalizando um controle de barra de ferramentas para determinar se um botão pode ser inserido à esquerda do botão determinado.O ponteiro aponta para um TBNOTIFY estrutura.The iItem membro contém o índice baseado em zero do botão a ser inserido. RetornarTRUE para permitir que um botão a ser inserido na frente de determinado botão ou FALSE para impedir que o botão que está sendo inserido.

  • TBN_RESET   Enviado quando o usuário redefine o conteúdo de caixa de diálogo Personalizar barra de ferramentas.O ponteiro aponta para um NMHDR estrutura que contém informações sobre a mensagem de notificação.O manipulador não precisa retornar qualquer valor específico.

  • TBN_TOOLBARCHANGE   Enviada depois que o usuário tiver personalizado a um controle de barra de ferramentas.O ponteiro aponta para um NMHDR estrutura que contém informações sobre a mensagem de notificação.O manipulador não precisa retornar qualquer valor específico.

Consulte também

Conceitos

Controles (MFC)

Referência

Usando CToolBarCtrl