WM_CHAR

This message results when a WM_KEYUP and a WM_KEYDOWN message are translated. It contains the value of the keyboard key being pressed or released.

Parameter Description  

wParam Contains the value of the key.  
lParam Contains the repeat count, scan code, key-transition code, previous key state, and context code, as shown in the following list:  
  Bit Value
  0–15 (low-order word) Repeat count (the number of times the key stroke is repeated as a result of the user holding down the key).
  16–23 (low byte of high-order word) Scan code (OEM-dependent value).
  24 Extended key, such as a function key or a key on the numeric keypad (1 if it is an extended key).
  25–26 Not used.
  27–28 Used internally by Windows.
  29 Context code (1 if the ALT key is held down while the key is pressed, 0 otherwise).
  30 Previous key state (1 if the key is down before the message is sent, 0 if the key is up).
  31 Transition state (1 if the key is being released, 0 if the key is being pressed).

Comments

Since there is not necessarily a one-to-one correspondence between keys pressed and character messages generated, the information in the high-order word of the lParam parameter is generally not useful to applications. The information in the high-order word applies only to the most recent WM_KEYUP or WM_KEYDOWN message that precedes the posting of the character message.

For IBMÒ Enhanced 101- and 102-key keyboards, enhanced keys are the right ALT and the right CONTROL keys on the main section of the keyboard; the INSERT, DELETE, HOME, END, PAGE UP, PAGE DOWN and DIRECTION keys in the clusters to the left of the numeric key pad; and the divide (/) and ENTER keys in the numeric key pad. Some other keyboards may support the extended-key bit in the lParam parameter.