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 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
Referencia