Freigeben über


TranslateAcceleratorA-Funktion (winuser.h)

Verarbeitet Tastenkombinationen für Menübefehle. Die Funktion übersetzt eine WM_KEYDOWN oder WM_SYSKEYDOWN Nachricht in eine WM_COMMAND oder WM_SYSCOMMAND Nachricht (wenn in der angegebenen Zugriffstastentabelle ein Eintrag vorhanden ist) und sendet dann die WM_COMMAND oder WM_SYSCOMMAND Nachricht direkt an die angegebene Fensterprozedur. TranslateAccelerator- wird erst zurückgegeben, wenn die Fensterprozedur die Nachricht verarbeitet hat.

Syntax

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

Parameter

[in] hWnd

Typ: HWND-

Ein Handle für das Fenster, dessen Nachrichten übersetzt werden sollen.

[in] hAccTable

Typ: HACCEL-

Ein Handle zur Zugriffstastentabelle. Die Zugriffstastentabelle muss durch einen Aufruf der LoadAccelerators Funktion geladen oder durch einen Aufruf der CreateAcceleratorTable-Funktion erstellt worden sein.

[in] lpMsg

Typ: LPMSG-

Ein Zeiger auf eine MSG--Struktur, die Nachrichteninformationen enthält, die aus der Nachrichtenwarteschlange des aufrufenden Threads mithilfe der GetMessage- oder PeekMessage--Funktion abgerufen werden.

Rückgabewert

Typ: int

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

Um die Nachricht zu unterscheiden, die diese Funktion von Nachrichten sendet, die von Menüs oder Steuerelementen gesendet werden, enthält das Hochreihenfolgewort des wParam--Parameters des WM_COMMAND oder WM_SYSCOMMAND Nachricht den Wert 1.

Tastenkombinationen, die zum Auswählen von Elementen aus dem Fenster Menüs verwendet werden, werden in WM_SYSCOMMAND Nachrichten übersetzt; Alle anderen Tastenkombinationen werden in WM_COMMAND Nachrichten übersetzt.

Wenn TranslateAccelerator einen Wert ungleich Null zurückgibt und die Nachricht übersetzt wird, sollte die Anwendung nicht die TranslateMessage-Funktion verwenden, um die Nachricht erneut zu verarbeiten.

Eine Zugriffstaste muss keinem Menübefehl entsprechen.

Wenn der Zugriffstastenbefehl einem Menüelement entspricht, wird die Anwendung WM_INITMENU und WM_INITMENUPOPUP Nachrichten gesendet, als ob der Benutzer versucht hätte, das Menü anzuzeigen. Diese Nachrichten werden jedoch nicht gesendet, wenn eine der folgenden Bedingungen vorhanden ist:

  • Das Fenster ist deaktiviert.
  • Die Tastenkombination für die Tastenkombination entspricht keinem Element im Fenster Menü, und das Fenster wird minimiert.
  • Eine Mausaufnahme ist in Kraft. Informationen zur Mauserfassung finden Sie in der SetCapture--Funktion.
Wenn das angegebene Fenster das aktive Fenster ist und kein Fenster den Tastaturfokus hat (was im Allgemeinen der Fall ist, wenn das Fenster minimiert ist), TranslateAccelerator übersetztWM_SYSKEYUP und WM_SYSKEYDOWN Nachrichten anstelle von WM_KEYUP und WM_KEYDOWN Nachrichten.

Wenn ein Zugriffstastenanschlag auftritt, der einem Menüelement entspricht, wenn das Fenster, das das Menü besitzt, minimiert wird, sendet TranslateAccelerator keine WM_COMMAND Nachricht. Wenn jedoch ein Tastenanschlag auftritt, der keinem der Elemente im Menü des Fensters oder im Fenster Menü entspricht, sendet die Funktion eine WM_COMMAND Nachricht, auch wenn das Fenster minimiert ist.

Beispiele

Ein Beispiel finden Sie unter Creating Accelerators for Font Attributes.

Anmerkung

Der winuser.h-Header definiert TranslateAccelerator als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- winuser.h (enthalten Windows.h)
Library User32.lib
DLL- User32.dll

Siehe auch

Konzeptionelle

CreateAcceleratorTable-

GetMessage-

Tastenkombinationen

LoadAccelerators-

MSG-

PeekMessage-

Referenz-

SetCapture-

TranslateMessage-

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN