HitTest得到的结果为什么不准确
编号:QA002928
建立日期: 2000年5月10日 最后修改日期:2001年1月31日
所属类别:
mql:
操作系统: win98
编程工具: vb6 sp3
问题: 本人用贵网提供的ListView的双击事件如何判断点击的位置的方法得到的listitem项不准确。listview的dblclick中代码如下:
Dim Mousepos As POINTAPI
Dim Mousep As Long
Dim likey As String
Me.ScaleMode = 3
Mousep = GetCursorPos(Mousepos)
Mousep = ScreenToClient(Me.hwnd, Mousepos)
likey = lvListView.HitTest(Mousepos.x, Mousepos.y).Key
Me.ScaleMode = 1
回答:
因为你在使用ScreenToClient转换坐标时将鼠标转换到窗体坐标系中。而HitTest是以ListView的坐标系来计算的。两者有差别。所以你应该剪去ListView的Left和Top。
朱社平的意见:
你可以先在定义一个全局Object变量a,然后在MouseDown事件中得到点击listitem项:
Set a=ListView1.HitTest(x,y)
然后就可以在双击事件中使用了。
RK的意见:
除了要用listview.hwnd外还有一个问题, 就是因为用getcursorpos()得到的x、y是pixel值,而hittest中引用的X,Y是以twip为标准,只要将mousep.x、 mousep.y乘以15就可以作为hittest的参数了。
此问题由李海回答。
| |
|
|
| |
|
|