Jump to content

Recommended Posts

Posted
  Influx said:

How do i make an effect similar to $WS_SIZEBOX or $_WS_THICKFRAME without allowing the GUI to resize?

One way:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

;Const $SC_MOVE = 0xF010
;Const $SC_MINIMIZE = 0xF020
Const $SC_SIZE = 0xF000

$gui = GUICreate("", 300, 200,-1,-1,$WS_SIZEBOX)

GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_SYSCOMMAND, "On_WM_SYSCOMMAND")

While GUIGetMsg() <> $GUI_EVENT_CLOSE

WEnd

Func On_WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam)
    If BitAND ($wParam, 0xFFF0) = $SC_SIZE Then 
        Return 1
    Else
        Return $GUI_RUNDEFMSG
    EndIf
EndFunc
Posted

Or another one (with some kind of border):

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$gui = GUICreate("Test", 300, 200, -1, -1, -1, $WS_EX_CLIENTEDGE)

GUISetState(@SW_SHOW)

While GUIGetMsg() <> $GUI_EVENT_CLOSE
WEnd

 

  Reveal hidden contents

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Posted

Another way:

#include <GUIConstants.au3>

Global $size, $width, $height

$gui = GUICreate("Test GUI",500,500,-1,-1,BitOR($GUI_SS_DEFAULT_GUI,$WS_SIZEBOX))
$size = WinGetPos($gui)
$width = $size[2] ; width of window (GUICreate is ClientSize)
$height = $size[3] ; height of window (GUICreate is ClientSize)
GUISetState (@SW_SHOW)
GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")

While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend
    
Func MY_WM_GETMINMAXINFO($hWnd, $Msg, $wParam, $lParam)
 $minmaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int",$lParam)
 DllStructSetData($minmaxinfo,7,$width) ; min X
 DllStructSetData($minmaxinfo,8,$height) ; min Y
 DllStructSetData($minmaxinfo,9,$width) ; max X
 DllStructSetData($minmaxinfo,10,$height) ; max Y
 Return 0
EndFunc
Posted

And another one - This one is the best i think :), because there is the same borders but without ability to resize and even without the mouse cursor changing "effect":

#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
;

Global $GUI = GUICreate("Resize Borders without resizing - Example", 400, 330, -1, -1, _
    BitOR($GUI_SS_DEFAULT_GUI, $WS_THICKFRAME), $WS_EX_CLIENTEDGE)

$BackPicID = GUICtrlCreatePic(@WindowsDir & "\Web\Wallpaper\Windows XP.jpg", 0, 0, 400, 330)
GUICtrlSetState(-1, $GUI_DISABLE)

GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam)
    If $hWnd <> $GUI Or $iMsg <> $WM_NCHITTEST Then Return $GUI_RUNDEFMSG
    
    Local $iRet = _WinAPI_DefWindowProc($hWnd, $iMsg, $iwParam, $ilParam)
    
    For $i = 10 To 18
        If $i = $iRet Then Return 1
    Next
    
    Return $iRet
EndFunc

 

  Reveal hidden contents

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...