在详细信息视图中的Windows 7的Windows资源管理器列表视图(what allegedly is not list view at all)中,您可以在第一个(名称)列中启动选择选取框。你只需要从实际名称之外开始。
“详细信息”视图中的默认样式列表视图控件也是如此。
但是如果你将列表视图控件设置为资源管理器样式(使用SetWindowTheme
),那么应该模仿Windows资源管理器,这不再起作用了。您只能在第二列和后面的列中开始选择。
SetWindowTheme(listView1.Handle, "explorer", null);
有没有办法让列表视图模仿资源管理器的选择样式?
我认为没有设置来启用此类行为,这必须进行编码。喜欢处理鼠标并触发选择。但我不知道该怎么做。
感谢。
Ntb,我正在使用C ++ Builder,但这应该是纯粹的Win32问题。我也用WinForms进行了测试(因此上面的C#示例)。
答案 0 :(得分:11)
有没有办法让列表视图模仿资源管理器的选择风格?
不,SysListView32
主题中的explorer
行为不正常。现代资源管理器使用的控件实际上是DirectUIHwnd
。而你无法使用其中之一。
获取DirectUIHwnd
行为的唯一方法是自己编写代码。我希望这可以做到,但我也希望它很难实现。
答案 1 :(得分:8)
实际上有一种模仿资源管理器选择行为的方法。它需要大量额外的声明性工作,但这是可能的。
您需要通过未记录的IListView
消息获取未记录的LVM_QUERYINTERFACE
接口(请注意,对于Windows Vista和Windows 7+,接口声明和GUID是不同的)。有关常量和声明的详细信息,请访问:
获取界面后,只需调用SetSelectionFlags(1, 1)
方法即可。瞧,你已经完成了。