Private Declare Function SetPixelV 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 Long
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Sub Form_Load()
Me.ScaleMode = 3
Me.Visible = False
Dim X As Long, Y As Long, I As Long
Dim DC As Long, Wid As Long, Hei As Long
Wid = Screen.Width
Hei = Screen.Height
DC = GetDC(0) '获得屏幕句柄
I = timeGetTime
Do While timeGetTime - I < 100000
X = Rnd * Wid
Y = Rnd * Hei
SetPixelV DC, X, Y, RGB(Rnd * 256, Rnd * 256, Rnd * 256) '画点
DoEvents
Loop
End
End Sub
下面一段程序利用了API函数在屏幕上实现画图标功能(注:p是图标的句柄,可以由ExtractIcon取得)。
deskhwnd = GetNextWindow(hwnd, GW_HWNDLAST)
'取最下面一个窗口
deskdc = GetWindowDC(deskhwnd)
'取窗口的情景设备
For i=0 To Screen.Width/32/15
'将屏幕坐标单位换算成“Pixel”,并计算可画的图标数
For j=0 To Screen.Height/32/15
DrawIcon deskdc, 32i, 32j, p
'在桌面上画图
Next j
Next i
用函数GetNextWindow取得其句柄,用函数GetWindowDC取出它的虚拟设备。需要注意的是,一旦窗口被覆盖,图标就会消失。