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 |