Seite 1 von 2

SetSystemCursor_() - Hilfe [ ]

Verfasst: 12.09.2007 20:14
von RSBasic
Hallo,
ich habe ein Problem.
Ich möchte gerne den Mauscursor mit PB ändern.
Da gibt es solche Befehle wie:

Code: Alles auswählen

LoadCursor_()
SetSystemCursor_()
LoadCursorFromFile_()
CopyIcon_()
Da ich keinen Plan habe, wie man das realisieren soll, frage ich euch.
Könnt ihr ein Beispielfenster mit der Änderung eines Mauscursors schreiben?
Danke im Vorraus

Verfasst: 12.09.2007 20:57
von hardfalcon

Verfasst: 12.09.2007 22:30
von Fluid Byte

Code: Alles auswählen

OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

SetClassLong_(WindowID(0),#GCL_HCURSOR,LoadCursor_(0,#IDC_CROSS))

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend

Verfasst: 12.09.2007 22:56
von milan1612

Code: Alles auswählen

hCur = LoadCursor_(0, #IDC_ARROW) ;Cursor laden, hCur ist Cursorhandle
SetCursor_(hCur) ;Cursor neu setzen

Verfasst: 13.09.2007 13:44
von RSBasic
@hardfalcon
So weit war ich auch...

@Fluid Byte & @milan1612
Sry ich vergaß. :oops:
Ich meine ein Beispiel-Code für ein eigenes Mauscursor.
Also ich habe ein eigenes Mauscursor gezeichnet und ist natürlich im Cur-Format.
Wie ich diese Cur-Datei laden und einsetzen kann, hab ich leider keinen Plan.
Kann einer mir helfen mit einem Beispielcode? :oops:
Danke im Vorraus :)

Verfasst: 13.09.2007 14:13
von Fluid Byte

Code: Alles auswählen

lpBuffer = AllocateMemory(766) : UnpackMemory(?cursor,lpBuffer)

TempDir$ = GetTemporaryDirectory()

CreateFile(0,TempDir$ + "busy.cur")
WriteData(0,lpBuffer,766)
CloseFile(0)

OpenWindow(0,0,0,400,300,"void",$CC0001)

hCurBusy = LoadCursorFromFile_(TempDir$ + "busy.cur")

SetClassLong_(WindowID(0),#GCL_HCURSOR,hCurBusy)

While WaitWindowEvent() ! 16 : Wend

DataSection
	cursor:
	Data.l $02FE434A,$571E0000,$23025EF4,$23202091,$11002301,$01A12404,$061109F4,$441318B0,$00449420,$844048D0
	Data.l $02221E20,$000F1B01,$4C0E8FD8,$12F00102,$08410050,$01E00010,$81C02BFE,$E0162049,$2CC00A04,$50F6230F
	Data.l $8C203826,$C9F057C3,$C310B8C5,$05FF61B0,$010D3305,$1300F0F6,$20CC3082,$831B730C,$F92A4230,$501F0871
	Data.l $0D354598,$4B04D9E9,$1FC01E33,$4DA231D6,$76B88726,$987F1E08,$927D7821,$41418108,$0183FF4F,$4380289A
	Data.l $887857CC,$8798FC49,$1C611F98,$70BA7C62,$3082F188,$878A8A0B,$2980BCA3,$E1B7482A,$5811AB29,$11F4E011
	Data.l $213F4FE2,$F95C54FF,$F0200ADB,$206300D6,$60472878,$1C826B07,$43490148,$19B1482C,$48959315,$000042A4
	Data.b $00,$00
EndDataSection

Verfasst: 13.09.2007 14:27
von RSBasic
@Fluid Byte
Vielen Dank :)

Verfasst: 13.09.2007 14:56
von RSBasic
Hi,
ich habe wieder ein Problem.

Code: Alles auswählen

Auswahlcursor = LoadCursorFromFile_("Auswahl.cur")

If OpenWindow(0,0,0,500,500,"Beispiel",0)
  If CreateGadgetList(WindowID(0))
    ButtonGadget(1,10,10,100,20,"Beenden",0)
  EndIf
  
  Auswahlcursorbackup = CopyIcon_(GetCursor_())
  SetSystemCursor_(Auswahlcursor,#OCR_NORMAL)
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
    Case 1
      SetSystemCursor_(Auswahlcursorbackup,#OCR_NORMAL)
      End
  EndSelect
EndIf
If EventID = #PB_Event_CloseWindow
  Quit=1
EndIf
Until Quit=1
EndIf
Das Problem liegt beim Zurücksetzen des Mauscursor's, das mit CopyIcon_(GetCursor_()) gesichert wurde.
Was mache ich hier falsch?

Verfasst: 13.09.2007 15:09
von Fluid Byte
Was willst du überhaupt machen? Der code bewirkt doch keinerlei Änderung des Cursors. Ich meine du lädst den momentanen Cursor und setzt ihn wieder bei beenden.

Verfasst: 13.09.2007 15:21
von RSBasic
@Fluid Byte
>Was willst du überhaupt machen?
Ich möchte folgendes machen:
-Cursor laden [Auswahlcursor = LoadCursorFromFile_("Auswahl.cur")]
-Cursor sichern [Auswahlcursorbackup = CopyIcon_(GetCursor_())]
-Cursor setzen [SetSystemCursor_(Auswahlcursor,#OCR_NORMAL)]
-Cursor wiederherstellen [SetSystemCursor_(Auswahlcursorbackup,#OCR_NORMAL)] *Fehler*