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 di tasti di scelta rapida 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 nella 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 che contiene le informazioni sui messaggi recuperate dalla coda dei 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 informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Per distinguere il messaggio inviato da messaggi inviati da menu o controlli, la parola di 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 dal menu della finestra 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 una voce nel menu della finestra 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 WM_SYSKEYUP e WM_SYSKEYDOWN messaggi 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 di 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 della finestra , la funzione invia un messaggio di WM_COMMAND , anche se la finestra è ridotta a icona.

Esempio

Per un esempio, vedere Creazione di acceleratori per attributi del tipo di carattere.

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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll

Vedi anche

Informazioni concettuali

CreateAcceleratorTable

GetMessage

Tasti di scelta rapida

LoadAccelerators

MSG

PeekMessage

Riferimento

SetCapture

TranslateMessage

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN