如题,假如我想点击某个点,在不同分辨率下,这个点发生了变化,
我想求个算法,能在任何分辨率下都能指向那个我指定的坐标点。

解决方案 »

  1.   


    太简单了, 我举一个模拟鼠标点击的代码, 你的 "担忧" 完全是多馀的原理: 定义一个 Rect 无论分辩率怎么变, 窗体的宽度与高度是不会变的, 座标点也是以窗体的左上角0,0起算, 窗体怎么移动也没问题, 因为在Rect内的座标也将是固定的对应, 无论那个点也跑不掉Option Explicit
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
    Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Const MOUSEEVENTF_LEFTDOWN = &H2
    Const MOUSEEVENTF_LEFTUP = &H4
    Private Type RECT
       Left  As Long
       Top  As Long
       Right  As Long
       Bottom  As Long
    End Type
    Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As LongPrivate Sub Form_Click()
       Dim Rec As RECT
       GetWindowRect Me.hwnd, Rec
       SetCursorPos Rec.Right - 15, Rec.Top + 15
       mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
    End Sub
      

  2.   

    Private Sub Form_Load()
    w = Screen.Width
    Debug.Print w
    h = Screen.Width
    Debug.Print h
    x = 2500'屏幕坐标点(x,y)
    y = 3000
    '屏幕坐标点(x,y)的像素值坐标为(px,py),它随分辨率的改变而改变
    px = x / Screen.TwipsPerPixelX
    py = y / Screen.TwipsPerPixelX
    Debug.Print px
    Debug.Print py
    End Sub