Функция WM_GETMINMAXINFO

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


WM_GETMINMAXINFO

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

Параметры

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

Примечания

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

Пример

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $k = 0
$Gui = GUICreate("WM_GETMINMAXINFO", 390, 140, -1, -1, $WS_OVERLAPPEDWINDOW)
GUICtrlCreateLabel('Функция WM_GETMINMAXINFO выполняется при перемещении окна, сворачивании и изменении размеров. Позволяет установить пределы увеличения и уменьшения окна, как по горизонтали, так и по вертикали индивидуально. А также позицию и размеры развёрнутого состояния. Установочные параметры можно игнорировать указав только необходимые параметры.', 5, 5, 360, 130)

GUISetState()

GUIRegisterMsg($WM_GETMINMAXINFO, "WM_GETMINMAXINFO")

Do
Until GUIGetMsg() = -3

Func WM_GETMINMAXINFO($hWnd, $iMsg, $wParam, $lParam)
    #forceref $iMsg, $wParam
    $k += 1
    WinSetTitle($Gui, '', 'Попытка ' & $k & ' раз')
    If $hWnd = $Gui Then
        Local $tMINMAXINFO = DllStructCreate("int;int;" & _
            "int MaxSizeX; int MaxSizeY;" & _
            "int MaxPositionX;int MaxPositionY;" & _
            "int MinTrackSizeX; int MinTrackSizeY;" & _
            "int MaxTrackSizeX; int MaxTrackSizeY", _
            $lParam)
        DllStructSetData($tMINMAXINFO, "MinTrackSizeX", 360) ; минимальные размеры окна
        DllStructSetData($tMINMAXINFO, "MinTrackSizeY", 130)
        DllStructSetData($tMINMAXINFO, "MaxTrackSizeX", 460) ; максимальные размеры окна
        DllStructSetData($tMINMAXINFO, "MaxTrackSizeY", 180)
        DllStructSetData($tMINMAXINFO, "MaxSizeX", 400) ; размеры развёрнутого состояния ( просто удали строку, чтоб игнорировать критерий)
        DllStructSetData($tMINMAXINFO, "MaxSizeY", 180)
        DllStructSetData($tMINMAXINFO, "MaxPositionX", 400) ; позиция в развёрнутом состоянии
        DllStructSetData($tMINMAXINFO, "MaxPositionY", 450)
    EndIf
    Return $GUI_RUNDEFMSG
EndFunc