Описание функции


WM_ACTIVATE

Сообщение выполняется при изменении активности окна.

Параметры

Указанные параметры передаются системой.
wParam Двойное слово содержит:
    младшее слово одно из следующих:
        WA_INACTIVE = 0 ; окно деактивировано
        WA_ACTIVE = 1 ; активация любым способом, кроме клика мыши
        WA_CLICKACTIVE = 2 ; активация кликом мыши
    старшее слово
        0 - окно не свёрнуто
        32 - окно свёрнуто
lParam Содержит дескриптор предыдущего окна или NULL

Примечания

Смотрите функцию SetWindowCallback.

Пример

EnableExplicit

Global k = 0
#Window_0 = 0
#txt1 = 0

#WA_ACTIVE = 1
#WA_CLICKACTIVE = 2
#WA_INACTIVE = 0

; ограничение размера окна
Procedure WindowCallback(hWnd, Msg, wParam, lParam)
    Protected Active, Minimized, x
    Active = wParam & $FFF ; LoWord
    Minimized = wParam >> 16 ; HiWord
    Select Msg
        Case #WM_ACTIVATE ; Минимальный, максимальный размера окна. Смотреть WindowBounds
            Debug "_________________"
            If Minimized
                Debug "минимизация = " + Minimized
            Else
                Debug "не минимизировано = " + Minimized
            EndIf
            Select Active
                Case #WA_ACTIVE
                    Debug "активация = " + Active + " - активация любым способом, кроме клика мыши"
                Case #WA_INACTIVE
                    Debug "активация = " + Active + " - деактивировано"
                Case #WA_CLICKACTIVE
                    Debug "активация = " + Active + " - активация кликом мыши"
            EndSelect
            k + 1
            SetWindowTitle(#Window_0, "Вызов " + k + " раз, активация = " + Active) ; флаг Minimized тут всегда = 0
    EndSelect
    ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure


If OpenWindow(#Window_0, 0, 0, 600, 200, "WM_ACTIVATE", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
    TextGadget(#txt1,5, 4, 580, 200,"")
    SetGadgetText(#txt1, "Событие WM_ACTIVATE выполняется при изменении активности окна (сворачивание, активирование иного окна).")
    SetWindowCallback(@WindowCallback())
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf