Pic als Mauszeiger

  • Hi leute,
    ich hab mal wieder ein problem....
    und zwar hab ich versucht ein bild als mauszeiger zu benutzen... auf dem Bild is mein wunschmauszeiger und der hintergrund transparent...
    so jetzt hab ich probiert das so zu lösen:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #Include <WinAPI.au3>

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

    $GUI = GUICreate( "",288, 140, -1, -1 ,$WS_POPUP, 0)
    GUISetCursor(16,1)
    GUICtrlCreatePic("login.bmp",0,0,288,140)
    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile("cursor.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($GUI)

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

    GUISetState()

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

    AdlibEnable("Mousecursor",5)

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

    While 1
    WEnd

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

    Func Mousecursor()
    $MousePos = MouseGetPos()
    $WinPos = WinGetPos($GUI)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, $MousePos[0] - $WinPos[0], $MousePos[1] - $WinPos[1])
    EndFunc

    [/autoit]

    aber jetzt würden ja die mauszeiger auf meiner gui bleiben und nichmehr weg gehn... so das ich quasi ganz viele mauszeiger hab die sich nich bewegen....

    wie könnte ich das ändern?

    mfg
    Icynator

  • Entweder:

    [autoit]


    _WinAPI_RedrawWindow($GUI) ; <<<
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, $MousePos[0] - $WinPos[0], $MousePos[1] - $WinPos[1])

    [/autoit]


    Oder:

    Erstmal einen Mauszeiger im cur-Format aus deinem Bild erstellen, z.B. mit:
    http://www.bestfreewaredownload.com/freeware/t-fre…e-durlgvhn.html

    Dann den Mauszeiger setzen mit "Custom GUI Cursor" von:
    http://www.autoitscript.com/forum/index.php?showtopic=19370&st=0&p=133769&#entry133769

    Dann dafür sorgen, dass er nur gesetzt wird während der Mauszeiger über deiner GUI ist mit "Check if Mouse is over a GUI" von:
    http://www.autoitscript.com/forum/index.php?showtopic=19370&st=0&p=133769&#entry133769

    Und schließlich, wenn der Mauszeiger deine GUI verlässt, auf Standard-Mauszeiger setzen mit:
    Restoring the cursor after changing it with LoadCursorFromFile and SetSystemCursor?
    https://autoit.de/Restoring%20th…SetSystemCursor

    Einmal editiert, zuletzt von IsleOfTechno (20. April 2009 um 00:00)

  • ne cur datei hatte ich schon ^^ nur ich wusste nich wie ich die verwende daher hab ichs in png umgewandelt ^^

    den letzten teil deines vorschlags find ich echt gut @IsleOfTechno...
    allerdings hab ich jetzt ein problem...
    und zwar reicht es schon aus wenn ich den quellcode so schreib:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #Include <WinAPI.au3>

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

    $GUI = GUICreate( "",288, 140, -1, -1 ,$WS_POPUP, 0)
    GUISetCursor(16,1)
    $Pic = GUICtrlCreatePic("login.bmp",0,0,288,140)

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

    GUISetState()

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

    GUIRegisterMsg($WM_SETCURSOR, 'WM_SETCURSOR')
    $Cur = DllCall("user32.dll", "int", "LoadCursorFromFile", "str","C:\Dokumente und Einstellungen\Icynator\Desktop\cursor.cur")

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

    While 1
    WEnd

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

    Func WM_SETCURSOR($hWnd, $iMsg, $iWParam, $iLParam)
    If $hWnd = $GUI Then
    DllCall("user32.dll", "int", "SetCursor", "int", $Cur[0])
    Return 0
    EndIf
    EndFunc

    [/autoit]

    allerdings funzt das nur wenn ich

    [autoit]

    $Pic = GUICtrlCreatePic("login.bmp",0,0,288,140)

    [/autoit]

    auskommentiere..
    denn wenn des bild existiert (was ja die gesamte größe der gui einnimmt) wechselt der mauszeiger nicht mehr :(
    weiß jemand rat?

  • Hey, das Link ist ja ma geil, da sind viele nützliche Sachen, aber wenn ich z.B. auf GuiHole drücke komm ich immer wieder zur Startseite, warum?

    weil das ja nich auf eigene threads verlinkt sondern auf einige beiträge