GUICtrlCreatePic bei mehreren GUIs

  • Hallo,

    ich habe folgendes Problem:
    Ich erstelle zwei GUIs und möchte dann auf der zweiten ein Bild erstellen. Leider erscheint das Bild jedoch immer auf der 1. GUI.

    Spoiler anzeigen
    [autoit]


    $GUI1 = GUICreate("Test", 420, 100, 0, 0, $WS_POPUP + $WS_CAPTION, $WS_EX_TOOLWINDOW)

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

    $Button = GUICtrlCreateButton("TestButton", 20, 10, 80, 80)
    GUISetState()

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

    $GUI2 = GUICreate ("2.GUI", 350, 196, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
    $Pic = GUICtrlCreatePic(@ScriptDir & "\test.bmp", 0, 0, 350, 196)
    GUISetState (@SW_SHOW, $GUI2)

    [/autoit]

    Kann mir da jemand helfen? ?(

    Einmal editiert, zuletzt von 314159 (27. April 2013 um 11:27)

  • Verstehe dein Problem nicht. Das Bild wird innerhalb der 2. GUI erzeugt, so wie du es haben willst. Kannst du alleine daran sehen, dass das Bild seine Position nicht ändert wenn du GUI 1 verschiebst. Hier mal dein Code in lauffähiger Form (includes + while schleife haben gefehlt) und einem etwas deutlicher verschobenen Fenster 1, damit man definitiv sieht, dass das Bild in Fenster 2 ist:

    [autoit]


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

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

    $GUI1 = GUICreate("Test", 420, 100, 400, 0, $WS_POPUP + $WS_CAPTION, $WS_EX_TOOLWINDOW)

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

    $Button = GUICtrlCreateButton("TestButton", 20, 10, 80, 80)
    GUISetState()

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

    $GUI2 = GUICreate ("2.GUI", 350, 196, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
    $Pic = GUICtrlCreatePic(@ScriptDir & "\test.bmp", 0, 0, 350, 196)
    GUISetState (@SW_SHOW, $GUI2)

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

    while 1
    if GUIGetMsg()=$Button Then Exit
    wend

    [/autoit]

    Wenn du die GUI's wirklich beide übereinander haben willst und nur haben möchtest, dass Fenster 1 immer im Vordergrund ist, dann kannst du bei Fenster 1 noch den extended style $WS_EX_TOPMOST setzen:

    [autoit]


    $GUI1 = GUICreate("Test", 420, 100, 0, 0, $WS_POPUP + $WS_CAPTION, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST)

    [/autoit]
  • Vielen Dank fuer die Antwort!

    Ich hatte beim erstellen der 2. GUI eine 0 zuviel. Deshalb hat das bei mir nicht geklappt.
    $GUI2 = GUICreate ("2.GUI", 350, 196, 0, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)

    Jetzt funktionierts. Wie peinlich!