The WM_CHARTOITEM message is sent by a list box with the LBS_WANTKEYBOARDINPUT style to its owner in response to a WM_CHAR message.
WM_CHARTOITEM nKey = LOWORD(wParam); // key value nCaretPos = HIWORD(wParam); // caret position hwndListBox = (HWND) lParam; // handle of list box
The return value specifies the action that the application performed in response to the message. A return value of -1 or -2 indicates that the application handled all aspects of selecting the item and requires no further action by the list box. A return value of 0 or greater specifies the zero-based index of an item in the list box and indicates that the list box should perform the default action for the keystroke on the given item.
The DefWindowProc function returns -1.
Only owner-drawn list boxes that do not have the LBS_HASSTRINGS style can receive this message.