0

Comtl32.dll v6.0中的ListView做多选(使用Shift键时)如下(x表示选中)

00xxxx
xxxxxx
xxxx00

ListView 的早期版本如下:

00xx00
00xx00
00xx00

有没有办法让它做第一种方式(comctl32 v6.0方式)?

谢谢约翰

4

1 回答 1

2

最简洁的答案是不。但因为这似乎不完整......

ListView不公开允许您更改其选择行为的 API,正如 Hans 在他的评论中暗示的那样,更改 6.0 之前版本的 comctl32.dll 版本中的控件行为的唯一方法是ListView使用 time机器。控件中内置了许多ListView与选择事件有关的独特行为,因此即使您尝试让所有者绘制控件来修改选择行为的外观,您也会突然面临不得不处理几乎荒谬的数量可能导致选择更改的窗口消息。

还值得指出的是,这个问题在完全不同的层面上被误导了。如果您的应用程序用户运行的 Windows 版本包含 6.0 版之前的 comctl32.dll 版本,则这是他们期望ListView不受控制的行为。覆盖和更改它只会让他们感到困惑,因为它的工作方式与ListView他们计算机上的所有其他控件不同。相比之下,如果您的应用程序的用户正在运行包含 comctl32.dll v6 或更高版本的 Windows 版本,则默认情况下该控件ListView将按照您的描述执行。(而且您不应该因为完全相同的原因而想要更改它。)

于 2010-12-08T06:18:14.793 回答