Compartir a través de


Método IPreviewHandler::TranslateAccelerator (shobjidl_core.h)

Dirige el controlador de vista previa para controlar una pulsación de tecla pasada desde la bomba de mensajes del proceso en el que se ejecuta el controlador de vista previa.

Sintaxis

HRESULT TranslateAccelerator(
  [in] MSG *pmsg
);

Parámetros

[in] pmsg

Tipo: MSG*

Puntero a un mensaje de ventana.

Valor devuelto

Tipo: HRESULT

Si el controlador de vista previa puede procesar el mensaje de pulsación de teclas, el controlador lo procesará y devolverá S_OK. Si el controlador de vista previa no puede procesar el mensaje de pulsación de teclas, lo ofrecerá al host mediante TranslateAccelerator. Si el host procesa el mensaje, este método devolverá S_OK. Si el host no procesa el mensaje, este método devolverá S_FALSE.

Comentarios

Solo se llamará a esta función desde la bomba de mensajes del proceso en el que se ejecuta el controlador de vista previa. Esta función permite reenviar mensajes de pulsación de teclas desde la bomba de mensajes al host mediante TranslateAccelerator.

Cuando el controlador de vista previa recibe un mensaje (una pulsación de tecla) de su bomba de mensajes, es responsable de reenviarlo a su host.

Cuando se llama a IObjectWithSite::SetSite en el controlador de vista previa, se pasa una referencia al host del controlador de vista previa. El objeto debe consultar inmediatamente ese sitio para IPreviewHandlerFrame y almacenar ese puntero.

A continuación, el controlador de vista previa tiene la opción de llamar a GetWindowContext para obtener una tabla de aceleración para filtrar las pulsaciones de teclas. A continuación, la vista previa puede comparar pulsaciones de teclas con esa tabla de aceleración mediante IsAccelerator y solo llamar a IPreviewHandler::TranslateAccelerator para pulsaciones de teclas que coincidan. Esto puede provocar un aumento moderado del rendimiento. El controlador de vista previa debe liberar la tabla aceleradora mediante la función DestroyAcceleratorTable .

También es aceptable que el controlador de vista previa evite usar la tabla por completo y llamar a IPreviewHandler::TranslateAccelerator para cada pulsación de tecla. Tenga en cuenta que todos los controladores de vista previa que se ejecutan en procesos de baja integridad deben usar este método.

Cuando se presiona una tecla de tabulación, si un controlador de vista previa tiene más de una tabulación, es responsable de mover el foco del teclado dentro de esas tabulaciones. Si el foco del teclado actual está en una de esas tabulaciones y avanzar el foco del teclado lo movería a otra tabulación de vista previa, el previsualizador debe llamar a SetFocus en la siguiente tabulación. De lo contrario, la tecla de tabulación se debe reenviar al host para controlar el tabulador fuera del controlador de vista previa.

Requisitos

   
Cliente mínimo compatible Windows Vista, Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shobjidl_core.h (include Shobjidl.h)
Redistribuible Windows Search 4 o posterior