Función de devolución de llamada CBTProc

Función de devolución de llamada definida por la aplicación o definida por la biblioteca que se usa con la función SetWindowsHookExA/SetWindowsHookExW . El sistema llama a esta función antes de activar, crear, destruir, minimizar, maximizar, mover o cambiar el tamaño de una ventana; antes de completar un comando del sistema; antes de quitar un evento de mouse o teclado de la cola de mensajes del sistema; antes de establecer el foco del teclado; o antes de sincronizar con la cola de mensajes del sistema. Una aplicación de entrenamiento basado en equipos (CBT) usa este procedimiento de enlace para recibir notificaciones útiles del sistema.

Sintaxis

LRESULT CALLBACK CBTProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

Parámetros

  • nCode [in]
    Tipo: int

    Código que usa el procedimiento de enlace para determinar cómo procesar el mensaje. Si nCode es menor que cero, el procedimiento de enlace debe pasar el mensaje a la función CallNextHookEx sin procesamiento adicional y debe devolver el valor devuelto por CallNextHookEx. Este parámetro puede ser uno de los valores siguientes.

    Valor Significado
    HCBT_ACTIVATE 5

    El sistema está a punto de activar una ventana.

    HCBT_CLICKSKIPPED 6

    El sistema ha quitado un mensaje del mouse de la cola de mensajes del sistema. Al recibir este código de enlace, una aplicación CBT debe instalar un procedimiento de enlace WH_JOURNALPLAYBACK en respuesta al mensaje del mouse.

    HCBT_CREATEWND 3

    Se va a crear una ventana. El sistema llama al procedimiento de enlace antes de enviar el WM_CREATE o WM_NCCREATE mensaje a la ventana. Si el procedimiento de enlace devuelve un valor distinto de cero, el sistema destruye la ventana; La función CreateWindow devuelve NULL, pero el mensaje WM_DESTROY no se envía a la ventana. Si el procedimiento de enlace devuelve cero, la ventana se crea normalmente.

    En el momento de la notificación de HCBT_CREATEWND , se ha creado la ventana, pero es posible que no se haya determinado su tamaño y posición finales y que no se haya establecido su ventana primaria. Es posible enviar mensajes a la ventana recién creada, aunque aún no ha recibido WM_NCCREATE o WM_CREATE mensajes. También es posible cambiar la posición en el orden z de la ventana recién creada modificando el miembro hwndInsertAfter de la estructura CBT_CREATEWND .

    HCBT_DESTROYWND 4

    Una ventana está a punto de destruirse.

    HCBT_KEYSKIPPED 7

    El sistema ha quitado un mensaje de teclado de la cola de mensajes del sistema. Al recibir este código de enlace, una aplicación CBT debe instalar un procedimiento de enlace de WH_JOURNALPLAYBACK en respuesta al mensaje del teclado.

    HCBT_MINMAX 1

    Una ventana está a punto de minimizarse o maximizarse.

    HCBT_MOVESIZE 0

    Una ventana está a punto de moverse o cambiar el tamaño.

    HCBT_QS 2

    El sistema ha recuperado un mensaje WM_QUEUESYNC de la cola de mensajes del sistema.

    HCBT_SETFOCUS 9

    Una ventana está a punto de recibir el foco del teclado.

    HCBT_SYSCOMMAND 8

    Se va a llevar a cabo un comando del sistema. Esto permite a una aplicación CBT evitar el cambio de tareas mediante teclas de acceso rápido.

     
    • wParam [in]
      Tipo: WPARAM

      Depende del parámetro nCode . Para obtener más información, consulte la siguiente sección Comentarios.

    • lParam [in]
      Tipo: LPARAM

      Depende del parámetro nCode . Para obtener más información, consulte la siguiente sección Comentarios.

    Valor devuelto

    Tipo:****

    Tipo: LRESULT

    El valor devuelto por el procedimiento de enlace determina si el sistema permite o impide una de estas operaciones. Para las operaciones correspondientes a los siguientes códigos de enlace CBT, el valor devuelto debe ser 0 para permitir la operación o 1 para evitarlo.

    • HCBT_ACTIVATE
    • HCBT_CREATEWND
    • HCBT_DESTROYWND
    • HCBT_MINMAX
    • HCBT_MOVESIZE
    • HCBT_SETFOCUS
    • HCBT_SYSCOMMAND

    En el caso de las operaciones correspondientes a los siguientes códigos de enlace CBT, se omite el valor devuelto.

    • HCBT_CLICKSKIPPED
    • HCBT_KEYSKIPPED
    • HCBT_QS

    Comentarios

    El tipo HOOKPROC define un puntero a esta función de devolución de llamada. CBTProc es un marcador de posición para el nombre de función definido por la aplicación o la biblioteca.

    El procedimiento de enlace no debe instalar un procedimiento de enlace de WH_JOURNALPLAYBACK excepto en las situaciones descritas en la lista anterior de códigos de enlace.

    Una aplicación instala el procedimiento de enlace especificando el tipo de enlace WH_CBT y un puntero al procedimiento de enlace en una llamada a la función SetWindowsHookExA/SetWindowsHookExW .

    En la tabla siguiente se describen los parámetros wParam y lParam para cada código de enlace de HCBT_ .

    Valor wParam lParam
    HCBT_ACTIVATE Especifica el identificador de la ventana a punto de activarse. Especifica un puntero largo a una estructura CBTACTIVATESTRUCT que contiene el identificador de la ventana activa y especifica si la activación cambia debido a un clic del mouse.
    HCBT_CLICKSKIPPED Especifica el mensaje del mouse quitado de la cola de mensajes del sistema. Especifica un puntero largo a una estructura MOUSEHOOKSTRUCT que contiene el código de prueba de posicionamiento y el identificador de la ventana para la que está previsto el mensaje del mouse.

    El valor HCBT_CLICKSKIPPED se envía a un procedimiento de enlace CBTProc solo si se instala un enlace de WH_MOUSE . Para obtener una lista de códigos de prueba de posicionamiento, consulte WM_NCHITTEST.

    HCBT_CREATEWND Especifica el identificador de la nueva ventana. Especifica un puntero largo a una estructura de CBT_CREATEWND que contiene parámetros de inicialización para la ventana. Los parámetros incluyen las coordenadas y dimensiones de la ventana. Al cambiar estos parámetros, un procedimiento de enlace CBTProc puede establecer el tamaño inicial y la posición de la ventana.
    HCBT_DESTROYWND Especifica el identificador de la ventana a punto de destruirse. No está definido y debe establecerse en cero.
    HCBT_KEYSKIPPED Especifica el código de clave virtual. Especifica el recuento de repeticiones, el código de examen, el código de transición de claves, el estado de clave anterior y el código de contexto. El valor HCBT_KEYSKIPPED se envía a un procedimiento de enlace CBTProc solo si se instala un enlace de WH_KEYBOARD . Para obtener más información, consulte WM_KEYUP o WM_KEYDOWN.
    HCBT_MINMAX Especifica el identificador de la ventana que se minimiza o maximiza. Especifica, en la palabra de orden bajo, un valor de ventana de presentación (SW_) que especifica la operación. Para obtener una lista de los valores de la ventana de presentación, vea ShowWindow. La palabra de orden alto no está definida.
    HCBT_MOVESIZE Especifica el identificador de la ventana que se va a mover o ajustar. Especifica un puntero largo a una estructura RECT que contiene las coordenadas de la ventana. Al cambiar los valores de la estructura, un procedimiento de enlace CBTProc puede establecer las coordenadas finales de la ventana.
    HCBT_QS No está definido y debe ser cero. No está definido y debe ser cero.
    HCBT_SETFOCUS Especifica el identificador para la ventana que obtiene el foco del teclado. Especifica el identificador de la ventana que pierde el foco del teclado.
    HCBT_SYSCOMMAND Especifica un valor de comando del sistema (SC_) que especifica el comando del sistema. Para obtener más información sobre los valores del comando del sistema, consulte WM_SYSCOMMAND. Contiene los mismos datos que el valor lParam de un mensaje de WM_SYSCOMMAND : si se elige un comando de menú del sistema con el mouse, la palabra de orden bajo contiene la coordenada x del cursor, en coordenadas de pantalla y la palabra de orden superior contiene la coordenada y; de lo contrario, no se usa el parámetro .

     

    Para obtener más información, consulta Eventos de Windows.

    Requisitos

    Cliente mínimo compatible

    Windows 2000 Professional [solo aplicaciones de escritorio]

    Servidor mínimo compatible

    Windows 2000 Server [solo aplicaciones de escritorio]

    Encabezado

    Winuser.h (incluya Windows.h)

    Consulte también

    CallNextHookEx

    CreateWindowA/CreateWindowW

    SetWindowsHookExA/SetWindowsHookExW

    mensaje de WM_SYSCOMMAND

    Enlaces