Compartir a través de


Función TranslateAcceleratorA (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 TranslateAcceleratorA(
  [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 mensaje recuperada de la cola de mensajes del subproceso de 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 esta función envía de 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 en el 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, consulte Creating Accelerators for Font Attributes(Crear aceleradores para atributos de fuente).

Nota

El encabezado winuser.h define TranslateAccelerator como un 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 neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en 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 (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll

Consulte también

Conceptual

CreateAcceleratorTable

GetMessage

Aceleradores de teclado

LoadAccelerators

MSG

PeekMessage

Referencia

SetCapture

TranslateMessage

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN