//然后怎么做?请指点我以处理picturebox为例: 模块代码: Option ExplicitPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Const GWL_WNDPROC = (-4) Public Const WM_LBUTTONUP = &H202 Public Const WM_RBUTTONUP = &H205Dim OldWndProc As LongPublic Sub StartSubclass(ByVal hwnd As Long) OldWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf SubClassProc) End Sub Public Sub EndSubclass(ByVal hwnd As Long) If OldWndProc <> 0 Then Call SetWindowLong(hwnd, GWL_WNDPROC, OldWndProc) OldWndProc = 0 End If End Sub Private Function SubClassProc(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case wMsg Case WM_LBUTTONUP Debug.Print "左键UP" Case WM_RBUTTONUP Debug.Print "右键UP" End Select SubClassProc = CallWindowProc(OldWndProc, hwnd, wMsg, wParam, lParam) End Function
窗体上有一个picturebox: Option ExplicitPrivate Sub Form_Load() StartSubclass Picture1.hwnd End SubPrivate Sub Form_Unload(Cancel As Integer) EndSubclass Picture1.hwnd End Sub
1 想办法获得控件句柄
2 加入对 Microsoft HTML Object Library的引用,其中的HTMLDocument类提供了onmouseup事件
然后怎么做?请指点
谢谢
模块代码:
Option ExplicitPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const GWL_WNDPROC = (-4)
Public Const WM_LBUTTONUP = &H202
Public Const WM_RBUTTONUP = &H205Dim OldWndProc As LongPublic Sub StartSubclass(ByVal hwnd As Long)
OldWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf SubClassProc)
End Sub
Public Sub EndSubclass(ByVal hwnd As Long)
If OldWndProc <> 0 Then
Call SetWindowLong(hwnd, GWL_WNDPROC, OldWndProc)
OldWndProc = 0
End If
End Sub
Private Function SubClassProc(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case wMsg
Case WM_LBUTTONUP
Debug.Print "左键UP"
Case WM_RBUTTONUP
Debug.Print "右键UP"
End Select
SubClassProc = CallWindowProc(OldWndProc, hwnd, wMsg, wParam, lParam)
End Function
窗体上有一个picturebox:
Option ExplicitPrivate Sub Form_Load()
StartSubclass Picture1.hwnd
End SubPrivate Sub Form_Unload(Cancel As Integer)
EndSubclass Picture1.hwnd
End Sub