TranslateAcceleratorW-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 TranslateAcceleratorW(
[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 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 |