Función TranslateAcceleratorW (winuser.h)

Procesa las teclas de aceleración para los comandos de menú. La función traduce un mensaje de WM_KEYDOWN o WM_SYSKEYDOWN a un mensaje de WM_COMMAND o WM_SYSCOMMAND (si hay una entrada para la clave en la tabla de aceleradores especificada) y, a continuación, envía el mensaje WM_COMMAND o WM_SYSCOMMAND directamente al procedimiento de ventana especificado. TranslateAccelerator no devuelve hasta que el procedimiento de ventana haya procesado el mensaje.

Sintaxis

int TranslateAcceleratorW(
  [in] HWND   hWnd,
  [in] HACCEL hAccTable,
  [in] LPMSG  lpMsg
);

Parámetros

[in] hWnd

Tipo: HWND

Identificador de la ventana cuyos mensajes se van a traducir.

[in] hAccTable

Tipo: HACCEL

Identificador de la tabla de aceleradores. La tabla de aceleradores debe haberse cargado mediante una llamada a la función LoadAccelerators o creada por una llamada a la función CreateAcceleratorTable .

[in] lpMsg

Tipo: LPMSG

Puntero a una estructura MSG que contiene información de mensajes recuperada de la cola de mensajes del subproceso que realiza la llamada mediante la función GetMessage o PeekMessage .

Valor devuelto

Tipo: int

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Para diferenciar el mensaje que envía esta función de los mensajes enviados por menús o controles, la palabra de orden superior del parámetro wParam del WM_COMMAND o WM_SYSCOMMAND mensaje contiene el valor 1.

Las combinaciones de teclas de aceleración usadas para seleccionar elementos del menú de la ventana se traducen en mensajes WM_SYSCOMMAND ; todas las demás combinaciones de teclas de aceleración se traducen en mensajes WM_COMMAND .

Cuando TranslateAccelerator devuelve un valor distinto de cero y el mensaje se traduce, la aplicación no debe usar la función TranslateMessage para volver a procesar el mensaje.

Un acelerador no debe corresponder a un comando de menú.

Si el comando acelerador corresponde a un elemento de menú, la aplicación se envía WM_INITMENU y WM_INITMENUPOPUP mensajes, como si el usuario intentara mostrar el menú. Sin embargo, estos mensajes no se envían si existe alguna de las condiciones siguientes:

  • La ventana está deshabilitada.
  • La combinación de teclas de aceleración no corresponde a un elemento del menú de la ventana y la ventana se minimiza.
  • Una captura del mouse está en vigor. Para obtener información sobre la captura del mouse, consulte la función SetCapture .
Si la ventana especificada es la ventana activa y ninguna ventana tiene el foco del teclado (que suele ser el caso si la ventana está minimizada), TranslateAccelerator traduce WM_SYSKEYUP y WM_SYSKEYDOWN mensajes en lugar de WM_KEYUP y WM_KEYDOWN mensajes.

Si se produce una pulsación de tecla de aceleración que corresponde a un elemento de menú cuando se minimiza la ventana que posee el menú, TranslateAccelerator no envía un mensaje de WM_COMMAND . Sin embargo, si se produce una pulsación de tecla de aceleración que no coincide con ninguno de los elementos del menú de la ventana o en el menú de la ventana , la función envía un mensaje de WM_COMMAND , incluso si la ventana está minimizada.

Ejemplos

Para obtener un ejemplo, vea Creating Accelerators for Font Attributes.

Nota

El encabezado winuser.h define TranslateAccelerator como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluir Windows.h)
Library User32.lib
Archivo DLL User32.dll

Consulte también