|
Иногда требуется определить, когда ваша
программа потеряла фокус, то есть стала
неактивной в данной момент программой. Также
этот пример показывает момент активизации вашей
программы.
В данном примере вам обязательно потребуется
дополнительный модуль, в который вы должны
вписать следующий код: 'КОД МОДУЛЯ
Private Const WM_ACTIVATEAPP = &H1C
Private Const GWL_WNDPROC = (-4)
Private 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 m_lWndProc As Long
Public Sub WindowHook(hWnd As Long)
m_lWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf MessageCenter)
End Sub
Public Sub WindowFree(hWnd As Long)
SetWindowLong hWnd, GWL_WNDPROC, m_lWndProc
End Sub
Private Function MessageCenter(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As
Long, ByVal lParam As Long) As Long
If Msg = WM_ACTIVATEAPP Then
If wParam Then
Form1.OnAppActivate
Else
Form1.OnAppDeActivate
End If
End If
MessageCenter = CallWindowProc(m_lWndProc, hWnd, Msg, wParam, lParam)
End Function
'КОД ФОРМЫ
Private Sub Form_Load()
WindowHook hWnd
End Sub
Public Sub OnAppActivate()
MsgBox "Добро пожаловать назад!"
End Sub
Public Sub OnAppDeActivate()
MsgBox "Покидаете программу?"
End Sub
Private Sub Form_Unload(Cancel As Integer)
WindowFree hWnd
End Sub
|
|