关于列表控件的定位属性
疑惑的存在,代表着你还未能彻底明白
有时候,我会收到一个关于列表控件ListView的问题,这个问题体现了大家对可定位和不可定位列表缺乏深刻的理解。
这个问题通常是这样的:”我通过LVM_INSERTITEM将一行插入到列表控件中,但是这个项目直接显示在了列表控件的最底下,而不是我希望的位置。”
为了弄明白这是怎么回事儿,你需要首先明白一个概念,即:列表控件可以分为两种类型,一种是所谓的可定位的,另一种是不可定位的。
可定位的列表控件有如下几种:
大图标视图(Large Icon View)
小图标视图(Small Icon View)
标题视图(Title View)
在这些控件中,每个项目都会包含它自己的坐标信息,你也可以使用LVM_SETITEMPOSITION这个消息来设置它的显示位置。当一个新的行被插入到控件中时,它会获得基于插入位置的一个行索引,但它在屏幕上的物理位置是第一个未被其他项目占用的可用空间。
现有的条目不会为新插入的条目挪动空间。
而下列视图则是不可定位的:
列表视图(List View)
报表视图(Report View)
在这些控件中,在这些视图中,条目不能选择它们的显示位置。它们的显示位置由它们的索引来决定。根据这个原理,在不可定位视图中,插入或删除一个条目确实会导致所有后续条目发生偏移。
我想,现在你可以回答这个问题了。为什么条目会追加到列表控件的末尾而不是调用者想要的位置呢?
总结
小知识点GET了真好,大家以后使用列表控件时,是不是疑惑少了一些?
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Positioned vs. non-positioned listview views》
最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。
- 下一篇: 为XBox开发者提供的ASan早期发布版本
- 上一篇: 添加删除程序是怎么知道软件的大小的?
相关推荐
- 第 418 期:惠普 CES 2026 新品阵容一览
- Posted on 01月04日
- 实战经验:采用MFC的CArchive将对象序列化到CMemFile中
- Posted on 02月24日
- VS2020: 关闭”Show Intellisense Errors”
- Posted on 07月19日
- 为什么在域环境下不能进行快速用户切换?
- Posted on 07月29日



评论已关闭。