热情软件屋

 

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的参数了。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio