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 de

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

[in] lpMsg

Tipo: de LPMSG de

Puntero a una estructura de MSG de que contiene información de mensajes 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 ejecuta correctamente, el valor devuelto es distinto de cero.

Si se produce un error en la función, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Observaciones

Para diferenciar el mensaje que esta función envía desde 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 de la ventana de menú se traducen en mensajes de 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 estuviera intentando 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 de la ventana menú 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 mensajes WM_KEYDOWN.

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 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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winuser.h (incluya Windows.h)
biblioteca de User32.lib
DLL de User32.dll

Consulte también

conceptual de

CreateAcceleratorTable

GetMessage

aceleradores de teclado de

LoadAccelerators

msg

PeekMessage

de referencia de

SetCapture

TranslateMessage

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN