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


WM_GETMINMAXINFO

Устанавливает ограничения на минимальные и максимальные размеры окна, позицию и размеры развёрнутого состояния.

Параметры

Указанные параметры передаются системой.
wParam -
lParam Указатель на структуру

Примечания

Смотрите функцию SetWindowCallback. Сообщение выполняется при перемещении окна, сворачивании и изменении размеров.

Пример

EnableExplicit

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

Global caption_h, BorderX, BorderY
caption_h = GetSystemMetrics_(#SM_CYCAPTION) ; высота заголовка
BorderX = GetSystemMetrics_(#SM_CXFRAME) * 2 ; ширина (толщина) вертикальных границ
BorderY = GetSystemMetrics_(#SM_CYFRAME) * 2 + caption_h ; высота (толщина) горизонтальных границ + заголовок

; ограничение размера окна
Procedure WindowCallback(hWnd, Msg, wParam, lParam)
    Protected *mm_info.MINMAXINFO
    Select Msg
        Case #WM_GETMINMAXINFO ; Минимальный, максимальный размера окна. Смотреть WindowBounds
            *mm_info.MINMAXINFO = lParam
            ; Ограничение на минимальный размер окна
            *mm_info\ptMinTrackSize\x = 300 + BorderX ;16
            *mm_info\ptMinTrackSize\y = 100 + BorderY ;42
            ; Ограничение на максимальный размер окна
            *mm_info\ptMaxTrackSize\x = 500 + BorderX ;16
            *mm_info\ptMaxTrackSize\y = 300 + BorderY ;42
            ; Ограничение на размеры развёрнутого состояния (на весь экран)
            *mm_info\ptMaxSize\x = 700 + BorderX     ;16
            *mm_info\ptMaxSize\y = 500 + BorderY     ;42
            ; Позиция в развёрнутом состоянии (на весь экран)
            *mm_info\ptMaxPosition\x = 50
            *mm_info\ptMaxPosition\y = 20
            k + 1
            SetWindowTitle(#Window_0, "Вызов " + k + " раз")
    EndSelect
    ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure


If OpenWindow(#Window_0, 0, 0, 400, 200, "WM_GETMINMAXINFO", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget)
    TextGadget(#txt1,5, 4, 300, 200,"")
    SetGadgetText(#txt1, "Событие WM_GETMINMAXINFO выполняется при перемещении окна, сворачивании и изменении размеров. Позволяет установить пределы увеличения и уменьшения окна, как по горизонтали, так и по вертикали индивидуально. А также позицию и размеры развёрнутого состояния. Установочные параметры можно игнорировать указав только необходимые параметры")
    SetWindowCallback(@WindowCallback())
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf