Modify

Opened 12 years ago

Closed 12 years ago

Last modified 11 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: 3.3.9.4 Severity: None
Keywords: Cc:

Description

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

MainGUI()


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)
EndFunc

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)
EndFunc

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)
EndFunc


Func WindowClose()
    GUIDelete(@GUI_WinHandle)
    If @GUI_WinHandle = $Main Then
        Exit
    EndIf
EndFunc


While 1
    Sleep(100)
WEnd

http://www.autoitscript.com/forum/topic/147406-weird-behavior-with-ws-ex-mdichild/

Change History (2)

comment:1 Changed 12 years ago by Jon

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

comment:2 Changed 11 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

Author


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

 
Note: See TracTickets for help on using tickets.