Condividi tramite


Metodo IPreviewHandler::TranslateAccelerator (shobjidl_core.h)

Indirizza il gestore di anteprima a gestire una sequenza di tasti passata dal message pump del processo in cui è in esecuzione il gestore di anteprima.

Sintassi

HRESULT TranslateAccelerator(
  [in] MSG *pmsg
);

Parametri

[in] pmsg

Tipo: MSG*

Puntatore a un messaggio della finestra.

Valore restituito

Tipo: HRESULT

Se il messaggio di sequenza di tasti può essere elaborato dal gestore di anteprima, il gestore lo elabora e restituisce S_OK. Se il gestore di anteprima non è in grado di elaborare il messaggio di sequenza di tasti, lo offrirà all'host usando TranslateAccelerator. Se l'host elabora il messaggio, questo metodo restituirà S_OK. Se l'host non elabora il messaggio, questo metodo restituirà S_FALSE.

Commenti

Questa funzione verrà chiamata solo dal message pump del processo in cui è in esecuzione il gestore di anteprima. Questa funzione consente di inoltrare i messaggi di sequenza di tasti dal message pump all'host usando TranslateAccelerator.

Quando il gestore di anteprima riceve un messaggio (una sequenza di tasti) dal relativo pump di messaggi, è responsabile dell'inoltro al relativo host.

Quando viene chiamato IObjectWithSite::SetSite nel gestore di anteprima, viene passato un riferimento all'host del gestore di anteprima. L'oggetto deve immediatamente eseguire QueryInterface per il sito per IPreviewHandlerFrame e archiviare tale puntatore.

Il gestore di anteprima ha quindi la possibilità di chiamare GetWindowContext per ottenere una tabella di tasti di scelta rapida per filtrare le sequenze di tasti. L'anteprima può quindi confrontare le sequenze di tasti con quella tabella dell'acceleratore usando IsAccelerator e chiamare solo IPreviewHandler::TranslateAccelerator per le sequenze di tasti corrispondenti. Ciò può causare un modesto aumento delle prestazioni. Il gestore di anteprima deve rilasciare la tabella dell'acceleratore usando la funzione DestroyAcceleratorTable .

È anche accettabile che il gestore di anteprima eviti di usare completamente la tabella e chiamare IPreviewHandler::TranslateAccelerator per ogni sequenza di tasti. Si noti che tutti i gestori di anteprima in esecuzione nei processi a bassa integrità devono usare questo metodo.

Quando viene premuto un tasto TAB, se un gestore di anteprima ha più di una tabulazione, è responsabile dello spostamento dello stato attivo della tastiera all'interno di tali tabulazioni. Se lo stato attivo della tastiera corrente si trova su una di queste tabulazioni e l'avanzamento dello stato attivo della tastiera lo sposta in un'altra tabulazione dell'anteprima, l'anteprima dovrebbe chiamare SetFocus nella tabulazione successiva. In caso contrario, il tasto TAB deve essere inoltrato all'host per gestire la tabulazione all'esterno dell'anteprima.

Requisiti

   
Client minimo supportato Windows Vista, Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shobjidl_core.h (include Shobjidl.h)
Componente ridistribuibile Windows Search 4 o versione successiva