是这样的:
我用GetDC得到了一个窗口的DC,然后用SetPixel在这个DC上(x0,y0)处画了一个点
我想用鼠标指向这个点,于是我用ClientToScreen将(x0,y0)转换成屏幕坐标(x1,y1),然后用SetCursorPos来设置鼠标坐标为(x1,y1),结果发现二者并不重合.为什么呢?
是不是还要计算标题栏?(没有菜单)
*我没用GetWindowDC
若用GetWindowDC得到的DC来在原来的位置画一个点,坐标应该是什么呢?

解决方案 »

  1.   

    Option ExplicitPrivate Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As LongPrivate Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As LongPrivate Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As LongPrivate Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As LongPrivate Type POINTAPI
    x As Long
    y As Long
    End TypePrivate Sub Command1_Click()
    Dim h As Long
    Dim p As POINTAPIh = GetDC(Me.hwnd)SetPixel h, 10, 10, RGB(255, 0, 0)p.x = 10
    p.y = 10ClientToScreen Me.hwnd, pSetCursorPos p.x, p.y
    End Sub我试了,没问题啊!