Compartilhar via


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

Direciona o manipulador de visualização para manipular um pressionamento de tecla passado da bomba de mensagem do processo no qual o manipulador de visualização está em execução.

Sintaxe

HRESULT TranslateAccelerator(
  [in] MSG *pmsg
);

Parâmetros

[in] pmsg

Tipo: MSG*

Um ponteiro para uma mensagem de janela.

Valor retornado

Tipo: HRESULT

Se a mensagem de pressionamento de tecla puder ser processada pelo manipulador de visualização, o manipulador a processará e retornará S_OK. Se o manipulador de visualização não puder processar a mensagem de pressionamento de tecla, ele a oferecerá ao host usando TranslateAccelerator. Se o host processar a mensagem, esse método retornará S_OK. Se o host não processar a mensagem, esse método retornará S_FALSE.

Comentários

Essa função só será chamada da bomba de mensagem do processo no qual o manipulador de visualização está em execução. Essa função permite encaminhar mensagens de pressionamento de tecla da bomba de mensagem para o host usando TranslateAccelerator.

Quando o manipulador de visualização recebe uma mensagem (um pressionamento de tecla) de sua bomba de mensagens, ele é responsável por encaminhá-la para seu host.

Quando IObjectWithSite::SetSite é chamado no manipulador de visualização, uma referência ao host do manipulador de visualização é passada. O objeto deve imediatamente QueryInterface nesse site para IPreviewHandlerFrame e armazenar esse ponteiro.

Em seguida, o manipulador de visualização tem a opção de chamar GetWindowContext para obter uma tabela de aceleradores para filtrar pressionamentos de tecla. A visualização pode comparar pressionamentos de teclas com essa tabela de aceleradores usando IsAccelerator e chamar apenas IPreviewHandler::TranslateAccelerator para pressionamentos de tecla que correspondem. Isso pode causar um aumento modesto de desempenho. O manipulador de visualização deve liberar a tabela de aceleradores usando a função DestroyAcceleratorTable .

Também é aceitável que o manipulador de visualização evite usar a tabela completamente e chame IPreviewHandler::TranslateAccelerator para cada pressionamento de tecla. Observe que todos os manipuladores de visualização em execução em processos de baixa integridade devem usar esse método.

Quando uma tecla tab é pressionada, se um manipulador de visualização tiver mais de uma parada de tabulação, ele será responsável por mover o foco do teclado dentro dessas paradas de tabulação. Se o foco atual do teclado estiver em uma dessas paradas de tabulação e o avanço do foco do teclado o mover para outra parada de tabulação do visualizador, o visualizador deverá chamar SetFocus na próxima parada de tabulação. Caso contrário, a tecla tab deverá ser encaminhada para o host para manipular a saída de tabulação do visualizador.

Requisitos

   
Cliente mínimo com suporte Windows Vista, Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shobjidl_core.h (inclua Shobjidl.h)
Redistribuível Windows Search 4 ou posterior