gui in gui verbesserungen möglich ?

  • Hallo Leute habe eben einen beitrag gelesen das man eine gui in einer Sogenannten eltern gui erstellen kann ich habe ein paar fragen dazu :

    1. Kann man dafür sorgen das nur ein fenster sich am anfang öffnet und das man durch klicken auf einen butten erst das childgui aufruft ?
    2. kann man der Eltern bzw. Parent gui sagen das sie auch mehrere childs haben kann ?


    Ich würde nähmlich gerne ein kundenverwaltungssystem schreiben das ich zwar auch so lösen könnte aber wenn alles sauber in einer gui wäre dann wäre das echt klasse
    hier nochmal der bisherige stand den ich von GTASpider kopiert habe

    Spoiler anzeigen
    [autoit]

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

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

    $hGUI = GUICreate("Test", 500, 500, -1, -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][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $hGUI)

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

    While 1
    Sleep(100)

    WEnd

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

    Func _closeChild()
    GUIDelete($hChildGUI)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]


    MFG ?(

  • 1. Natürlich geht das
    2. Ja geht auch. Ich habe eine Anwendung mit ca. 80 Child-Guis


    EDIT:

    Spoiler anzeigen
    [autoit]

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

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

    $hGUI = GUICreate("Test", 500, 500, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_CLIPCHILDREN))
    GUISetOnEvent(-3, "_exit")
    GUICtrlCreateButton('Show Child 1', 10, 10)
    GUICtrlSetOnEvent(-1, '_Show_Child1')

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

    GUICtrlCreateButton('Show Child 2', 10, 40)
    GUICtrlSetOnEvent(-1, '_Show_Child2')

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

    $hChildGUI1 = GUICreate("Test2", 300, 300, 70, 70, $WS_MAXIMIZEBOX)
    GUISetOnEvent(-3, "_closeChild")
    $nExStyle = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $hChildGUI1, "int", 0xEC)
    DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $hChildGUI1, "int", 0xEC, "int", BitOR($nExStyle[0], $WS_EX_MDICHILD))
    DllCall("user32.dll", "int", "SetParent", "hwnd", $hChildGUI1, "hwnd", $hGUI)
    GUISetState(@SW_HIDE)

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

    $hChildGUI2 = GUICreate("Test3", 300, 300, 100, 100, $WS_MAXIMIZEBOX)
    GUISetOnEvent(-3, "_closeChild")
    $nExStyle = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $hChildGUI2, "int", 0xEC)
    DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $hChildGUI2, "int", 0xEC, "int", BitOR($nExStyle[0], $WS_EX_MDICHILD))
    DllCall("user32.dll", "int", "SetParent", "hwnd", $hChildGUI2, "hwnd", $hGUI)
    GUISetState(@SW_HIDE)

    [/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 _Show_Child1()
    GUISetState(@SW_SHOW, $hChildGUI1)
    EndFunc ;==>_Show_Child1

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

    Func _Show_Child2()
    GUISetState(@SW_SHOW, $hChildGUI2)
    EndFunc ;==>_Show_Child2

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

    Func _closeChild()
    GUISetState(@SW_HIDE, @GUI_WinHandle)
    EndFunc ;==>_closeChild

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]