我有一个所有者绘制的虚拟列表视图。我将视图设置为 LargeIcon,我将 LargeImageList 设置为适当的图像列表,但是当我调用 LVM_SETICONSPACING 时,它不起作用!也就是说 - 无论我输入什么值,它都没有效果。
我用:
Const LVM_FIRST As Long = &H1000
Const LVM_SETICONSPACING As Long = LVM_FIRST + 53
WinAPI.SendMessage(ListView.Handle, LVM_SETICONSPACING, 0, cy * 65536 + (cx And 65535))
我也试过:
WinAPI.SendMessage(ListView.Handle, LVM_SETICONSPACING, 0, cy * 65536 + cx)
WinAPI.SendMessage(ListView.Handle, LVM_SETICONSPACING, 0, cx * 65536 + cy)
无论我使用什么 cx 和 cy 值,所有人都绝对什么都不做。我尝试了从 10 到 400 的小到大 - 没有区别。
之后我尝试刷新列表 - 没有区别。item.bounds 保持不变,图标行之间的间距为 30px。我如何摆脱这种间距?我还为 SendMessage 尝试了 Ints 和 IntPtr-s 的变体。
也许问题是我使用的是 Windows 8 64 位(尽管程序是 32 位)?还是在虚拟模式下,listview 会忽略此消息?
我什至通过在 WndProc 覆盖中捕获消息来检查消息是否已发送。
取2:
我什至尝试过使用 IntPtr,因为有些人建议没有运气。我还尝试了 5 的垂直和水平间距的所有可能值:&H50005000、&H00050005,以及 &H5000000050000000、&H0000000500000005。没有区别,就好像完全被忽略了一样。也许 LVM_SETICONSPACING 有不同的价值?
欢迎大家提出意见。
谢谢你。