Condividi tramite


Funzione TranslateAcceleratorA (winuser.h)

Elabora i tasti di scelta rapida per i comandi di menu. La funzione converte un messaggio WM_KEYDOWN o WM_SYSKEYDOWN in un messaggio WM_COMMAND o WM_SYSCOMMAND (se è presente una voce per la chiave nella tabella dell'acceleratore specificata) e quindi invia il messaggio WM_COMMAND o WM_SYSCOMMAND direttamente alla routine della finestra specificata. TranslateAccelerator non restituisce finché la routine della finestra non ha elaborato il messaggio.

Sintassi

int TranslateAcceleratorA(
  [in] HWND   hWnd,
  [in] HACCEL hAccTable,
  [in] LPMSG  lpMsg
);

Parametri

[in] hWnd

Tipo: HWND

Handle della finestra i cui messaggi devono essere tradotti.

[in] hAccTable

Tipo: HACCEL

Handle per la tabella dell'acceleratore. La tabella dell'acceleratore deve essere stata caricata da una chiamata alla funzione LoadAccelerators o creata da una chiamata alla funzione CreateAcceleratorTable.

[in] lpMsg

Tipo: LPMSG

Puntatore a una struttura msg di che contiene informazioni sui messaggi recuperate dalla coda di messaggi del thread chiamante usando la funzione GetMessage o PeekMessage.

Valore restituito

Tipo: int

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni

Per distinguere il messaggio inviato da questa funzione dai messaggi inviati da menu o controlli, la parola dell'ordine elevato del parametro wParam del WM_COMMAND o WM_SYSCOMMAND messaggio contiene il valore 1.

Le combinazioni di tasti di scelta rapida usate per selezionare gli elementi nella finestra di menu vengono convertite in messaggi WM_SYSCOMMAND; tutte le altre combinazioni di tasti di scelta rapida vengono convertite in messaggi WM_COMMAND.

Quando TranslateAccelerator restituisce un valore diverso da zero e il messaggio viene convertito, l'applicazione non deve usare la funzione TranslateMessage per elaborare nuovamente il messaggio.

Un acceleratore non deve corrispondere a un comando di menu.

Se il comando acceleratore corrisponde a una voce di menu, l'applicazione viene inviata WM_INITMENU e WM_INITMENUPOPUP messaggi, come se l'utente tentasse di visualizzare il menu. Tuttavia, questi messaggi non vengono inviati se esistono una delle condizioni seguenti:

  • La finestra è disabilitata.
  • La combinazione di tasti di scelta rapida non corrisponde a un elemento nella finestra menu e la finestra è ridotta a icona.
  • Un'acquisizione del mouse è attiva. Per informazioni sull'acquisizione del mouse, vedere la funzione SetCapture.
Se la finestra specificata è la finestra attiva e nessuna finestra ha lo stato attivo della tastiera (in genere se la finestra è ridotta a icona), TranslateAccelerator converte i messaggi WM_SYSKEYUP e WM_SYSKEYDOWN anziché WM_KEYUP e WM_KEYDOWN messaggi.

Se si verifica una sequenza di tasti di scelta rapida che corrisponde a una voce di menu quando la finestra proprietaria del menu è ridotta a icona, TranslateAccelerator non invia un messaggio WM_COMMAND. Tuttavia, se si verifica una sequenza di tasti di scelta rapida che non corrisponde ad alcun elemento nel menu della finestra o nel menu finestra, la funzione invia un messaggio WM_COMMAND, anche se la finestra è ridotta a icona.

Esempi

Per un esempio, vedere Creating Accelerators for Font Attributes.

Nota

L'intestazione winuser.h definisce TranslateAccelerator come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione winuser.h (include Windows.h)
libreria User32.lib
dll User32.dll

Vedere anche

concettuale

CreateAcceleratorTable

GetMessage

tasti di scelta rapida

LoadAccelerators

MSG

PeekMessage

riferimento

SetCapture

TranslateMessage

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN