Heyho.
Wie die Überschrift schon sagt, suche ich nach einer guten & rel. simplen Möglichkeit ein Bild als Mauscurser zu benutzen.
Dieser Mauscurser sollte dann allerdings nur in der GUI das Bild sein.
Bild als Mauscurser
-
- [ offen ]
-
ExTeSs -
8. September 2012 um 20:06 -
Geschlossen -
Erledigt
-
-
[ gelöst ] Mauszeiger ändern
Da wir gerade uns so ergiebig mit der deutschen Sprache befassen: CursorGruß stay
-
ist mir auch aufgefallen, trotzdem danke
Das löst aber nicht mein Problem, ich will ja, dass ich eine png-Datei als cursor benutzen kann und das auch nur in der gui..
-
Hallo,
vielleicht hilft dir dann das:
http://www.autoitscript.com/forum/topic/19…180#entry447406Gruß stay
-
ich hab jetzt einfach mal einen standard-cursor genommen... Bei "normalen" Gui's klappt es einwandfrei.
Hierbei allerdings nicht.. wie kann ich das Problem beheben?Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>Global $pngSrcGUIBK = "map.jpg"
[/autoit] [autoit][/autoit] [autoit]
Global Const $AC_SRC_ALPHA = 1GUISetCursor(3)
[/autoit] [autoit][/autoit] [autoit]$GUI = GUICreate("", 942, 528, -1, -1, $WS_POPUP, BitOR($WS_EX_CONTROLPARENT, $WS_EX_LAYERED))
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_Startup()
Global $hImageGUIBK = _GDIPlus_ImageLoadFromFile($pngSrcGUIBK)
SetBitmap($GUI, $hImageGUIBK, 255)$GUIsub = GUICreate("", 942, 528, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $GUI)
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor(0x585858)
$close = GUICtrlCreatePic("rotesx2.jpg", 293, 6, 19, 17)
_WinAPI_SetLayeredWindowAttributes($GUIsub, 0x585858)$Button1 = GUICtrlCreateButton("", 48, 40, 11, 9)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor(-1, 0x000000)
$Button2 = GUICtrlCreateButton("", 120, 152, 11, 9)
GUICtrlSetBkColor(-1, 0x000000)
$Button3 = GUICtrlCreateButton("", 240, 48, 11, 9)
GUICtrlSetBkColor(-1, 0x000000)
$Button4 = GUICtrlCreateButton("", 136, 8, 11, 9)
GUICtrlSetBkColor(-1, 0x000000)
$Button5 = GUICtrlCreateButton("", 8, 264, 11, 9)
GUICtrlSetBkColor(-1, 0x000000)
$Button6 = GUICtrlCreateButton("", 152, 224, 11, 9)
GUICtrlSetBkColor(-1, 0x000000)
$Button7 = GUICtrlCreateButton("", 272, 248, 11, 9)
GUICtrlSetBkColor(-1, 0x000000)
$Button8 = GUICtrlCreateButton("", 160, 72, 11, 9)
GUICtrlSetBkColor(-1, 0x000000)
$Button9 = GUICtrlCreateButton("", 272, 128, 11, 9)
GUICtrlSetBkColor(-1, 0x000000)
$Button10 = GUICtrlCreateButton("", 24, 160, 11, 9)
GUICtrlSetBkColor(-1, 0x000000)GUISetState(@SW_SHOW, $GUI)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW, $GUIsub)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $close
Exit
Case $Button1
Exit
Case $Button2
Exit
Case $Button3
Exit
Case $Button4
Exit
Case $Button5
Exit
Case $Button6
Exit
Case $Button7
Exit
Case $Button8
Exit
Case $Button9
Exit
Case $Button10
ExitEndSwitch
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
WEndFunc SetBitmap($hGUI, $hImage, $iOpacity)
[/autoit] [autoit][/autoit] [autoit]
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend$hScrDC = _WinAPI_GetDC(0)
[/autoit]
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA)
_WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc -
ich kann dir ne andere art empfehlen, dazu musst du dein JPG aber in ein anderes Format konvertieren
[autoit]
in Ico, Ani oder CurFunc _LoadCursor($sLoadCursor_Path, $hLoadCursor_GUI)
[/autoit]
Local $hCursor = DllCall("user32.dll", "hwnd", "LoadCursorFromFile", "str", $sLoadCursor_Path)
If $hCursor[0] <> 0 Then DllCall("user32.dll", "hwnd", "SetClassLong", "hwnd", $hLoadCursor_GUI, "int", -12, "hwnd", $hCursor[0])
EndFunc ;==>_LoadCursor
$sLoadCursor_Path = der Pfad zum Cursor
$hLoadCursor_GUI = das was GUICreate() zurückgibt wenn du es für die GUI setzen willst oder das Ctrl Handel um es für ein Ctrl zu setzen
Ctrlhandel ist nicht das was GUICtrlCreate... zurückgibt! siehe GUICtrlGetHandle()man kann den curser aber nur für klassen setzen
also EIN Cursor für ALLE Buttons nicht für jeden button ein anderen Cursormfg
PS: siehe in meiner signatur im Spoiler da ist ein nützlicher Link zu dem thema
-
Mit AniFX geht das auch, aber du willst wahrscheinlich nur AutoIt nutzen oder?