默认列表查看消息处理

【勇芳软件工作室】汉化HomePreviousNext

本节介绍列表视图控件执行的窗口消息处理。特定于列表视图控件的消息在其他地方讨论,因此在这里不包括。

信息进行处理
WM_CHAR搜索以指定字符开头的列表视图项目,如果找到该项目,则选择并将焦点设置为该项目。

在超时间隔内收到的多个字符被连接起来,列表视图控件搜索以结果字符串开始的项目。

WM_COMMAND处理EN_UPDATEEN_KILLFOCUS通知消息,并将所有其他编辑控制通知转发到父窗口。
WM_CREATE执行其他初始化。如果未指定LVS_SHAREIMAGELISTS窗口样式,则此时列表视图控件将创建图标和小图标图像列表。
WM_DESTROY释放资源。
WM_ERASEBKGND使用列表视图控件的当前背景颜色擦除窗口背景。如果背景颜色是CLR_NONE值,则列表视图控件会将消息转发到父窗口。
WM_GETDLGCODE返回DLGC_WANTTAB和DLGC_WANTARROWS值的组合。
WM_GETFONT返回当前标签字体的句柄。
WM_HSCROLL水平滚动列表视图控件。
WM_KEYDOWN处理SPACEBAR,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中】参数不为空,则控件假定该值为HDC,并使用该设备上下文进行绘制。
WM_RBUTTONDOWN以与WM_LBUTTONDOWN消息相同的方式处理,除了控件发送NM_RCLICK通知消息(而不是NM_CLICK)和LVN_BEGINRDRAG通知消息(而不是LVN_BEGINDRAG)。
WM_SETFOCUS重新调整关注的列表项(如果有),并向父窗口发送NM_SETFOCUS通知消息。
WM_SETFONT保存指定的字体句柄,将消息转发到标题窗口(如果有),并使用新字体进行重绘。
WM_SETREDRAW打开或关闭重画。
WM_TIMER开始编辑项目标签。如果用户单击关注项目的标签,则列表视图控件将立即设置定时器,而不是立即进入编辑模式。如果用户双击标签,定时器可使列表视图控件【不】进入编辑模式。
WM_VSCROLL垂直滚动列表视图控件。
WM_WINDOWPOSCHANGED更新窗口滚动条。如果当前视图是图标或小图标视图,并且指定了LVS_AUTOARRANGE样式,则列表视图控件也会排列列表项。
WM_WININICHANGE处理系统指标的更改。