发送消息给系统API问题(listview )

B02512 2009-12-31 05:28:40
现在做一个系统是winform的,其中用到了listview做列表显示,listview存在缺陷
1>利用他现在有的功能,listview的列和行的间距不能够调整大小,除非你修改他的ImageList的大小,那么图标的大小就会变化
这个可以用windows系统API函数解决,在Form 的Load事件里面加入:
private int LVM_SETICONSPACING = 0x1035;
[DllImport("user32.dll", CharSet = CharSet.Auto)]//set the width and height for the listview
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
Win32API.SendMessage(this.myPoplistview.Handle, LVM_SETICONSPACING, 0, 0x10000 * 85 + 87);

85和87分别是行间距和列间距
2>现在的问题是第一行与顶部的距离不能够改变,第一列与左边的距离不能能够改变,因为我不知道这个系统的API是什么,请问有哪位仁兄知道怎么调整listview与顶部和左部的间距吗?谢谢
...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
B02512 2010-01-04
  • 打赏
  • 举报
回复
谢谢各位的帮助,但是我现在还是没有找到怎么修改第一行和第一列距离边框的方法,To dqw120:我用的sendmessage是没有错误的,也许是你说的我传的参数错误了,但是我找不到应该传递什么样子的参数,还有SPY++我得抽时间去看看他的实现的原理才知道行不行,
To wuyq11:你给我的链接是修改行距和列距,现在这个功能我已经实现了,我需要的是修改第一行距离顶部的距离,和第一列距离左边框的距离
To tan124:我确实用的sendmessage(),可以修改行距和列距。但是不可以修改第一行和第一列这个是我现在的问题
tan124 2009-12-31
  • 打赏
  • 举报
回复
sendmessage
wuyq11 2009-12-31
  • 打赏
  • 举报
回复
SendMessage将指定的消息发送到一个或多个窗口
dqw120 2009-12-31
  • 打赏
  • 举报
回复
你可能参数不对,要不然就是发送方式不对.

这个消息需要POSTMESSAGE发送.

给你个测试代码:

VB codeOption Explicit

Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Const WM_LBUTTONDBLCLK As Long = &H203
Private Const MK_LBUTTON As Long = &H1

Private Sub Command1_Click()
PostMessage &HD0738, WM_LBUTTONDBLCLK, MK_LBUTTON, x + y * &H10000
End Sub

测试通过的.

教你个此类消息操作的方法:

使用SPY++先拦截一下人工操作时产生的消息,再由程序模拟一个一模一样的就基本上可以了:)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