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 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
Referenz-