About List-View Controls

list-view是一个窗口 显示 一个结合的项目。

list-view提供许多方法来 安排 和 显示项目 并且 很自由 比起List Boxes.

举例: 附加信息可以 被 显示在 icon和 label的右列。

List-View Styles and Views

list-view可以用5种方法显示数据。

Icon View          设置window_style为LVS_ICON 或者 传送LV_VIEW_ICON通过LVM_SETVIEW消息。每个item是全大小展示。能够自由拖拽。 

Small icon view        ...LVS_SMALLICON ....LVM_SETVIEW。    每个item以1个小icon带label形式出现。 能够自由拖拽。

List View           ...LVS_LIST...LV_VIEW_LIST。 以列的形式排列, 用户不能够拖拽。

Report view(details view)   ...LVS_REPORT..LV_VIEW_DETAILS.    每个item占1行. 包含小icon, label.每列有一个header, 可以通过LVS_NOCOLUMHEADER定义。

Tile View           ...

图..略..............

1. create完用setwindowslong修改。 展示类型

2. 可以控制icon小icon通过详细设置 LVS_ALIGNTOP 或 LVS_ALIGNLEFT.

3. 更改对齐, 在create之后, 用LVS_ALIGNMASK开始。

4. 附加属性: 是否可编辑label, 是否可以多选. 通过List-View Window Styles。

Extended List-View Styles

扩展类型。

选择框,平滑scroll.等

不能通过普通的GetWindowLong, SetWindowLong来设置。

要通过

LVM_SETEXTENDEDLISTVIEWSTYLE, 

LVM_GETEXTENDEDLISTVIEWSTYLE,  

ListView_SetExtendedListViewStyle

ListView_SetExtendedListViewStyleEx, and 

ListView_GetExtendedListViewStyle.  这些宏来设置

Virtual List-View Style

一个抽象列表视图是 LVS_OWNERDATA类型。 他可以控制处理 千万级items. 

因为这种类型是要用来 处理 大数据集的, 因此建议缓存被请求的item, 通过一个LVN_ODCACHEHINT通知代码。

Creating a Virtual List-View Control

createWindow然后 设置类型为LVS_OWNERDATA.并且可以和其他类型合并使用。

类型除了LVS_SORTASCENDIGN和LVS_SORDESCENDING。所有都是LVS_AUTOARRANGE

消息除了LVM_ENABLEGROUPVIEW, LVM_GETITEMTEXT, LVM_SETTILEINFO, LVM_MAPIDTOINDEX.

Compatibility Issues

所有4种-icon, small icon, list, detail view - 都支持LVS_OWNERDATA类型。 

不存储任何详细信息,所以...?没看懂。

不支持的一些操作。

LVM_ARRANGE    不支持LVA_SNAPTOGRID类型。

Handling Virtual List-View Control Notification Codes

virtual list-view 特有的一些信息。

LVN_GETDISPINFO     virtual list-view只保有很少的item, 所以它通常会发送LVN_GETDISPINFO消息去请求item数据。 首先会请求item从cache, 如果没有, 用户必须准备数据。

LVN_ODCACHEHINT   发送该消息 建立需要缓存的item. 已备LVN_GETDISPINFO请求数据时候, 可以申请到。

LVN_ODFINDITEM      ?没看懂

Cache Management

list-view会发送大量LVN_GETDISPINFO消息请求数据, 所以需要用LVN_ODACACHEHINT来指定需要缓存的信息。

这个消息以WM_NOTIFY方式通知, lParam指向一个 NMLVCACHEHINT  结构地址。  怎么用?

list-control总是需要item0, 所以cache里必须总有item 0;

List-View Working Areas

可以分工作区 显示 list-view  

工作区相关消息:

LVM_GETNUMBEROFWORKAREAS  数量

LVM_SETWORKAREAS   设置区域大小  lParam = array of RECT,  

LVM_GETWORKAREAS   获取区域大小

LV_MAX_WORKAREAS   最大数量

无效情况:

LVS_LIST   或  LVS_REPORT

....略

List-View Image Lists

默认的,不显示item图片, 想要显示, 必须设置image-list

Compatibility Issues

并且使他们和控件关联. 1个list-view可以有3个图片列表:

o   full-sized icons

o   small icon   list-view or report view

o   state images,  use state images such as checked and cleared check boxes.

使用overlay images

1. ImageList_SetOverlayImage功能

2. 关联图片与item, 当你call ListView_InserItem 或 ListView_SetItem宏。

  使用INDEXTOOVERLAYMASK设置LVITEM结构。

  LVIS_OVERLAYMASK设置为stateMask.

List-View Item States

ListView_SetItemState(hList, 1, LVIS_SELECTED |LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );

修改哪位, 掩哪位。

Arranging, Sorting, and Finding Items

posted on 2011-03-17 22:48  oleeceo  阅读(1197)  评论(0)    收藏  举报

导航