Focus von Child GUI auf Haupt GUI automatisch legen

  • Was ich möchte steht ja im Titel ;)
    Unswar habe ich eine GUI und auf ihr liegen 4 Child-GUI's , welche jeweils ein Bild (gif) haben. Child GUI´s sind es aufgrund der Transparenz.
    Wenn ich nun aber auf einen Button (eine der 4 anderen GUIs) hat das Hauptfenster keinen Fokus mehr und ich muss irgendwo in das Hauptfenster klicken um andere Buttons drücken zu können.


    Wie kann ich noch einem Klick auf eine GUIs den Fokus wieder auf das Hauptfenster legen ?

    Einmal editiert, zuletzt von Aldi (2. Juli 2012 um 14:31)

  • Nachdem du kein Skript gepostest hast an dem man es austesten kann, hier ein Skript mit einer Cjildgui:

    Spoiler anzeigen
    [autoit]

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

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

    Dim $idRadio2[5], $iLeft = 235, $iTop = 25
    #region ### START Koda GUI section ### Form=

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

    $Form1 = GUICreate("Form1", 441, 241, 50, 69)
    $btnHide = GUICtrlCreateButton('&verstecken', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)

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

    $btnShow = GUICtrlCreateButton('&Zeigen', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    $hGuiChild = GUICreate("", 170, 170, $iLeft, $iTop, BitOR($WS_CHILD, $WS_MINIMIZEBOX), $WS_EX_MDICHILD, $Form1)
    For $i = 0 To 4
    $idRadio2[$i] = GUICtrlCreateRadio("Radio " & $i, 5, $i * 25, 60, 18)
    Next
    GUISwitch($Form1)
    WinMove($hGuiChild, "", $iLeft, $iTop)
    $hbtnLeft = GUICtrlCreateButton('&Links', 20, 120, 100, 21)
    $hbtnRight = GUICtrlCreateButton('&Rechts', 20, 150, 100, 21)
    GUISetState(@SW_SHOW, $Form1)
    GUISetState(@SW_SHOW, $hGuiChild)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hbtnLeft
    $iLeft -= 5
    WinMove($hGuiChild, "", $iLeft, $iTop)
    Case $hbtnRight
    $iLeft += 5
    WinMove($hGuiChild, "", $iLeft, $iTop)
    Case $btnHide
    GUISetState(@SW_HIDE, $hGuiChild)
    Case $btnShow
    GUISetState(@SW_SHOW, $hGuiChild)
    EndSwitch
    WEnd

    [/autoit]

    das wichtige sind die Stilkominationen beim erstellen der Childgui,

    mfg autoBert

  • Hilft mir nur halb :D
    Ich könnte die Haupt GUI mit @SW_HIDE und dannach @SW_SHOW wiederbekommen aber schönt aussehen tut es nicht

    Hier mal ein kleiner Auszug aus meinem Skript :

    [autoit]

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

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

    $maingui = GUICreate("Sample", 712, 390, 192, 124,$WS_POPUP)
    $back = GUICtrlCreatePic(@TempDir &"\hw\back.jpg",0,0,712,390)
    $exit_btn = GUICtrlCreatePic(@TempDir &"\hw\exit.jpg",680,10,18,20)

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

    $pic_uebersicht = GUICreate("", 125,33, 20, 20, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $maingui)
    $Pic1 = GUICtrlCreatePic(@TempDir &"\hw\m_uebersicht.gif", 0,0, 125, 33)
    $Pic1_h = GUICtrlCreatePic(@TempDir &"\hw\m_uebersicht_h.gif", 0,0, 125, 33)
    GUICtrlSetState(-1,$GUI_HIDE)

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

    GUISetState(@SW_SHOW,$pic_uebersicht)
    GUISetState(@SW_SHOW,$maingui)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Pic1_h
    irgendwas_function()
    EndSwitch
    WEnd

    [/autoit]

    Wenn ich dann zb auf den Button klicke muss ich nachher immer erst wieder ins eigentliche Fenster zurückklicken :/

    PIC1_h ist übrigens anklickbar weil ich eine MosueOver Funktion eingebaut habe , welche beim überfahren eine Art "Highlight" auf den Button setzt


    EDIT :

    Habs doch geschafft :D
    Wenn ich mit Guictrlsetstate auf ein Control in der Hauptgui gehe funktioniert es

    Einmal editiert, zuletzt von Aldi (2. Juli 2012 um 14:30)