VBA下,建了一個表單(UserForm)呼叫簡單的API
回傳的是表單固定位置的RGB值,怎么會在運行程式后,滑鼠點擊其他應用, 再觸發mousemove會發生變化?
hdc每次發生變化可以理解,為什么表單上某個點顏色的回傳值怎么會變化呀?我試了在整個表單上插個圖片進去結果也是這樣.
我的理解GetPixel取得的是表單上50,100這個點的顏色,表單本身沒有變化,那取得的RGB值不應該變化呀?
Module class 代碼如下:
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Colorval&, Red&, Green&, Blue&
Public Sub GetRGB(cc As Long)
Red = cc Mod 256
Green = (cc Mod 256) Mod 256
Blue = cc Mod 256 Mod 256
End Sub
表單UserForm代碼如下:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
hdc = GetDC(UserForm)
' hdc = GetDC(0) hdc改成取得0,結果也這樣.
Colorval = GetPixel(hdc, 50, 100)
Call GetRGB(Colorval)
Me.Caption = CStr(Colorval) & "Red point:" & CStr(Red) & "Green point:" & CStr(Green) & "Blue point:" & CStr(Blue) & " hdc value:" & hdc
ReleaseDC UserForm, hdc
End Sub
Private Sub UserForm_load()
Me.scalemode = 3
End Sub
直接運行結果(滑鼠不去點擊其他程式)

運行后,滑鼠先去點擊比如IE或者其他程式,再觸發表單的mousemove(注意看Red/Green/Blue point這3個值發生了變化!!!)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/24540.html
標籤:API
