Goran Level: Moderator
 Registered: 16-05-2002 Posts: 1681
|
Re: Application Deactivate
You need to subclass MDI form for WM_ACTIVATE message
' MDI form code
Option Explicit
Const GWL_WNDPROC = (-4)
Private Sub MDIForm_Load()
hWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, hWndProc
End Sub |
'module code
Option Explicit
Const WM_ACTIVATE = &H6
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
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
Declare Function SetClipboardViewer Lib "user32" (ByVal hwnd As Long) As Long
Public hWndProc As Long
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WindowProc = CallWindowProc(hWndProc, hwnd, uMsg, wParam, lParam)
If uMsg = WM_ACTIVATE Then
Select Case wParam
Case 0
Debug.Print "Deactivated"
Case 1
Debug.Print "Activated"
Case 2
Debug.Print "Activated with mouse"
End Select
End If
End Function |
____________________________
If you find the answer helpful, please mark this topic as solved.
|