Comtl32.dll v6.0中的ListView进行多项选择(使用Shift键时),如下所示(x表示已选中)
00xxxx
xxxxxx
xxxx00
早期版本的ListView按如下方式执行:
00xx00
00xx00
00xx00
有没有办法让它做第一种方式(comctl32 v6.0方式)?
感谢约翰
答案 0 :(得分:2)
简短的回答是否定的。但是因为那似乎不完整......
ListView
不公开允许您更改其选择行为的API,并且正如Hans在其评论中倾斜地提出的那样,这是改变ListView
控件中行为的唯一方法。版本6.0之前的comctl32.dll版本带有时间机器。 ListView
控件中有很多关于选择事件的独特行为,所以即使您尝试并且所有者绘制控件以修改选择行为的外观,您也会突然面临必须处理可能导致选择更改的几乎荒谬的窗口消息。
值得指出的是,这个问题在完全不同的层面上被误导了。如果应用程序的用户运行的是包含版本6.0之前的comctl32.dll版本的Windows版本,那么这是他们期望出于ListView
控件的行为。覆盖和更改这些只会让他们感到困惑,因为它不会像在计算机上找到的其他ListView
控件一样工作。相反,如果您的应用程序的用户正在运行包含comctl32.dll v6或更高版本的Windows版本,则ListView
控件将已经执行,默认情况下您的描述。 (并且你不应该因为完全相同的原因而想要改变它。)