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


WM_SIZE

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

Параметры

Указанные параметры передаются системой.
wParam Способ, которым окно было изменено от 0 до 4 (мышкой или максимизация)
0 - Изменено мышкой
1 - Свёрнуто
2 - Развёрнуто на весь экран
lParam Двойное слово содержит размеры клиентской области окна:
    младшее слово = ширина клиентской области окна
    старшее слово = высота клиентской области окна

Примечания

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

См. также

Пример

EnableExplicit

Global k = 0
#Window_0 = 0

;-Gadgets
Enumeration
    #txtValue
    #txtName
    #ed2
    #ed1
    #chk1
    #btn1
EndEnumeration

; реакция на изменение размера окна
Procedure WindowCallback(hWnd, Msg, wParam, lParam)
    Protected GUI_H, GUI_W, x
    GUI_W = lParam & $FFF ; LoWord
    GUI_H = lParam >> 16 ; HiWord
    Select Msg
        Case #WM_SIZE ; Изменение размера окна.
            x = (GUI_H - 100)/2 ; кэшируем, чтобы не вычислять одно и тоже многократно
            ResizeGadget(#ed1, 10, 20, GUI_W - 20, x)
            ResizeGadget(#ed2, 10, 44 + x, GUI_W - 20, x)
            ResizeGadget(#txtValue, 10, 28 + x, 54, 16)
            x * 2
            ResizeGadget(#btn1, 20, x+60, 70, 24)
            ResizeGadget(#chk1, GUI_W - 80, x+60, 70, 20)
            k + 1
            SetWindowTitle(#Window_0, "Вызов " + k + " раз, w=" + GUI_W + ", h=" + GUI_H)
    EndSelect
    ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure


If OpenWindow(#Window_0, 0, 0, 400, 200, "WM_SIZE", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget)
    TextGadget(#txtName,10,4,46,16,"Текст1")
    EditorGadget(#ed1, 10, 20, 380, 50, #PB_Editor_WordWrap)
    TextGadget(#txtValue,10,78,54,16,"Текст2")
    EditorGadget(#ed2, 10, 94, 380, 50)
    ButtonGadget(#btn1, 20,160, 70, 24, "Кнопка")
    CheckBoxGadget(#chk1, 320, 160, 70, 20, "Чекбокс")
         SetGadgetText(#ed1, "Событие WM_SIZE выполняется при изменении размеров окна. Можно изменить координаты и размер элементов окна при изменении размеров окна")
         SetWindowCallback(@WindowCallback())
    ;-Основной цикл
    Repeat
        Select WaitWindowEvent()
            Case #PB_Event_Gadget
                Select EventGadget()
                    Case #btn1
                        CloseWindow(0)
                        End
                EndSelect
            Case #PB_Event_CloseWindow
                CloseWindow(0)
                End
        EndSelect
    ForEver
EndIf