Описание функции
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