Opened 11 years ago

Closed 11 years ago

Last modified 9 years ago

#2300 closed Bug (Rejected)

$WS_EX_MDICHILD style affects all childs created after it so they act like MDI childs

Reported by: AoRaToS Owned by:
Milestone: Component: AutoIt
Version: Severity: None
Keywords: Cc:


I have noticed a weird behavior when using $WS_EX_MDICHILD.

I create a main GUI with 2 buttons.
Each button creates a new GUI.
The first one without $WS_EX_MDICHILD.
The second one with $WS_EX_MDICHILD.

I click the first one and the other GUI is created (without $WS_EX_MDICHILD):
If I drag the main GUI the other GUI is separate and doesn't move, which is expected.

Then I click the second one for the next GUI to be created (with $WS_EX_MDICHILD):
If I now drag the main GUI, both of the other GUIs move with it.

If I close the second GUI, the first one still moves if I drag the main one.
If I close the first one and re-open it, it still moves in relation to the Main GUI (if I drag the main GUI it follows)

Is this how it's supposed to be? Does the style affect all GUIs created even without the style?

Here is a script to try it out:

(Follow the instructions above)

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

Opt("GUIOnEventMode", 1)
Opt("GUICloseOnESC", 0)

Global $Main


Func MainGUI()
    $Main = GUICreate("Main", 350, 350)
    GUISetOnEvent($GUI_EVENT_CLOSE, "WindowClose")
    $button1 = GUICtrlCreateButton("Child 1 - no MDI_CHILD", 75, 100, 150, 20)
    GUICtrlSetOnEvent($button1, "Child1")
    $button2 = GUICtrlCreateButton("Child 2 - with MDI", 75, 150, 150, 20)
    GUICtrlSetOnEvent($button2, "Child2")
    GUISetState(@SW_SHOW, $Main)

Func Child1()
    $ChildGUI1 = GUICreate("Child 1 - no MDI_CHILD", 180, 180, 100, 100, Default, Default, $Main)
    GUISetOnEvent($GUI_EVENT_CLOSE, "WindowClose")
    GUISetState(@SW_SHOW, $ChildGUI1)

Func Child2()
    $ChildGUI2 = GUICreate("Child 2 - with MDI", 180, 180, 100, 100, Default, $WS_EX_MDICHILD, $Main)
    GUISetOnEvent($GUI_EVENT_CLOSE, "WindowClose")
    GUISetState(@SW_SHOW, $ChildGUI2)

Func WindowClose()
    If @GUI_WinHandle = $Main Then

While 1

Attachments (0)

Change History (2)

comment:1 Changed 11 years ago by Jon

  • Resolution set to Rejected
  • Status changed from new to closed

comment:2 Changed 9 years ago by anonymous

This issue is still happening with the latest version.

Guidelines for posting comments:

  • You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
  • In-depth discussions should take place on the forum.

For more information see the full version of the ticket guidelines here.

Add Comment

Modify Ticket

as closed The ticket will remain with no owner.

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.