Condividi tramite


Metodo IOleInPlaceFrame::TranslateAccelerator (oleidl.h)

Converte le sequenze di tasti di scelta rapida destinate al frame del contenitore mentre un oggetto è attivo sul posto.

Sintassi

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

Parametri

[in] lpmsg

Puntatore alla struttura MSG contenente il messaggio di sequenza di tasti.

[in] wID

Valore dell'identificatore di comando corrispondente alla sequenza di tasti nella tabella di acceleratore fornita dal contenitore. I contenitori devono usare questo valore anziché tradurre di nuovo.

Valore restituito

Questo metodo restituisce S_OK se l'operazione ha esito positivo. Gli altri valori restituiti possibili includono i seguenti:

Codice restituito Descrizione
S_FALSE
La sequenza di tasti non è stata usata.
E_INVALIDARG
Il puntatore specificato non è valido.
E_UNEXPECTED
Si è verificato un errore imprevisto.

Commenti

Note ai chiamanti

Il metodo IOleInPlaceFrame::TranslateAccelerator viene chiamato indirettamente da OleTranslateAccelerator quando viene ricevuto un acceleratore di tasti destinato al contenitore (frame).

Note per gli implementatori

L'applicazione contenitore deve eseguire la consueta elaborazione dell'acceleratore o usare direttamente wID e quindi restituire, che indica se l'acceleratore di sequenze di tasti è stato elaborato. Se il contenitore è un'applicazione MDI e la funzione TranslateAccelerator ha esito negativo, il contenitore può chiamare la funzione TranslateMDISysAccel , proprio come avviene per l'elaborazione dei messaggi consueta.

Gli oggetti sul posto devono avere la prima possibilità di tradurre i messaggi dell'acceleratore. Tuttavia, poiché gli oggetti implementati dalle applicazioni a oggetti DLL non hanno la propria pompa di messaggi, ricevono i messaggi dalla coda dei messaggi del contenitore. Per assicurarsi che l'oggetto abbia la prima possibilità di tradurre i messaggi, un contenitore deve sempre chiamare IOleInPlaceFrame::TranslateAccelerator prima di eseguire la propria traduzione dell'acceleratore. Al contrario, un'applicazione dell'oggetto eseguibile deve chiamare OleTranslateAccelerator dopo aver chiamato TranslateAccelerator, chiamando TranslateMessage e DispatchMessage solo se entrambe le funzioni di traduzione hanno esito negativo.

È consigliabile definire tabelle di acceleratore per i contenitori in modo che funzionino correttamente con applicazioni a oggetti che eseguono traduzioni di tasti di scelta rapida. Le tabelle devono essere definite come segue.

"char", wID, VIRTKEY, CONTROL

Questo è il modo più comune per descrivere gli acceleratori di tastiera. In caso contrario, è possibile che le sequenze di tasti vengano perse o inviate all'oggetto errato durante una sessione sul posto.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione oleidl.h

Vedi anche

Ioleinplaceframe

IOleInPlaceFrame::TranslateAccelerator

OleTranslateAccelerator

TranslateAccelerator

TranslateMDISysAccel