LISTVIEW

LISTBOX–>LISTVIEW

1.List-View Views
视图
1.1.Icon view(图标)
LVS_ICON / (LVM_SETVIEW + LV_VIEW_ICON)。

1.2.Small icon view(图标)
LVS_SMALLICON / (LVM_SETVIEW + LV_VIEW_SMALLICON)。

1.1和1.2下图标排列:
LVS_ALIGNTOP / LVS_ALIGNLEFT。
LVS_ALIGNMASK。

1.3.List view(单列)
LVS_LIST / (LVM_SETVIEW + LV_VIEW_LIST)。
1.4.Report (details) view(多列)
LVS_REPORT / (LVM_SETVIEW + LV_VIEW_DETAILS)。
1.5.Tile View(图标+信息)
Version 6 and later
LVM_SETVIEW + LV_VIEW_TILE。

窗口风格取得&改变:
GetWindowLong/SetWindowLong。
LVS_TYPEMASK。

2.List-View Style
LVS_EDITLABELS:条目文本可编辑。父窗口需处理LVN_ENDLABELEDIT。
LVS_ICON:图标视图
LVS_LIST:列表视图
LVS_NOCOLUMNHEADER:report view+列表头不显示。
LVS_NOSORTHEADER:report view + 列表头下,单击列表头,不执行排序。
LVS_OWNERDATA:
LVS_OWNERDRAWFIXED:report view + 自绘制。
为每个要绘制的项,给拥有者发送WM_DRAWITEM。
DRAWITEMSTRUCT包含绘制项信息。每个子项不再发送WM_DRAWITEM。
LVS_REPORT:第一列左对齐。不可用LVCFMT_RIGHT改为右对齐。
LVS_SHAREIMAGELISTS:图像列表在此控件销毁时不会被自动删除。
LVS_SHOWSELALWAYS:选择总是可辨认。
LVS_SINGLESEL:单选。
LVS_SMALLICON:小图标视图。
LVS_SORTASCENDING:升序排列。基于项文本。
LVS_SORTDESCENDING:降序排列。

//LVS_ALIGNLEFT:左对齐+小图标视图
//LVS_ALIGNTOP:顶部对齐+图标或小图标视图
//LVS_AUTOARRANGE:图标自动排列+图标或小图标视图
//LVS_NOLABELWRAP:图标视图+文本单行。
//LVS_NOSCROLL:不可滚动。

3.Extended List-View Styles
取得设置扩展风格信息,不用GetWindowLong/SetWindowLong。
用:LVM_SETEXTENDEDLISTVIEWSTYLE和LVM_GETEXTENDEDLISTVIEWSTYLE。

LVS_EX_AUTOCHECKSELECT:单击时,自动选择复选框。
LVS_EX_CHECKBOXES:项以复选形式呈现。
LVS_EX_FULLROWSELECT:
全行选择。LVS_REPORT下有效。
LVS_EX_GRIDLINES:LVS_REPORT下有效。网格。
LVS_EX_TRANSPARENTBKGND:背景由父窗口通过WM_PAINTCLIENT绘制。

//LVS_EX_AUTOSIZECOLUMNS:列自动调整大小。
//LVS_EX_BORDERSELECT:项被选择时,项边框色改变(默认为项被加亮)
//LVS_EX_COLUMNOVERFLOW:
在LVS_EX_HEADERINALLVIEWS 下有效。
//LVN_COLUMNOVERFLOWCLICK
//LVS_EX_HEADERDRAGDROP:
//LVS_EX_HEADERINALLVIEWS:

//LVS_EX_INFOTIP:LVN_GETINFOTIP在显示一个条提示前被发到父窗口。
//LVS_EX_ONECLICKACTIVATE:用户单击项时给父窗口发LVN_ITEMACTIVATE。
//LVS_EX_SUBITEMIMAGES:
//LVS_EX_TWOCLICKACTIVATE:
双击下,发送LVN_ITEMACTIVATE给父窗口。

Comctl32.dll version 6使用前提:在应用清单指定。

4.Virtual List-View Style
LVS_OWNERDATA风格的列表。
此风格可以使控件能处理数百万条目,因为控件拥有者负责管理条目数据。
其它需要条目信息的处理,用LVN_GETDISPINFO来获取数据。

5.List-View Working Areas
默认无工作区。
创建工作区+LVM_SETITEMPOSITION/LVM_SETITEMPOSITION32(把指定项移入指定工作区)

