GUIGetCursorInfo() funktioniert nicht

  • Hi,

    ich moechte in meinem Script (wie in diesem Beispiel-Script) die Buttons einfaerben, wenn man mit der Maus drueberfaehrt. In untenstehendem Code ist $btn_1 der Button.

    [autoit]

    Func buttonHover()
    $pos = GUIGetCursorInfo()
    If $pos[4] = $btn_1 Then
    GUICtrlSetBkColor($btn_1, 0xff0000)
    Else
    GUICtrlSetBkColor($btn_1, Default)
    EndIf
    EndFunc

    [/autoit]

    Ich bekomme folgende Fehlermeldung:

    Code
    Subscript used with non-Array variable.:
    If $pos[4] = $btn_1 Then
    If $pos^ ERROR

    Meine AutoIt-Version ist 3.3.6.1.

  • Die Func ist doch auch völliger Käse
    es Steht ein Koordinaten Wert in $Pos[4] und er Koordinaten Wert wird nie deine Button Variable sein ^^

    Gruß Marvin

  • Probier es mal so:

    [autoit]

    Func buttonHover()
    $pos = GUIGetCursorInfo()
    If Not @error Then
    If $pos[4] = $btn_1 Then
    GUICtrlSetBkColor($btn_1, 0xff0000)
    Else
    GUICtrlSetBkColor($btn_1, Default)
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Protex,

    in $pos[4] ist die ID des Buttons.


    chip,

    das habe ich schon probiert und @error ist immer 1. Von daher macht das Script dann gar nichts :/

    Ich hatte mir schon ueberlegt, dass es vielleicht an meiner AutoIt-Version liegen koennte, aber das ist die aktuellste.

    Hm..

  • Poste mal das gesamte Script bitte damit wir es schnell testen können

    // Habe mir eben erst mal schnell die Func angeschaut xD habe sie noch nie gebraucht dachte die Funktion gibt dir nur Koordinaten zurück :D
    // aber auf [4] kommt ja die Control ID des momentan unter dem Cusor befindlichen Controls zurück

    Edit2 // also bei mir geht das hier

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    Global $colset = 0
    GUICreate("Press", 300, 60)
    $btn = GUICtrlCreateButton("Press ME",50,10,200,30)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $btn
    _buttonHover()

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

    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func _buttonHover()
    $pos = GUIGetCursorInfo()
    If $pos[4] = $btn And $colset = 0 Then
    GUICtrlSetBkColor($btn, 0x00BFFF) ;HellBlau
    $colset = 1
    Else
    GUICtrlSetBkColor($btn, 0xBEBEBE)
    $colset = 0
    EndIf
    EndFunc

    [/autoit]


    Gruß

    2 Mal editiert, zuletzt von Protex (26. Oktober 2011 um 15:59)

  • Bei mir funktioniert es nicht.

    Ich probiere noch mal ein bisschen und melde mich dann wieder!

  • Meins geht nicht? , kann eigentlich nicht sein ( Win XP , 32 Bit , SP3 , Autoit 3361) ..
    // hab das Script oben noch etwas angepasst..
    // Achso in meinem Beispiel musst du natürlich den Button KLICKEN :P
    Gruß

    Einmal editiert, zuletzt von Protex (26. Oktober 2011 um 16:05)

  • Wenn der Hover-Effekt eintreten soll, muß die Abfrage der Cursorinfo kontinuierlich in der Schleife erfolgen und nicht erst bei Betätigung des Button. ;)


    ....Ich weiß doch hab doch einen Edit geschrieben das es in meinem BSP nur mit Klick des Buttons geht..

    Gruß

  • Ich glaub das sollte es sein was du willst :D, wenn nicht weiß ich auch nicht mehr weiter ..
    hab ja immer noch kein plan was du willst


    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstantsEx.au3>

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

    Global $colset = 0
    GUICreate("Press", 300, 60)
    $btn = GUICtrlCreateButton("Press ME",50,10,200,30)
    GUISetState()

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

    While 1
    _buttonHover()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $btn
    MsgBox(1,"","Ich bin ein nutzloser Button")
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func _buttonHover()
    $pos = GUIGetCursorInfo()

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

    If $pos[4] = $btn And $colset = 0 Then
    GUICtrlSetBkColor($btn, 0x00BFFF) ;HellBlau
    $colset = 1
    Elseif $pos[4] <> $btn And $colset = 1 Then
    GUICtrlSetBkColor($btn, 0xBEBEBE)
    $colset = 0
    EndIf
    EndFunc

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