设想利用SetPixel在屏幕中央画出一个小十字型图案,并且无论电脑正在运行哪个程序,这个十字都能显示出来。求尽量完整的代码,包括如何获得窗口句柄(hdc)。当然如果不用SetPixel,有其他办法可以实现也可以。注意即使该程序在后台运行,仍要求能控制当前屏幕中央显示十字。

解决方案 »

  1.   

    建立一个工程,在窗体中加上一个Timer控件,Timer的时间间隔设置为100。窗体中加入以下代码,运行即可。Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Sub Timer1_Timer()
    Dim Hdc1 As Long
    Hdc1 = GetDC(0)
    Dim i As Long
    For i = -5 To 5
        Me.Caption = SetPixel(Hdc1, Screen.Width / Screen.TwipsPerPixelX / 2 + i, Screen.Height / Screen.TwipsPerPixelY / 2, RGB(255, 0, 0))
        Me.Caption = SetPixel(Hdc1, Screen.Width / Screen.TwipsPerPixelX / 2, Screen.Height / Screen.TwipsPerPixelY / 2 + i, RGB(255, 0, 0))
    Next i
    End Sub
      

  2.   

    感谢。在单位用VFP调试通过,等回家后用VB测试成功就给分。
      

  3.   

    如果是的话,上面的办法行不通。因为DIRECTX会不停的刷新桌面,所以你需要加定时器来不断画新的十字上去。
    还有,在DIRECTX中,可能会定义一个和桌面不同的分辨率,因此需要重新判断位置