Accelerator Tables
An
accelerator table consists of an array of
ACCEL structures, each defining an individual accelerator. Each
ACCEL structure includes the following information:
- The accelerator's keystroke combination.
- The accelerator's identifier.
- Various flags. This includes one that specifies whether Windows is to provide
visual feedback by highlighting the corresponding menu item, if any, when the
accelerator is used
To process accelerator keystrokes for a given thread, the developer must call
the
TranslateAccelerator function in the message loop associated with the thread's message queue. The
TranslateAccelerator function monitors keyboard input to the message queue, checking for key
combinations that match an entry in the accelerator table. When
TranslateAccelerator finds a match, it translates the keyboard input (that is, the
WM_KEYUP and
WM_KEYDOWN messages) into a
WM_COMMAND or
WM_SYSCOMMAND message and then sends the message to the window procedure of the specified
window. The following illustration shows how accelerators are processed.
The WM_COMMAND message includes the identifier of the accelerator that caused
TranslateAccelerator to generate the message. The window procedure examines the identifier to
determine the source of the message and then processes the message accordingly.
Accelerator tables exist at two different levels in Windows. Windows maintains
a single, system-wide accelerator table that applies to all applications. An
application cannot modify the system accelerator table. For a description of the
accelerators provided by the system accelerator table, see
Accelerator Keystroke Assignments.
Windows also maintains accelerator tables for each application. An application
can define any number of accelerator tables for use with its own windows. A
unique 32-bit handle (
HACCEL) identifies each table. However, only one accelerator table can be active at
a time for a given thread. The handle of the accelerator table passed to the
TranslateAccelerator function determines which accelerator table is active for a thread. The
active accelerator table can be changed at any time by passing a different
accelerator-table handle to
TranslateAccelerator.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database