Compartir a través de


Administrar notificaciones de personalización

Un control común de la barra de herramientas de Windows tiene características integradas de personalización, como un cuadro de diálogo definido de personalización, que permiten al usuario inserte, eliminar, o reorganiza los botones de la barra de herramientas.La aplicación determina si las características de personalización disponibles y controlar la extensión a la que el usuario puede personalizar la barra de herramientas.

Puede colocar estas características de personalización a disposición del usuario da a la barra de herramientas el estilo de CCS_ADJUSTABLE .Las características de personalización permiten al usuario arrastre un botón a una nueva posición o quitar un botón arrastrándolo desde la barra de herramientas.Además, el usuario puede hacer doble clic en la barra de herramientas para mostrar el cuadro de diálogo de Customize Toolbar , que permite al usuario agregar, eliminar, y reorganizar los botones de la barra de herramientas.La aplicación puede mostrar el cuadro de diálogo mediante la función miembro de Personalizar .

El control toolbar envía mensajes de notificación a la ventana primaria en cada paso del proceso de personalización.Si el usuario mantiene presionada la tecla MAYÚS abajo y comienza arrastrando un botón, la barra de herramientas controla automáticamente la operación de arrastrar.La barra de herramientas envía el mensaje de notificación de TBN_QUERYDELETE a la ventana primaria para determinar si el botón puede eliminarse.Finaliza la operación de arrastre si la ventana primaria devuelve FALSE.Si no, la entrada de mouse de las capturas de la barra de herramientas y espera al usuario para liberar el botón del mouse.

Cuando el usuario suelta el botón del mouse, el control toolbar determinan la ubicación del cursor.Si el cursor está fuera de la barra de herramientas, se elimina el botón.Si el cursor está en otro botón de la barra de herramientas, la barra de herramientas envía el mensaje de notificación de TBN_QUERYINSERT a la ventana primaria para determinar si un botón se puede insertar a la izquierda del botón especificado.Se inserta el botón si la ventana primaria devuelve TRUE; si no, no.La barra de herramientas envía el mensaje de notificación de TBN_TOOLBARCHANGE para indicar el final de la operación de arrastre.

Si el usuario inicia una operación de arrastre sin mantener presionada la tecla MAYÚS, el control toolbar envía el mensaje de notificación de TBN_BEGINDRAG a la ventana propietaria.Una aplicación que aplica su propio código botón-que arrastra puede utilizar este mensaje como señal de iniciar una operación de arrastre.La barra de herramientas envía el mensaje de notificación de TBN_ENDDRAG para indicar el final de la operación de arrastre.

Un control toolbar envía mensajes de notificación cuando el usuario personaliza una barra de herramientas mediante el cuadro de diálogo Customize Toolbar .La barra de herramientas envía el mensaje de notificación de TBN_BEGINADJUST después de que el usuario haga doble clic en la barra de herramientas, pero antes de que se crea el cuadro de diálogo.A continuación, la barra de herramientas comienza enviando una serie de mensajes de notificación de TBN_QUERYINSERT para determinar si la barra de herramientas permite que los botones están incrustados.Cuando la ventana primaria devuelve TRUE, la barra de herramientas detiene el envío de los mensajes de notificación de TBN_QUERYINSERT .Si la ventana primaria no devuelve TRUE para ningún botón, la barra de herramientas destruye el cuadro de diálogo.

A continuación, el control toolbar determina si algunos botones pueden eliminar de la barra de herramientas enviando un mensaje de notificación de TBN_QUERYDELETE para cada botón de la barra de herramientas.La ventana primaria devuelve TRUE para indicar que un botón puede ser eliminado; de lo contrario, devuelve FALSE.La barra de herramientas agrega todos los botones de la barra de herramientas al cuadro de diálogo, pero se grises los que no se pueden eliminar.

Siempre que el control toolbar necesita información sobre un botón en el cuadro de diálogo de la barra de herramientas de personalizar, envía el mensaje de notificación de TBN_GETBUTTONINFO , especificando el índice del botón que necesita la información y la dirección de una estructura de TBNOTIFY .La ventana primaria debe rellenar la estructura con la información pertinente.

El cuadro de diálogo de Customize Toolbar incluye un botón Ayuda y un botón restablecer.Cuando el usuario elige el botón Ayuda, el control toolbar envía el mensaje de notificación de TBN_CUSTHELP .La ventana primaria debe responder mostrando información de ayuda.El cuadro de diálogo envía el mensaje de notificación de TBN_RESET cuando el usuario selecciona el botón restablecer.Señales de este mensaje que la barra de herramientas está a punto de restablecer el cuadro de diálogo.

Estos mensajes son todos los mensajes de WM_NOTIFY , y se pueden controlar en su ventana propietaria por que agregan entradas de mapa de mensajes de la forma siguiente al mensaje de la ventana propietaria asignado:

ON_NOTIFY( wNotifyCode, idControl, memberFxn )

  • wNotifyCode
    Código del identificador de mensaje de notificación, como TBN_BEGINADJUST.

  • idControl
    El identificador del control que envía la notificación.

  • memberFxn
    La función miembro que se llamará cuando se recibe esta notificación.

La función miembro sería declarada con el siguiente prototipo:

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

Si el controlador de mensaje de notificación devuelve un valor, debe colocarlo en LRESULT designado por al resultado.

