默认 List-View 消息处理
本部分列出列表视图控件执行的窗口消息处理。
消息处理
下表描述了列表视图控件执行的窗口消息处理。
消息 | 已执行的处理 |
---|---|
WM_CHAR | 搜索以指定字符开头的列表视图项,如果找到该项,则选择并将焦点设置为该项。 在一个超时间隔内接收的多个字符(当前固定在一秒钟)是串联的,列表视图控件搜索以生成的字符串开头的项。 |
WM_COMMAND | 处理 EN_UPDATE 和 EN_KILLFOCUS 通知代码,并将所有其他编辑控件通知转发到父窗口。 |
WM_CREATE | 执行 WM_NCCREATE的初始化。 如果未指定 LVS_SHAREIMAGELISTS 窗口样式,则列表视图控件此时会创建图标和小图标图像列表。 |
WM_DESTROY | 释放在 WM_CREATE期间分配的资源。 |
WM_ERASEBKGND | 使用列表视图控件的当前背景色擦除窗口背景。 如果背景色是CLR_NONE值,列表视图控件会将消息转发到父窗口。 |
WM_GETDLGCODE | 返回DLGC_WANTTAB和DLGC_WANTARROWS值的组合。 |
WM_GETFONT | 返回当前标签字体的句柄。 |
WM_HSCROLL | 水平滚动列表视图控件。 |
WM_KEYDOWN | 处理空格键、ENTER 键和箭头键,并将 LVN_KEYDOWN 通知代码发送到父窗口。 |
WM_KILLFOCUS | 重新编写焦点列表项(如果有)并将 NM_KILLFOCUS 通知代码发送到父窗口。 |
WM_LBUTTONDBLCLK | 向父窗口发送 NM_DBLCLK(列表视图) 通知代码。 |
WM_LBUTTONDOWN | 根据是启动单击还是拖动作,以不同的方式进行处理。 若要确定涉及的作,列表视图控件将进入模式消息循环,直到释放按钮或移动鼠标。 在单击的情况下,列表视图控件可能会更改哪些项具有焦点,以及哪些项处于选中状态,同时考虑光标位置、SHIFT 和 Ctrl 键的状态等。 然后,列表视图控件会向其父窗口发送 NM_CLICK(列表视图) 通知代码。 如果拖动从项目开始,列表视图控件将选择并将焦点设置为该项。 然后将 LVN_BEGINDRAG 通知代码发送到父窗口。 父窗口负责实际执行拖动作。 如果拖动从窗口背景开始,列表视图控件将进入另一个模式消息循环,使用户能够通过拖动鼠标来形成矩形。 选择矩形中的项。 |
WM_NCCREATE | 分配并初始化内部数据结构,然后调用 DefWindowProc 函数。 |
WM_NCDESTROY | 释放列表视图控件分配的资源。 除非使用了 LVS_SHAREIMAGELISTS 样式,否则这包括删除全大小和小型图像列表。 |
WM_NOTIFY | 处理标头控制通知代码。 |
WM_PAINT | 显示更新区域中的任何项。 对于回调项,控件首先将 LVN_GETDISPINFO 通知代码发送到所有者窗口以请求显示信息。 如果 wParam 参数为非 NULL,则该控件假定该值为 HDC,并使用该设备上下文进行绘制。 |
WM_RBUTTONDOWN | 处理的方式与 WM_LBUTTONDOWN 消息相同,但控件发送 NM_RCLICK(列表视图) 通知代码(而不是 NM_CLICK(列表视图))和 LVN_BEGINRDRAG 通知代码(而不是 LVN_BEGINDRAG)。 请注意,控件处理相应的 WM_RBUTTONUP 消息,并且不会调度它。 因此,即使通过子类化控件,应用程序也看不到此消息。 |
WM_SETFOCUS | 重新编写焦点列表项(如果有)并将 NM_SETFOCUS 通知代码发送到父窗口。 |
WM_SETFONT | 保存指定的字体句柄,将邮件转发到标题窗口(如果有)并使用新字体重新修补。 |
WM_SETREDRAW | 打开或关闭重新绘制。 |
WM_TIMER | 开始编辑项标签。 如果用户单击焦点项的标签,列表视图控件会设置计时器,而不是立即进入编辑模式。 当用户双击标签时,计时器使列表视图控件能够 不 进入编辑模式。 |
WM_VSCROLL | 垂直滚动列表视图控件。 |
WM_WINDOWPOSCHANGED | 更新窗口滚动条。 如果当前视图是图标或小图标视图,并且指定了 LVS_AUTOARRANGE 样式,则列表视图控件还将排列列表项。 |
WM_WININICHANGE | 处理对系统指标的更改。 |