Zugriffstastentabellen

Eine Zugriffstastentabelle besteht aus einem Array von ACCEL -Strukturen, jede einzelne Zugriffstaste definieren. Jede ACCEL -Struktur enthält die folgenden Informationen:

Um Accelerator-Tastatureingaben für einen bestimmten Thread zu verarbeiten, muss der Entwickler in der Nachrichtenschleife zugeordnete Nachrichtenwarteschlange des Threads die TranslateAccelerator -Funktion aufrufen. Die TranslateAccelerator -Funktion überwacht Tastatureingaben an die Nachrichtenwarteschlange, Überprüfung auf Tastenkombinationen, die mit einem Eintrag in der Zugriffstastentabelle übereinstimmen. Wenn TranslateAccelerator eine Übereinstimmung findet, es übersetzt die Tastatureingabe (d. h. die WM_KEYUP und WM_KEYDOWN Nachrichten) in eine WM_COMMAND oder WM_SYSCOMMAND -Meldung und sendet die Nachricht an die Fensterprozedur des angegebenen Fensters. Die folgende Abbildung zeigt wie Beschleuniger verarbeitet werden.

Die WM_COMMAND-Nachricht enthält den Bezeichner der dem Beschleuniger, die TranslateAccelerator generiert die Meldung verursacht hat. Die Fensterprozedur untersucht den Bezeichner, der die Quelle der Nachricht zu bestimmen und dann verarbeitet die Nachricht entsprechend.

Zugriffstastentabellen vorhanden auf zwei verschiedenen Ebenen. Das System verwaltet eine einzelne, systemweite Accelerator-Tabelle, die für alle Anwendungen gilt. Eine Anwendung kann die Zugriffstastentabelle System nicht ändern. Eine Beschreibung der Beschleuniger zur Verfügung gestellt von der Zugriffstastentabelle System siehe Accelerator Tastenanschlag Zuordnungen.

Das System verwaltet auch Zugriffstastentabellen für jede Anwendung. Eine Anwendung kann eine beliebige Anzahl von Zugriffstastentabellen für die Verwendung mit eigene Fenster definieren. Jede Tabelle identifiziert ein eindeutige 32-Bit-Handle (HACCEL). Nur eine Zugriffstastentabelle kann jedoch für einen bestimmten Thread gleichzeitig aktiv sein. Das Handle für die Zugriffstastentabelle der TranslateAccelerator -Funktion übergeben bestimmt die Zugriffstastentabelle für ein Thread aktiv ist. Die aktive Zugriffstastentabelle kann jederzeit geändert werden, indem einen anderes Zugriffstastentabelle Handle an TranslateAccelerator.

Index