Button verschwindet nachdem ich die Fenstergröße mit minimieren und maximieren geändert habe.

  • Hallo Leute, Guten Tag!

    Ich lerne gerade Autoit zu benutzen.
    Und habe folgendes Problem nicht lösen können.

    Ich habe Buttons und IE Embedded Objekt in einem Fenster gleichzeitig.
    Wenn ich maximiere / minimiere, verschwinden die Buttons.

    Ich bitte um Hilfe. Danke!

    #cs
    AutoIt Version: 3.3.10.2
    Wind 7 Pro DE x64 SP1
    #ce

    2 Mal editiert, zuletzt von tuotuogou (16. April 2014 um 16:38) aus folgendem Grund: Das Thema ist wohl nicht endgültig geklärt. Denn in neuer Einträgen stehen andere Ergebnisse.

  • Normalerweise sollte eine der beiden Funktionen das Problem lösen, funktioniert hier aber seltsamerweise nicht:

    [autoit]


    _WinAPI_UpdateWindow
    _WinAPI_RedrawWindow

    [/autoit]


    Hier ein Workaround, zwar nicht schön aber scheint zu helfen:

    Spoiler anzeigen
    [autoit]


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

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

    ; ###### Verstecken sich Buttons, wenn man Fenster vergrößt bzw. verkleinert.

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

    Local $l=(@DesktopWidth - 640) / 2
    Local $t=(@DesktopHeight - 580) / 2
    Local $l2=640-120

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

    $mainGUI = GUICreate("Test", 640, 580, $l, $t, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPCHILDREN)); w,h,l,t
    ; ohne clip Children, versteckt sich das IE Embedded Objekt,

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

    $oIE = _IECreateEmbedded()
    $gui_oIE = GUICtrlCreateObj($oIE, 0,30, (@DesktopWidth - 640) / 2,(@DesktopHeight - 580) / 2-30)
    _IENavigate($oIE, "www.google.de")

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

    ; Button_1 zeigt sich immer, Button_2 versteckt sich manchemal, Button_ versteckt sich immer.
    $GUI_Button_1 = GUICtrlCreateButton("Button1", 0, 0, 100, 30); l,t, w,h
    $GUI_Button_2 = GUICtrlCreateButton("Button2", $l2, 0, 100, 30)
    $GUI_Button_3 = GUICtrlCreateButton("Button3", 10, 420, 100, 30)

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

    GUICtrlSetResizing($gui_oIE,$GUI_DOCKBORDERS)
    GUISetState(@SW_SHOW) ;Show GUI

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

    Do
    $msg = GUIGetMsg()
    Select
    Case $msg=$GUI_Button_3
    Case $msg=$GUI_EVENT_RESIZED or $msg=$GUI_EVENT_MAXIMIZE or $msg=$GUI_EVENT_RESTORE Or $msg=-7
    GUISetState(@SW_HIDE,$mainGUI) ;Hide GUI
    GUISetState(@SW_SHOW,$mainGUI) ;Show GUI
    case $msg=$GUI_EVENT_CLOSE
    EndSelect
    Until $msg=$GUI_EVENT_CLOSE

    [/autoit]

    $msg=-7 ist im übrigen die Windowmessage die Auftritt wenn man das Fenster "anpackt", -8 wird ausgelöst wenn man das Fenster "loslässt". Keine Ahnung wie die zugehörigen Konstanten heißen, vermutlich drag and drop...

  • Hier ein Workaround, zwar nicht schön aber scheint zu helfen:

    Hi, Misterspeed, Deine Antwort ist ja so schnell. Danke!
    Und die Lösung ist auch wirklich gut.
    Naja es ist nicht schön, auf so eine MSG prüft, was eigentlich damit nichts zu tun hat.
    Aber mit so kleiner Äneurng, laüft das Programm jetzt richtig / erwartungsgemäß.
    tolle Arbeit! Danke!

    übrigengs diese beiden Zeilen machen die Arbeit. ob die $msg=-7 zu prüfen ist, scheint unwichtig zu sein.
    GUISetState(@SW_HIDE,$mainGUI)
    GUISetState(@SW_SHOW,$mainGUI)

    Einmal editiert, zuletzt von tuotuogou (8. April 2014 um 11:41)

  • Hi,

    Zitat

    Wenn ich maximiere / minimiere, verschwinden die Buttons.

    Bei diesen Statements bitte die verwendete Windows-Version und die AutoIt-Version angeben!
    Bei mir Win7 / 3.3.10.2 bleiben die Buttons übrigens erhalten...

  • übrigengs diese beiden Zeilen machen die Arbeit. ob die $msg=-7 zu prüfen ist, scheint unwichtig zu sein.


    Nein. Bei mir verschwanden die Buttons noch wenn man das Fenster an den oberen Bildrand zieht, so dass unter Windows 7 das automatische Fenstervollbild eintritt und danach wieder zurückzieht, so dass es wieder Normalgröße hat. Die Konstanten für maximize, restore oder resize hatten in diesem speziellen Fall nicht funktioniert, daher hatte ich zusätzlich noch auf die msg -7 geprüft.

    Der Vollständigkeit halber: Windows 7 Pro x64 aktueller Updatestand in Verbindung mit Autoit 3.3.6.1

    Die Lösung ist dennoch nicht zufriedenstellend, denn eigentlich sollte ein redraw des Fensters auch über die entsprechenden winapi Funktionen auslösbar sein bzw. der Bug sollte garnicht erst auftreten.

  • Danke Andy für den Hinweis.
    Danke MisterSpeed für die 2te Antwort.


    Ich stimme zu, dass ich sorgfältiger testen soll.
    1. Es besteht bei mir keine Unterschied, ob ich -7 prüfe, wenn ich nur Maxi Button drücke.
    2. Wenn ich Maxi Button drücke, und mit Maus den Titelleiste ziehen, damit es klein wird,
    verschwindet Button 3 immer noch. aber bei mir auch wenn ich -7 prüfe, verschwindet es noch.

    Meine Umgebung: Win 7 Pro x64 SP1

    Autoit 3.3.10.2