Sign in to follow this  
Followers 0
Logman

Resize GUI with WinMove()

3 posts in this topic

How to set desired width x height GUI in WinMove() function? I need exact dimensions both dialogs (smaller and bigger) after resizing.

Thanks

Following code doesn't work:

#include <GuiConstants.au3>

$L_Width    = 475 ; Less
$L_Height   = 430 ; Less
$M_Width    = 700 ; More
$M_Height   = 600 ; More

$MAIN_GUI   = GUICreate("MAIN", $L_Width, $L_Height)
$BTN_CLOSE  = GUICtrlCreateButton("&Close", 344, 390, 115, 25, 0)
$BTN_MORE   = GUICtrlCreateButton("&More...", 16, 390, 115, 25, 0)
$LBL_NFO1   = GUICtrlCreateLabel($L_Width & " x " & $L_Height & "  >>  Desired width x height", 16, 16, 300, 17)
$GuiPos     = WinGetClientSize($MAIN_GUI)
$LBL_NFO2   = GUICtrlCreateLabel($GuiPos[0] & " x " &  $GuiPos[1] & "  >>  Real width x height", 16, 36, 300, 17)
GUISetState(@SW_SHOW, $MAIN_GUI)

While 1
    $tMsg = GUIGetMsg()
    Select
    Case $tMsg = $GUI_EVENT_CLOSE Or $tMsg = $BTN_CLOSE
        ExitLoop 
    Case $tMsg = $BTN_MORE
        If GUICtrlRead($BTN_MORE) = "&More..." Then
            $BtnText = "&Less..." 
            $Width  =   $M_Width    
            $Height =   $M_Height
        Else
            $BtnText = "&More..."
            $Width  = $L_Width
            $Height = $L_Height
        EndIf
        GUICtrlSetData ($BTN_MORE, $BtnText)
        WinMove($MAIN_GUI,"", (@DesktopWidth/2)-($Width/2), (@DesktopHeight/2)-($Height/2), $Width, $Height)
        $GuiPos = WinGetClientSize($MAIN_GUI)
        GUICtrlSetData ($LBL_NFO1, $Width & " x " & $Height & "  >>  Desired width x height")
        GUICtrlSetData ($LBL_NFO2, $GuiPos[0] & " x " &  $GuiPos[1] & "  >>  Real width x height")
    Case Else
    EndSelect 
WEnd
Exit

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

#include <GuiConstants.au3>

$L_Width    = 475 ; Less
$L_Height   = 430 ; Less
$M_Width    = 700 ; More
$M_Height   = 600 ; More

$MAIN_GUI   = GUICreate("MAIN", $L_Width, $L_Height)
$BTN_CLOSE  = GUICtrlCreateButton("&Close", 344, 390, 115, 25, 0)
$BTN_MORE   = GUICtrlCreateButton("&More...", 16, 390, 115, 25, 0)
$LBL_NFO1   = GUICtrlCreateLabel($L_Width & " x " & $L_Height & "  >>  Desired width x height", 16, 16, 300, 17)
$GuiPos  = WinGetClientSize($MAIN_GUI)
$LBL_NFO2   = GUICtrlCreateLabel($GuiPos[0] & " x " &  $GuiPos[1] & "  >>  Real width x height", 16, 36, 300, 17)
GUISetState(@SW_SHOW, $MAIN_GUI)

;=====
$GuiBorder = WinGetPos($MAIN_GUI)
$GuiBorder[2] -= $GuiPos[0]
$GuiBorder[3] -= $GuiPos[1]
;=====

While 1
    $tMsg = GUIGetMsg()
    Select
    Case $tMsg = $GUI_EVENT_CLOSE Or $tMsg = $BTN_CLOSE
        ExitLoop 
    Case $tMsg = $BTN_MORE
        If GUICtrlRead($BTN_MORE) = "&More..." Then
            $BtnText = "&Less..." 
            $Width  = $M_Width 
            $Height =    $M_Height
        Else
            $BtnText = "&More..."
            $Width  = $L_Width
            $Height = $L_Height
        EndIf
        GUICtrlSetData ($BTN_MORE, $BtnText)
;=====
        WinMove($MAIN_GUI,"", (@DesktopWidth/2)-($Width/2), (@DesktopHeight/2)-($Height/2), $Width + $GuiBorder[2], $Height + $GuiBorder[3])
;=====
        $GuiPos = WinGetClientSize($MAIN_GUI)
        GUICtrlSetData ($LBL_NFO1, $Width & " x " & $Height & "  >>  Desired width x height")
        GUICtrlSetData ($LBL_NFO2, $GuiPos[0] & " x " &  $GuiPos[1] & "  >>  Real width x height")
    Case Else
    EndSelect 
WEnd
Exit

Explanation: WinMove() changes the window's size, window decorations (titlebar, borders, etc) included. You need to compensate for the decorations when using WinMove() if you want to keep the client size the same.

Edited by -Ultima-

[ WinINet.au3 | Array.au3 (Optimized) | _UnixTimeParse() ]

Share this post


Link to post
Share on other sites

Explanation: WinMove() changes the window's size, window decorations (titlebar, borders, etc) included. You need to compensate for the decorations when using WinMove() if you want to keep the client size the same.

Many Thanks, -Ultima-!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0