Para cada mensaje, los puntos de pNotifyStruct a una estructura de NMHDR o estructura de TBNOTIFY .Estas estructuras se describen a continuación:

La estructura de NMHDR contiene los miembros siguientes:

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 de ventana del control que está enviando la notificación.Para convertir este identificador a un puntero de CWnd , utilice CWnd::FromHandle.

  • idFrom
    Identificador del control que envía la notificación.

  • code
    Código de notificación.Este miembro puede ser un concreto en un tipo de control, como TBN_BEGINADJUST o TTN_NEEDTEXT, o puede ser uno de los valores comunes de notificación enumerados a continuación:

    • El usuario deNM_CLICKThe ha hecho clic en el botón primario en el control.

    • El usuario deNM_DBLCLKThe hace doble clic en el botón primario en el control.

    • El control deNM_KILLFOCUSThe ha perdido el foco de entrada.

    • El control deNM_OUTOFMEMORYno puede completar una operación porque no hay suficiente memoria disponible.

    • El usuario deNM_RCLICKThe ha hecho clic con el botón secundario del mouse en el control.

    • El usuario deNM_RDBLCLKThe ha hecho doble clic con el botón secundario del mouse en el control.

    • El control deNM_RETURNThe tiene el foco de entrada, y el usuario ha presionado la tecla ENTRAR.

    • El control deNM_SETFOCUSThe ha recibido el foco de entrada.

La estructura de TBNOTIFY contiene los miembros siguientes:

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;

Comentarios

  • hdr
    Común de información a todos los mensajes de WM_NOTIFY .

  • iItem
    Índice de botón asociado a la notificación.

  • tbButton
    Estructura deTBBUTTON que contiene información sobre el botón de la barra de herramientas asociada a la notificación.

  • cchText
    Número de caracteres de texto del botón.

  • lpszText
    Puntero al texto del botón.

Las notificaciones que la barra de herramientas envía son los siguientes:

  • TBN_BEGINADJUST Sent cuando el usuario comienza personalizar un control toolbar.Los puntos de puntero a una estructura de NMHDR que contiene información sobre la notificación.El controlador no necesita devolver ningún valor concreto.

  • TBN_BEGINDRAG Sent cuando el usuario comienza arrastrando un botón en un control toolbar.Los puntos de puntero a una estructura de TBNOTIFY .El miembro de iItem contiene el índice de base cero del botón que se arrastra.El controlador no necesita devolver ningún valor concreto.

  • TBN_CUSTHELP Sent cuando el usuario elige el botón Ayuda en el cuadro de diálogo de la barra de herramientas de personalizar.Ningún valor devuelto.Los puntos de puntero a una estructura de NMHDR que contiene información sobre el mensaje de notificación.El controlador no necesita devolver ningún valor concreto.

  • TBN_ENDADJUST Sent cuando el usuario detiene el personalizar de un control toolbar.Los puntos de puntero a una estructura de NMHDR que contiene información sobre el mensaje de notificación.El controlador no necesita devolver ningún valor concreto.

  • TBN_ENDDRAG Sent cuando el usuario detiene el arrastrar de un botón en un control toolbar.Los puntos de puntero a una estructura de TBNOTIFY .El miembro de iItem contiene el índice de base cero del botón que se arrastra.El controlador no necesita devolver ningún valor concreto.

  • TBN_GETBUTTONINFO Sent cuando el usuario está personalizando un control toolbar.La barra de herramientas utiliza este mensaje de notificación para recuperar la información necesaria para el cuadro de diálogo de la barra de herramientas de personalizar.Los puntos de puntero a una estructura de TBNOTIFY .El miembro de iItem especifica el índice de base cero de un botón.Los miembros de pszText y de cchText especifican la dirección y la longitud, en caracteres, el texto del botón actual.Una aplicación debe rellenar la estructura con información sobre el botón.TRUE Return si la información del botón se copiará en la estructura, o FALSE de otra manera.

  • TBN_QUERYDELETE Sent mientras el usuario está personalizando una barra de herramientas para determinar si un botón se puede eliminar de un control toolbar.Los puntos de puntero a una estructura de TBNOTIFY .El miembro de iItem contiene el índice de base cero del botón que se va a eliminar.TRUE Return para habilitar el botón se elimine o FALSE para evitar que el botón se elimine.

  • TBN_QUERYINSERT Sent mientras el usuario está personalizando un control toolbar para determinar si un botón se puede insertar a la izquierda del botón especificado.Los puntos de puntero a una estructura de TBNOTIFY .El miembro de iItem contiene el índice de base cero del botón que se va a insertar.TRUE Return para permitir un botón se inserte delante del botón determinado o de FALSE para evitar que el botón se inserte.

  • TBN_RESET Sent cuando el usuario restablece el contenido del cuadro de diálogo de la barra de herramientas de personalizar.Los puntos de puntero a una estructura de NMHDR que contiene información sobre el mensaje de notificación.El controlador no necesita devolver ningún valor concreto.

  • TBN_TOOLBARCHANGE Sent después de que el usuario haya personalizado un control toolbar.Los puntos de puntero a una estructura de NMHDR que contiene información sobre el mensaje de notificación.El controlador no necesita devolver ningún valor concreto.

Vea también

Referencia

Mediante CToolBarCtrl

Conceptos

Controles (MFC)