GUI und GUIGetCursorInfo()

  • Hallo,

    also ich habe gerade eine normale gui, die transparent ist. Wenn ich mit dem Mauszeiger über der Gui fahre soll sie nicht mehr transparent sein. Ich habe es schon mit disem Code versucht aber ich weiß nicht warum es nicht funktioniert. Kann mir pls jemand helfen?

    [autoit]

    $Mousinfobutton5 = GUIGetCursorInfo($GUI)
    If $Mousinfobutton5[4] = $GUI Then
    If $Mousinfobutton5[4] <> $oldpos5 Then
    $oldpos5 = $Mousinfobutton5[4]
    WinSetTrans($GUI,"",80)
    EndIf
    Else
    If $Mousinfobutton5[4] <> $oldpos5 Then
    $oldpos5 = $Mousinfobutton5[4]
    WinSetTrans($GUI,"",240)
    EndIf
    EndIf

    [/autoit]
  • Hier, so schwer ist das doch nicht!

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=
    $GUI = GUICreate("Form2", 400, 300, 303, 219)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    WinSetTrans($GUI,"",10)
    $Status = False
    While 1
    $Curser = GUIGetCursorInfo ()
    If $Curser[0] > 0 Then
    If $Curser[0] < 400 Then
    If $Curser[1] +30 > 0 Then
    If $Curser[1] < 300 Then
    If $Status = False Then
    $Status = True
    WinSetTrans($GUI,"",255)
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    If $Curser[0] < 0 Then
    If $Status = True Then
    $Status = False
    WinSetTrans($GUI,"",10)
    EndIf
    ElseIf $Curser[0] > 400 Then
    If $Status = True Then
    $Status = False
    WinSetTrans($GUI,"",10)
    EndIf
    ElseIf $Curser[1] +30 < 0 Then
    If $Status = True Then
    $Status = False
    WinSetTrans($GUI,"",10)
    EndIf
    ElseIf $Curser[1] > 300 Then
    If $Status = True Then
    $Status = False
    WinSetTrans($GUI,"",10)
    EndIf
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    mfg. Jam00

    • Offizieller Beitrag

    Jam00. Warum eigentlich so kompliziert?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $GUI = GUICreate("Form2", 400, 300, -1, -1)
    GUISetState(@SW_SHOW)
    WinSetTrans($GUI, "", 10)
    $Status = False
    While 1
    $Curser = GUIGetCursorInfo($GUI)
    If IsArray($Curser) Then
    If $Curser[0] + 7 > 0 And $Curser[0] - 6 < 400 And $Curser[1] + 30 > 0 And $Curser[1] - 6 < 300 Then
    WinSetTrans($GUI, "", 255)
    else
    WinSetTrans($GUI, "", 10)
    EndIf
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]


    In deinem Beispiel ist auch ein Fehler , wenn du mit der Maus ausserhalb des Fensters klickst, dann kommt ein Arrayfehler.

    • Offizieller Beitrag

    Stimmt, hab vergessen das in grade mit nem Vista Rechner arbeite. Windows XP flackert beim ständigen wechsel .

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $GUI = GUICreate("Form2", 400, 300, -1, -1)
    GUISetState(@SW_SHOW)
    WinSetTrans($GUI, "", 10)
    $Status = False
    While 1
    $Curser = GUIGetCursorInfo($GUI)
    If IsArray($Curser) Then
    If $Curser[0] + 7 > 0 And $Curser[0] - 6 < 400 And $Curser[1] + 30 > 0 And $Curser[1] - 6 < 300 Then
    If Not $Status Then
    $Status = True
    WinSetTrans($GUI,"",255)
    endif
    Else
    If $Status Then
    $Status = False
    WinSetTrans($GUI,"",10)
    endif
    EndIf
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]


    Damit flackert es unter Windows XP auch nichts mehr .