Seite 5 von 5
Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 26.05.2011 23:13
von Frabbing
Genau, die Sanduhr ist auch nur dazu gedacht, wenige Sekunden zu überbrücken. Dauert es wissentlich länger, sollte man wirklich eine andere Lösung finden.
Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 26.05.2011 23:41
von Falko
Ist zwar nicht die beste Lösung, aber ich würde es z.B. so probieren, damit die IF-Anweisung auch
darauf reagieren kann.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 240, 110, "Änderung des Cursors", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 10, 10, 115, 90, "Sanduhr-Cursor über diesem ButtonGadget einschalten", #PB_Button_MultiLine)
HourGlassCursor = LoadCursor_(0, #IDC_WAIT)
SetClassLong_(WindowID(0),#GCL_HCURSOR, HourGlassCursor)
Repeat
WindowEvent = WaitWindowEvent()
Select WindowEvent
Case #PB_Event_Gadget
If EventGadget() = 0
If ChangeCursorAboveGadget
ChangeCursorAboveGadget = #False
SetGadgetText(0, "Sanduhr-Cursor über diesem ButtonGadget einschalten")
Else
ChangeCursorAboveGadget = #True
SetGadgetText(0, "Sanduhr-Cursor über diesem ButtonGadget ausschalten")
EndIf
EndIf
EndSelect
If ChangeCursorAboveGadget
GetCursorPos_(CursorPos.POINT)
MapWindowPoints_(0, WindowID(0), @CursorPos, 1)
If ChildWindowFromPoint_(WindowID(0), CursorPos) <= GadgetID(0)
SetCursor_(HourGlassCursor)
EndIf
EndIf
Until WindowEvent = #PB_Event_CloseWindow
DestroyCursor_(HourGlassCursor)
EndIf
Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 26.05.2011 23:49
von RSBasic
@Falko
Den Code hatten wir schon:
http://www.purebasic.fr/german/viewtopi ... 50#p210250
Und ob "= GadgetID(0)" oder "<= GadgetID(0)" spielt keine Rolle, da wir uns auf den Code von Frabbing beziehen und nicht von Shardik.

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 26.05.2011 23:58
von Falko
RSBasic hat geschrieben:...da wir uns auf den Code von Frabbing beziehen und nicht von Shardik
Welchen Code von Frabbing?
Sorry, für den netten Versuch. Jetzt sehe ich, das auf Buttons der Pausenring nicht gewünscht ist.
Gruß, Falko
Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 27.05.2011 00:04
von RSBasic
Einfach ein Beitrag weiter runter scrollen:
http://www.purebasic.fr/german/viewtopi ... 02#p290902
Darum gehts die ganze Zeit. Ist ja jetzt sowieso erledigt, da wir jetzt wissen, wozu das ganze gut sein soll.
Der andere Code, den Shardik damals im Jahre 2008 vorgeschlagen hat, funktioniert ja auch vorher schon.

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 27.05.2011 09:16
von Falko
RSBasic hat geschrieben:ts-soft hat geschrieben:Frabbing hat geschrieben:Poste mal einen Mini-Code dazu
Code: Alles auswählen
OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "minicode")
SetCursor_(LoadCursor_(0, #IDC_WAIT))
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Das funktioniert bei mir auch nicht.
Versuchs damit:
Code: Alles auswählen
EnableExplicit
Define EventID
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetClassLongPtr_(WindowID(0),#GCL_HCURSOR, LoadCursor_(0, #IDC_WAIT))
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
Hier noch etwas simpler, auch wenn RSBasic hier alles gelöst hat
Code: Alles auswählen
OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "minicode")
hcursor.l = LoadCursor_(0,#IDC_WAIT)
holdcursor.l = SetCursor_(hcursor)
Delay(2000)
retval = SetCursor_(holdcursor)
hcursor = LoadCursor_(0,#IDC_ARROW)
holdcursor = SetCursor_(hcursor)
Delay(2000)
retval = SetCursor_(holdcursor)
hcursor = LoadCursor_(0,#IDC_CROSS )
holdcursor = SetCursor_(hcursor)
Delay(2000)
retval = SetCursor_(holdcursor)
Gruß Falko
Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 27.05.2011 13:24
von Frabbing
Wieso simpler? Was spricht gegen meine Einzeilen-Lösung?

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 27.05.2011 13:32
von RSBasic
Falko hat geschrieben:auch wenn RSBasic hier alles gelöst hat
Nö, das habe ich nicht. Mein Code auf Seite 3, den du zitiert hast, benutzt ja nen anderen API-Befehl und das war ja hier nicht gefragt.

Daher habe ich hier nichts gelöst, sondern nur meine Meinung gesagt.

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 27.05.2011 13:37
von Falko
Ich habe ja auch nur meine Meinung vertreten
Da bei mir der alte Code von Shardik nicht lief, hatte ich den
angepasst. Denn die API ChildWindowFromPoint ist wohl in ihren Parametern
geändert worden, oder?
Der Einzeiler ist natürlich die simpelste Form.
Aber wie man sieht, viele Wege führen nach Rom.
Gruß, Falko
Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 28.05.2011 23:48
von Frabbing
Denn die API ChildWindowFromPoint ist wohl in ihren Parametern
geändert worden, oder?
Nein. Man muss nur beachten, dass der zweite Parameter kein Zeiger auf eine Struktur ist, sondern die Struktur selbst. Sind also drei Parameter.
Das ist eher untypisch.