Opt("OnExitFunc", "_Close") Problem mit Variablen

  • Hallo,

    mir ist aufgefallen wenn man die Option Opt("OnExitFunc", "_Close") nutzt, dass die anderen Variablen inerhalb der Funktion _Close gar nicht anommen oder Gültig sind. Z.B.

    [autoit]

    Func _Close()
    $WinPos = WinGetPos($GUIHandle)
    _IniWrite_Setting("GUIPositions", "Fenster1", $WinPos[0], $WinPos[1])
    EndFunc ;==>_Close

    [/autoit]

    WinGetPos gibt immer den Wert 0 zurück und das deklarieren der Variablen mit Global bringt auch nichts.

    Bitte helft mir :(

  • Hallo Deepred,

    kann ich nicht bestätigen. Dieses kleine DemoSkript zeigt mir die Koordinaten:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Opt('GUIOnEventMode', 1)

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

    Opt("OnExitFunc", "_Close")

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

    Local $hMainGui = GUICreate("Testaufruf für EditBox", 400, 280, 40, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    Local $hlblSpalte = GUICtrlCreateLabel("", 10, 10, 200, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLeft + $GUI_DOCKTOP)
    GUICtrlCreateButton('&Buchstaben (a-m)', 200, 10, 150, 25)
    Local $hlblZeile = GUICtrlCreateLabel("", 10, 50, 200, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLeft + $GUI_DOCKTOP)
    GUICtrlCreateButton('&Zahl (1-12', 200, 50, 150, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    Local $hlblErg = GUICtrlCreateLabel("", 10, 90, 200, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLeft + $GUI_DOCKTOP)
    GUICtrlCreateButton('be&enden', 200, 130, 150, 25)
    GUICtrlSetOnEvent(-1, '_End')
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    GUISetState()

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

    While 1
    Sleep(120)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _Close()
    $size = WinGetPos("[active]")
    MsgBox(0, "Die Koordinaten des aktuellen Fensters lauten (x, y, Breite, Höhe):", $size[0] & " " & $size[1] & " " & $size[2] & " " & $size[3])
    ; _IniWrite_Setting("GUIPositions", "Fenster1", $WinPos[0], $WinPos[1])
    ; GUIDelete($hMainGui)
    Exit
    EndFunc ;==>_End

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

    mfg (Auto)Bert

  • Ich meinte mit Variablen. So geht es nähmlich leider nicht:

    Spoiler anzeigen
    [autoit]

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

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

    Opt('GUIOnEventMode', 1)
    Opt("OnExitFunc", "_Close")

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

    Global $hMainGui = GUICreate("Testaufruf für EditBox", 400, 280, 40, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    Local $hlblSpalte = GUICtrlCreateLabel("", 10, 10, 200, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLeft + $GUI_DOCKTOP)
    GUICtrlCreateButton('&Buchstaben (a-m)', 200, 10, 150, 25)
    Local $hlblZeile = GUICtrlCreateLabel("", 10, 50, 200, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLeft + $GUI_DOCKTOP)
    GUICtrlCreateButton('&Zahl (1-12', 200, 50, 150, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    Local $hlblErg = GUICtrlCreateLabel("", 10, 90, 200, 25)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLeft + $GUI_DOCKTOP)
    GUICtrlCreateButton('be&enden', 200, 130, 150, 25)
    GUICtrlSetOnEvent(-1, '_End')
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKRIGHT + $GUI_DOCKTOP)
    GUISetState()

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

    While 1
    Sleep(120)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _Close()
    $size = WinGetPos($hMainGui)
    MsgBox(0, "Die Koordinaten des aktuellen Fensters lauten (x, y, Breite, Höhe):", $size[0] & " " & $size[1] & " " & $size[2] & " " & $size[3])
    Exit
    EndFunc ;==>_Close

    [/autoit]