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
[in] lpMsg
Tipo: de LPMSG de
Puntero a una estructura de MSG de
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 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
aceleradores de teclado de
de referencia de