When a user clicks on a list box with the mouse, the list box receives the input focus. A parent window can give the input focus to a list box control by using:
SetFocus (hwndList) ;
When a list box has the input focus, the cursor movement keys, letter keys, and Spacebar can also be used to select items from the list box.
A list box control sends WM_COMMAND messages to its parent. The meanings of the wParam and lParam variables are the same as for the button and edit controls:
wParam | Child window ID |
LOWORD (lParam) | Child window handle |
HIWORD (lParam) | Notification code |
The notification codes and their values are as follows:
LBN_ERRSPACE | -2 |
LBN_SELCHANGE | 1 |
LBN_DBLCLK | 2 |
LBN_SELCANCEL | 3 |
LBN_SETFOCUS | 4 |
LBN_KILLFOCUS | 5 |
The list box control sends the parent window LBN_SELCHANGE and LBN_DBLCLK codes only if the list box window style includes LBS_NOTIFY.
The LBN_ERRSPACE code indicates that the list box control has run out of space. The LBN_SELCHANGE code indicates that the current selection has changed; these messages occur as the user moves the highlight through the list box, toggles the selection state with the Spacebar, or clicks an item with the mouse. The LBN_DBLCLK code indicates that a list box item has been double-clicked with the mouse. (The notification code values for LBN_SELCHANGE and LBN_DBLCLK refer to the number of mouse clicks.)
Depending on your application, you may want to use either LBN_SELCHANGE or LBN_DBLCLK messages or both. Your program will get many LBN_SELCHANGE messages, but LBN_DBLCLK messages occur only when the user double-clicks with the mouse. If your program uses double-clicks, you'll need to provide a keyboard interface that duplicates LBN_DBLCLK.