Сообщение WM_ACTIVATE

Const WM_ACTIVATE =&H6

Сообщение WM_ACTIVATE посылается окну при активизации или деактивизации через функцию обратного вызова WindowProc

Возвращаемое значение

Сообщение WM_ACTIVATE всегда возвращает 0

Параметры

wParam
Младшее слово содержит одну из следующих констант:
WA_ACTIVE = 1Окно становится активным
WA_CLICKACTIVE = 2Окно становится активным при щелчке мышью
WA_INACTIVE = 0Окно деактивизируется
Старшее слово сигнализирует о состоянии окна. Ненулевое значение - окно свернуто
lParam
Дескриптор окна. Может быть равен 0

Пример

' Поместите код в модуль,
' т.к. используется функция обратного вызова
Public OldWindowProc 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 SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = (-4)

Public Const WM_ACTIVATE = &H6
Public Const WA_ACTIVE = 1
Public Const WA_CLICKACTIVE = 2
Public Const WA_INACTIVE = 0

Public Function WindowProc(ByVal hwnd As Long, _
ByVal msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
    If msg = WM_ACTIVATE Then
        If (wParam = WA_ACTIVE Or wParam = WA_CLICKACTIVE) Then
' При активизации меняем цвет формы
           Form1.BackColor = vbRed
        Else
           Form1.BackColor = vbGreen
        End If
    End If

    WindowProc = CallWindowProc( _
        OldWindowProc, hwnd, msg, wParam, _
        lParam)
End Function

' Поместите код в событие Form_Load
OldWindowProc = SetWindowLong( _
        hwnd, GWL_WNDPROC, _
        AddressOf WindowProc)

Смотри также

SetActiveWindow, WM_MOUSEACTIVATE

Категория

Окна