Gui in Gui

  • Hallop Leute,
    wie die [berschrift schon sagt will ich eine Gui in einer gui
    das heist Ne große Gui und wenn man da drafu klick soll ne gui in der mitte kommen

  • Hi!


    ein beispiel von @progandy

    Spoiler anzeigen
    [autoit]

    #include<WindowsConstants.au3>
    Opt("GUIOnEventMode",1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Test", @DesktopWidth /2, @DesktopHeight / 2, -2, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_CLIPCHILDREN))
    GUISetOnEvent(-3,"_exit")
    $hChildGUI = GUICreate("Test2", 300, 300, 10, 10, $WS_MAXIMIZEBOX)
    GUISetOnEvent(-3,"_closeChild")

    [/autoit] [autoit][/autoit] [autoit]

    $nExStyle = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $hChildGUI, "int", 0xEC)
    DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $hChildGUI, "int", 0xEC, "int", BitOR($nExStyle[0], $WS_EX_MDICHILD))
    DllCall("user32.dll", "int", "SetParent", "hwnd", $hChildGUI, "hwnd", $hGUI)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $hGUI)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _closeChild()
    GUIDelete($hChildGUI)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    LG Kleiner


  • Hm, muß das hier nach nem Jahr so nochmal ausbuddeln. Ist es damit auch möglich mehrere Childs anzuzeigen, und wenn ja wie? Habe schon versucht, das ganze zu kopieren und hab einfach andere Variablen verwendet, es wird mir aber immer nur eine Gui angezeigt.

  • ich denke mal ich habs ziemlich getroffen:

    Spoiler anzeigen
    [autoit]

    $Gui1 = GUICreate("GUI 1", 300, 300); Erstellt die erste GUI
    $button1 = GUICtrlCreateButton("Button1", 10, 50, 200, 30); Erstellt einen Button
    GUISetState(); Zeigt die erste GUI an
    while 1
    $msg = GUIGetMsg(); Guckt ob der Button geklickt wird ( bzw. wenn es mehrere Controls gibt ob die auch geklickt werden )
    Select
    case $msg = $button1; Wenn der Button dann nun geklickt wird, kommt folgendes:
    $Gui2 = GUICreate("GUI 2", 100, 100); Die zweite GUI wird ertsellt
    $button2 = GUICtrlCreateButton("Button2", 10, 10, 60, 20); Der zweite Button wird erstellt
    GUISetState(); zeigt die zweite GUI an
    Do
    Until GUIGetMsg() = $button2; Wenn man den zweiten Button klickt, dann...
    Exit; Wird das Programm beendet
    EndSelect
    WEnd

    [/autoit]


    Man muss zwar auf einen Button klicken und nicht auf die GUI selber, aber so funktioniert das auf jedenfall.

    mfg
    Hauke

  • Hm, nee, leider nicht. In dem Bsp. von Kleiner, wird die zweite Gui innerhalb der ersten angezeigt. Quasi nen Fenster im Fenster. Bei deiner Variante öffnet sich ein neues Fenster.