Default List-View Message Processing
This section lists the window message processing performed by a list-view control.
The following table describes the window message processing performed by a list-view control.
|WM_CHAR||Searches for a list-view item that begins with the specified character and, if the item is found, selects and sets the focus to the item.
Multiple characters received within a time-out interval, currently fixed at one second, are concatenated, and the list-view control searches for an item that begins with the resulting string.
|WM_COMMAND||Processes the EN_UPDATE and EN_KILLFOCUS notification codes and forwards all other edit control notifications to the parent window.|
|WM_CREATE||Performs initialization additional to WM_NCCREATE. If the LVS_SHAREIMAGELISTS window style is not specified, the list-view control creates the icon and small icon image lists at this point.|
|WM_DESTROY||Frees resources allocated during WM_CREATE.|
|WM_ERASEBKGND||Erases the window background using the current background color for the list-view control. If the background color is the CLR_NONE value, the list-view control forwards the message to the parent window.|
|WM_GETDLGCODE||Returns a combination of the DLGC_WANTTAB and DLGC_WANTARROWS values.|
|WM_GETFONT||Returns the handle to the current label font.|
|WM_HSCROLL||Scrolls the list-view control horizontally.|
|WM_KEYDOWN||Processes the SPACEBAR, ENTER, and arrow keys and sends an LVN_KEYDOWN notification code to the parent window.|
|WM_KILLFOCUS||Repaints the focused list item, if any, and sends an NM_KILLFOCUS notification code to the parent window.|
|WM_LBUTTONDBLCLK||Sends the parent window an NM_DBLCLK (list view) notification code.|
|WM_LBUTTONDOWN||Processed in different ways depending on whether a click or drag operation is being initiated. To determine which operation is involved, the list-view control enters a modal message loop until either the button is released or the mouse is moved.
In the case of a click, the list-view control might change which item has the focus and which items are selected, taking into account the cursor position, the state of the SHIFT and CTRL keys, and so on. Then the list-view control sends its parent window an NM_CLICK (list view) notification code.
If dragging begins over an item, the list-view control selects and sets the focus to the item. Then it sends an LVN_BEGINDRAG notification code to the parent window. The parent window is responsible for actually carrying out the drag operation.
If dragging begins over the window background, the list-view control enters another modal message loop, enabling the user to form a rectangle by dragging the mouse. Items within the rectangle are selected.
|WM_NCCREATE||Allocates and initializes an internal data structure and then calls the DefWindowProc function.|
|WM_NCDESTROY||Frees resources allocated by the list-view control. Unless the LVS_SHAREIMAGELISTS style is used, this includes deleting the full-sized and small image lists.|
|WM_NOTIFY||Processes header control notification codes.|
|WM_PAINT||Displays any items in the update region. For callback items, the control first sends an LVN_GETDISPINFO notification code to the owner window to request display information. If the wParam parameter is non-NULL, the control assumes that the value is an HDC and paints using that device context.|
|WM_RBUTTONDOWN||Processed the same way as the WM_LBUTTONDOWN message, except that the control sends an NM_RCLICK (list view) notification code (instead of NM_CLICK (list view)) and an LVN_BEGINRDRAG notification code (instead of LVN_BEGINDRAG). Note that the control processes the corresponding WM_RBUTTONUP message, and does not dispatch it. Applications thus cannot see this message, even by subclassing the control.|
|WM_SETFOCUS||Repaints the focused list item, if any, and sends an NM_SETFOCUS notification code to the parent window.|
|WM_SETFONT||Saves the specified font handle, forwards the message to the header window, if any, and repaints using the new font.|
|WM_SETREDRAW||Turns redrawing on or off.|
|WM_TIMER||Begins editing of an item label. If the user clicks the label of the focused item, the list-view control sets a timer instead of entering edit mode immediately. The timer makes it possible for the list-view control to not enter edit mode if the user double-clicks the label.|
|WM_VSCROLL||Scrolls the list-view control vertically.|
|WM_WINDOWPOSCHANGED||Updates the window scroll bars. If the current view is icon or small icon view, and the LVS_AUTOARRANGE style is specified, the list-view control will also arrange the list items.|
|WM_WININICHANGE||Processes changes to system metrics.|