所有者が描いた仮想リストビューがあります。ビューを 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 は変更されず、アイコンの行間の高さは 30 ピクセルです。その間隔をなくすにはどうすればよいですか?SendMessage の Ints と IntPtr-s を使用したバリアントも試しました。
おそらく問題は、Windows 8 64ビットを使用していることです(プログラムは32ビットですが)?または、仮想モードでは、リストビューがこのメッセージを無視するという事実は?
WndProc オーバーライドでメッセージをトラップして、メッセージが送信されることも確認しました。
テイク 2:
運がないことを示唆している人もいるので、IntPtrを試してみました。また、5 の縦と横の両方の間隔について、可能なすべての値を試しました。違いはありません。まるで完全に無視されているかのようです。LVM_SETICONSPACING の値が異なるのではないでしょうか?
どんな提案でも大歓迎です。
ありがとうございました。