Accelerator tabellen

Een versneller tabel bestaat uit een array van ACCEL structuren, elk een afzonderlijke accelerator definiëren. Elke ACCEL structuur bevat de volgende informatie:

Voor het verwerken van accelerator toetsaanslagen voor een bepaalde thread, moet de ontwikkelaar de TranslateAccelerator functie aanroepen in de lus van de boodschap van de thread berichtenwachtrij is gekoppeld. De TranslateAccelerator functie controleert de invoer van het toetsenbord naar de berichtenwachtrij, controleren op toetsencombinaties die overeenkomt met een gegeven in de tabel versneller. Wanneer TranslateAccelerator een overeenkomst wordt gevonden, het vertaalt de invoer van het toetsenbord (dat wil zeggen, de WM_KEYUP en WM_KEYDOWN berichten) in een WM_COMMAND of WM_SYSCOMMAND -bericht en verzendt het bericht vervolgens naar de venster-procedure van het opgegeven venster. De volgende afbeelding ziet u hoe versnellers zijn verwerkt.

Het bericht WM_COMMAND bevat de id van de versneller die TranslateAccelerator veroorzaakt voor het genereren van het bericht. Het venster procedure onderzoekt de id om de bron van het bericht te bepalen en het bericht vervolgens dienovereenkomstig verwerkt.

Accelerator tabellen bestaan op twee verschillende niveaus. Het systeem houdt een enkele, systeem-brede accelerator tabel die voor alle toepassingen geldt. Een toepassing kan niet wijzigen de systeemtabel versneller. Zie voor een beschrijving van de geboden door de systeemtabel versneller versnellers, Accelerator toetsaanslag toewijzingen.

Het systeem onderhoudt ook versneller tabellen voor elke toepassing. Een toepassing kan een willekeurig aantal versneller tabellen voor gebruik met zijn eigen windows definieert. Een uniek 32-bitsingang (HACCEL) geeft elke tabel. Echter, kunnen slechts één versneller tabel actieve tegelijk voor een bepaalde thread. De ingang naar de versneller tabel doorgegeven aan de functie TranslateAccelerator bepaalt welke tabel accelerator is actief voor een thread. De versneller van de actieve tabel kan worden gewijzigd op elk moment door een andere accelerator-tabel handvat aan TranslateAccelerator.

Index