工作区重叠时,重叠部分的条目,归属于索引较低的工作区。
获取工作区数量:LVM_GETNUMBEROFWORKAREAS。
设置&取得:LVM_SETWORKAREAS / LVM_GETWORKAREAS。
工作区最大个数:LV_MAX_WORKAREAS。

6.List-View Image Lists
默认下,list-view control 不显示条目图像。
要显示条目图像:创建图像列表+将其于控件关联。
一个list-view control可以有三个图像列表:
6.1.图像列表,包含完整尺寸的图标,在icon view下显示。
6.2.图像列表,包含小图标,在small icon view, list view, or report view下显示。
6.3.图像列表,包含状态图像。被显示在完整图标或小图标的左边。icon view, small icon view, list view, and report view下都显示。

full-sized and small icon image lists 可包含可覆盖图像。
使用:
1.用ImageList_SetOverlayImage分配一个overlay image索引给完整和小图标图像列表里的一个图像。
2.ListView_InsertItem / ListView_SetItem,关联一个overlay image索引到一个条目。
用INDEXTOOVERLAYMASK宏来指定一个overlay image索引,在条目的LVITEM的state成员。

要关联状态图像到一个条目,用INDEXTOSTATEIMAGEMASK宏指定一个状态图像索引,在LVITEM结构的state成员里。
状态图像索引,0表示无状态图像。

7.List-View Items and Subitems
每个项,在list-view控件中的,有一个图标,标签,当前状态,应用定义值。
每个项,可以有一个或多个子项。
一个子项,在report view中,是一个字符串,被显示在独立于项图标和标签的列。
要指定子项文本,用LVM_SETITEMTEXT / LVM_SETITEM。

子项个数由列数决定。
LVITEM定义了list-view的一个项或子项。
iltem:项索引。
iSubItem:0,结构包含项信息。> 0,结构包含子项信息。

添加项:
LVM_INSERTITEM + LVITEM。
在添加多项前, 可以给控件发送LVM_SETITEMCOUNT,来通知控件最终包含的项个数。使控件重新分配它的内部数据结构,而不必每次添加项时,再分配。
取得项个数:LVM_GETITEMCOUNT。
重绘开关:WM_SETREDRAW。

该表list-view项属性:LVM_SETITEM + LVITEM。
取得list-view项信息:LVM_GETITEM + LVITEM。
删除list-view项:LVM_DELETEITEM。
删除所有:LVM_DELETEALLITEMS。

8.List-View Item States
项的状态是一个值,可指定项的可获得性,指明用户行为,或其它反映项状态的方面。

项状态,由LVITEM的state指定。
设置项状态:LVM_SETITEMSTATE / LVM_SETITEM。
取得项状态:LVM_GETITEMSTATE / LVM_GETITEM。

设置项的overlay 图像,
1.LVITEM的stateMask须包含LVIS_OVERLAYMASK。
2.state成员须包含基于1的移位左8位后的叠加图像索引,通过INDEXTOOVERLAYMASK。
索引0,指定无重叠图像。

设置项的状态图像:
1.LVITEM的stateMask须包含LVIS_STATEIMAGEMASK。
2.state成员须包含基于1的左移12位后的状态图像索引,通过INDEXTOSTATEIMAGEMASK。
索引0,指定无状态图像。

9.Callback Items and the Callback Mask
list-view控件,对它的每一项,典型地存储标签文本,条目图标在图像列表的索引和表示项状态的位集合。
你可定义回调项或改变控件的callback mask,来指定让应用存储部分或全部的这些信息。

定义:
LVM_INSERTITEM。
此时
LVITEM的pszText被设置为LPSTR_TEXTCALLBACK。
LVITEM的ilmage被设置为I_IMAGECALLBACK。

list-view控件的callback mask是标志位集合,指定应用而非控件存储当前项状态数据。
设置:LVM_SETCALLBACKMASK。
取得:LVM_GETCALLBACKMASK。

当list-view控件,须显示或排序一个信息被应用存储的list-view项时,控件给父窗口发
LVN_GETDISPINFO通知码。NMLVDISPINFO。
如果list-view控件,检测到项的callback信息的改变,控件发送LVN_SETDISPINFO。
改变回调项属性或状态位后,使用LVM_UPDATE来强制控件重绘项。
LVM_REDARWITEMS:让控件客户区部分无效来触发重绘。

10.List-View Item Position

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raindayinrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值