Jump to content

GUICtrlSetResizing and hidden window


Recommended Posts

Hi,

I have to set a resizing mode to differents controls in a hidden gui, that gui is initialised (hidden) and resized by a WinMove.

But when i show it, control are not resized where thez should.

There is a simple code that reproduce the problem.

Same gui, same content, one displayed then moved, the other moved then displayed :

#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)

Global $gui[2]
Global $labels[2]
Global $taille[2] = [200, 100]

For $i = 0 To UBound($gui, 1) - 1
    $gui[$i] = GUICreate($i, $taille[0], $taille[1], $i * ($taille[0]+100) + 500, (@DesktopHeight-$taille[1])/2)
    GUISetOnEvent($GUI_EVENT_CLOSE, "quit", $gui)
    $labels[$i] = GUICtrlCreateLabel("Test resizing...", $taille[0]-105, $taille[1]-25, 100, 20)
    GUICtrlSetBkColor($labels[$i], 0xE0E0E0)
    GUICtrlSetResizing($labels[$i], BitOR($GUI_DOCKRIGHT, $GUI_DOCKBOTTOM, $GUI_DOCKWIDTH, $GUI_DOCKHEIGHT))
Next
GUISetState(@SW_SHOW, $gui[0])

For $i = 0 To UBound($gui, 1) - 1
    WinMove($gui[$i], "", Default, Default, $taille[0]+100, $taille[1]+100)
Next
GUISetState(@SW_SHOW, $gui[1])

While(True)
    Sleep(10)
WEnd

Func quit()
    Exit
EndFunc

Is that a bug or do miss i something ?

EDIT : This bug disapear if gui is shown at lease one time (even if hide then)

Edited by TommyDDR
_GUIRegisterMsg (Register more than 1 time the same Msg), _Resize_Window (GUICtrlSetResizing for children windows), _GUICtrlSetOnHover (Link a function when mouse go on, left, clic down, clic up, on a control), _InputHeure (Create an input for hour contain), _GUICtrlCalendar (Make a complete calendar), _GUICtrlCreateGraphic3D (Create a 3D graph), _ArrayEx.au3 (Array management), _GUIXViewEx.au3 (List/Tree View management).
Link to comment
Share on other sites

  • Moderators

TommyDDR,

This is not a bug, but AutoIt's behaviour changed between the 3,3,12.# and 3.3.14.# releases. I ran into a similar problem and when I asked I was told that It had to with getting the $WS_EX_RTL extended style to work correctly. Now you need to use GUISetState before using WinMove as until then the function will only affect the GUI and not its controls - as your code shows.

The simple solution to your problem is to set the GUI as hidden before using WinMove:

GUISetState(@SW_SHOW, $gui[0])
GUISetState(@SW_HIDE, $gui[1]) ; Added line <<<<<<<<<<<<<<<

Now the controls are correctly positioned in both GUIs after the move.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Thank's for the tips, it works now ;)

_GUIRegisterMsg (Register more than 1 time the same Msg), _Resize_Window (GUICtrlSetResizing for children windows), _GUICtrlSetOnHover (Link a function when mouse go on, left, clic down, clic up, on a control), _InputHeure (Create an input for hour contain), _GUICtrlCalendar (Make a complete calendar), _GUICtrlCreateGraphic3D (Create a 3D graph), _ArrayEx.au3 (Array management), _GUIXViewEx.au3 (List/Tree View management).
Link to comment
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
 Share

×
×
  • Create New...