Método IOleInPlaceFrame::TranslateAccelerator (oleidl.h)

Traduce las pulsaciones de tecla del acelerador diseñadas para el marco del contenedor mientras un objeto está activo en su lugar.

Sintaxis

HRESULT TranslateAccelerator(
  [in] LPMSG lpmsg,
  [in] WORD  wID
);

Parámetros

[in] lpmsg

Puntero a la estructura msg que contiene el mensaje de pulsación de tecla.

[in] wID

Valor del identificador de comando correspondiente a la pulsación de tecla en la tabla de aceleradores proporcionada por el contenedor. Los contenedores deben usar este valor en lugar de traducirlo de nuevo.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros posibles valores devueltos son los siguientes.

Código devuelto Descripción
S_FALSE
No se usó la pulsación de tecla.
E_INVALIDARG
El puntero especificado no es válido.
E_UNEXPECTED
Se ha producido un error inesperado.

Comentarios

Notas a los autores de llamadas

OleTranslateAccelerator llama indirectamente al método IOleInPlaceFrame::TranslateAccelerator cuando se recibe un acelerador de pulsaciones de teclas destinado al contenedor (marco).

Notas para los implementadores

La aplicación contenedora debe realizar su procesamiento de acelerador habitual, o usar wID directamente y, a continuación, devolver, que indica si se procesó el acelerador de pulsaciones de teclas. Si el contenedor es una aplicación MDI y se produce un error en la función TranslateAccelerator , el contenedor puede llamar a la función TranslateMDISysAccel , igual que para su procesamiento de mensajes habitual.

Los objetos en contexto deben tener la primera oportunidad de traducir mensajes de aceleración. Sin embargo, dado que los objetos implementados por las aplicaciones de objetos DLL no tienen su propio bombeo de mensajes, reciben sus mensajes de la cola de mensajes del contenedor. Para asegurarse de que el objeto tiene la primera oportunidad de traducir mensajes, un contenedor siempre debe llamar a IOleInPlaceFrame::TranslateAccelerator antes de realizar su propia traducción del acelerador. Por el contrario, una aplicación de objeto ejecutable debe llamar a OleTranslateAccelerator después de llamar a TranslateAccelerator, llamando a TranslateMessage y DispatchMessage solo si se produce un error en ambas funciones de traducción.

Debe definir tablas de aceleradores para contenedores para que funcionen correctamente con aplicaciones de objetos que realicen sus propias traducciones de pulsación de teclas de aceleración. Las tablas deben definirse de la siguiente manera.

"char", wID, VIRTKEY, CONTROL

Esta es la forma más común de describir los aceleradores de teclado. Si no lo hace, se pueden perder o enviar pulsaciones de teclas al objeto incorrecto durante una sesión local.

Requisitos

   
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 oleidl.h

Consulte también

IOleInPlaceFrame

IOleInPlaceFrame::TranslateAccelerator

OleTranslateAccelerator

TranslateAccelerator

TranslateMDISysAccel