The window procedure of the window that has the keyboard focus receives keystroke messages when the user types at the keyboard. The keystroke messages are WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, and WM_SYSKEYUP. A typical window procedure ignores all keystroke messages except WM_KEYDOWN. Windows posts the WM_KEYDOWN message when the user presses a key.
When the window procedure receives the WM_KEYDOWN message, it should examine the virtual-key code that accompanies the message to determine how to process the keystroke. The virtual-key code is in the message's wParam parameter. Typically, an application processes only keystrokes generated by noncharacter keys, including the function keys, the cursor movement keys, and the special-purpose keys such as INS, DEL, HOME and END.
The following example shows the window procedure framework that a typical application uses to receive and process keystroke messages.
case WM_KEYDOWN:
switch (wParam) {
case VK_LEFT:
.
. /* Process the LEFT ARROW key. */
.
break;
case VK_RIGHT:
.
. /* Process the RIGHT ARROW key. */
.
break;
case VK_UP:
.
. /* Process the UP ARROW key. */
.
break;
case VK_DOWN:
.
. /* Process the DOWN ARROW key. */
.
break;
case VK_HOME:
.
. /* Process the HOME key. */
.
break;
case VK_END:
.
. /* Process the END key. */
.
break;
case VK_INSERT:
.
. /* Process the INS key. */
.
break;
case VK_DELETE:
.
. /* Process the DEL key. */
.
break;
case VK_F2:
.
. /* Process the F2 key. */
.
break;
.
. /* Process other noncharacter keystrokes. */
.
default:
break;
}