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 Beschleunigertabelle ein Eintrag für den Schlüssel 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 für die Acceleratortabelle. Die Acceleratortabelle 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 mithilfe der GetMessage - oder PeekMessage-Funktion aus der Nachrichtenwarteschlange des aufrufenden Threads abgerufen wurden.

Rückgabewert

Typ: int

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

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

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

Tastenkombinationen, die zum Auswählen von Elementen im Fenstermenü verwendet werden, werden in WM_SYSCOMMAND Nachrichten übersetzt. alle anderen Tastenkombinationen werden in WM_COMMAND Nachrichten übersetzt.

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

Ein Accelerator muss nicht einem Menübefehl entsprechen.

Wenn der Acceleratorbefehl einem Menüelement entspricht, wird die Anwendung WM_INITMENU und WM_INITMENUPOPUP Nachrichten gesendet, als ob der Benutzer versuchen würde, das Menü anzuzeigen. Diese Nachrichten werden jedoch nicht gesendet, wenn eine der folgenden Bedingungen vorliegt:

  • Das Fenster ist deaktiviert.
  • Die Tastenkombination entspricht nicht einem Element im Fenstermenü , und das Fenster wird minimiert.
  • Eine Mauserfassung ist in Kraft. Informationen zur Mauserfassung finden Sie in der SetCapture-Funktion .
Wenn das angegebene Fenster das aktive Fenster ist und kein Fenster über den Tastaturfokus verfügt (was in der Regel der Fall ist, wenn das Fenster minimiert wird), übersetzt TranslateAcceleratorWM_SYSKEYUP und WM_SYSKEYDOWN Nachrichten anstelle von WM_KEYUP und WM_KEYDOWN Nachrichten.

Wenn eine Tastenkombination für die Beschleunigung auftritt, die einem Menüelement entspricht, wenn das Fenster, das das Menü besitzt, minimiert wird, sendet TranslateAccelerator keine WM_COMMAND Nachricht. Wenn jedoch eine Tastenkombination auftritt, die mit keinem der Elemente im Menü des Fensters oder im Fenstermenü übereinstimmt, sendet die Funktion eine WM_COMMAND Nachricht, auch wenn das Fenster minimiert ist.

Beispiele

Ein Beispiel finden Sie unter Erstellen von Beschleunigungsbeschleunigungen für Schriftartattribute.

Hinweis

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 nicht codierungsneutralem Code 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
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (einschließlich Windows.h)
Bibliothek User32.lib
DLL User32.dll

Siehe auch

Konzept

CreateAcceleratorTable

GetMessage

Tastaturkürzel

LoadAccelerators

MSG

PeekMessage

Referenz

SetCapture

TranslateMessage

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN