Compartilhar via


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

Converte pressionamentos de teclas de acelerador destinados ao quadro do contêiner enquanto um objeto está ativo no local.

Sintaxe

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

Parâmetros

[in] lpmsg

Um ponteiro para a estrutura MSG que contém a mensagem de pressionamento de tecla.

[in] wID

O valor do identificador de comando correspondente ao pressionamento de tecla na tabela de aceleradores fornecida pelo contêiner. Os contêineres devem usar esse valor em vez de traduzir novamente.

Valor retornado

Esse método retorna S_OK com êxito. Outros valores retornados possíveis incluem o seguinte.

Código de retorno Descrição
S_FALSE
O pressionamento de tecla não foi usado.
E_INVALIDARG
O ponteiro especificado é inválido.
E_UNEXPECTED
Erro inesperado.

Comentários

Anotações para chamadores

O método IOleInPlaceFrame::TranslateAccelerator é chamado indiretamente por OleTranslateAccelerator quando um acelerador de pressionamento de tecla destinado ao contêiner (quadro) é recebido.

Anotações aos implementadores

O aplicativo de contêiner deve executar seu processamento de acelerador habitual ou usar o wID diretamente e, em seguida, retornar, indicando se o acelerador de pressionamento de teclas foi processado. Se o contêiner for um aplicativo MDI e a função TranslateAccelerator falhar, o contêiner poderá chamar a função TranslateMDISysAccel , assim como faz para o processamento de mensagens usual.

Os objetos in-loco devem ter a primeira chance de traduzir mensagens de acelerador. No entanto, como os objetos implementados por aplicativos de objeto DLL não têm sua própria bomba de mensagem, eles recebem suas mensagens da fila de mensagens do contêiner. Para garantir que o objeto tenha a primeira chance de traduzir mensagens, um contêiner sempre deve chamar IOleInPlaceFrame::TranslateAccelerator antes de fazer sua própria tradução de acelerador. Por outro lado, um aplicativo de objeto executável deve chamar OleTranslateAccelerator depois de chamar TranslateAccelerator, chamando TranslateMessage e DispatchMessage somente se ambas as funções de tradução falharem.

Você deve definir tabelas de acelerador para contêineres para que eles funcionem corretamente com aplicativos de objeto que fazem suas próprias traduções de pressionamento de teclas de acelerador. As tabelas devem ser definidas da seguinte maneira.

"char", wID, VIRTKEY, CONTROL

Essa é a maneira mais comum de descrever aceleradores de teclado. A falha ao fazer isso pode fazer com que os pressionamentos de tecla sejam perdidos ou enviados para o objeto errado durante uma sessão in-loco.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho oleidl.h

Confira também

Ioleinplaceframe

IOleInPlaceFrame::TranslateAccelerator

OleTranslateAccelerator

TranslateAccelerator

TranslateMDISysAccel