'in a moudle
Option ExplicitPublic 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
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End TypePublic prevWndProc As LongPublic Const WM_ACTIVATE = &H6Public Const GWL_WNDPROC = (-4)Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
If Msg = WM_ACTIVATE Then
If wParam = 0 Then
Form1.Caption = "失去焦点"
Else
Form1.Caption = "得到焦点"
End If
End If
End Function'in a form
Option Explicit
Private Sub Form_Load()
prevWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc) '获得原消息处理句柄,并将消息处理转交自定义函数
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
End Sub
Option ExplicitPublic 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
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End TypePublic prevWndProc As LongPublic Const WM_ACTIVATE = &H6Public Const GWL_WNDPROC = (-4)Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
If Msg = WM_ACTIVATE Then
If wParam = 0 Then
Form1.Caption = "失去焦点"
Else
Form1.Caption = "得到焦点"
End If
End If
End Function'in a form
Option Explicit
Private Sub Form_Load()
prevWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc) '获得原消息处理句柄,并将消息处理转交自定义函数
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货