Seite 2 von 5
Verfasst: 28.08.2008 09:29
von Shardik
Delle hat geschrieben:Problem: Die Sanduhr ist zwar sichtbar auf dem Fenster, allerdings NICHT wenn man über Buttons, Webgadgets oder Container fährt.
Beispiel für das Ein- und Ausblenden des Sanduhr-Cursors über einem ButtonGadget:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 240, 110, "Änderung des Cursors", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
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\x, CursorPos\y) = GadgetID(0)
SetCursor_(HourGlassCursor)
EndIf
EndIf
Until WindowEvent = #PB_Event_CloseWindow
DestroyCursor_(HourGlassCursor)
EndIf
EndIf
Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 24.05.2011 15:54
von Frabbing
Sanduhr (modernere Windows benutzen den rotierenden Ring) setzen geht mit etwas API für Windows so:
Zurücksetzen auf normalen Pfeil mit:

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 24.05.2011 16:23
von ts-soft
@Frank
Seit wann gehörst Du zu den Grabschändern

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 24.05.2011 16:47
von Kiffi
ts-soft hat geschrieben:@Frank
Seit wann gehörst Du zu den Grabschändern

mir ist's recht, weil ich aktuell sowas gut gebrauchen
kann und mir jetzt die Recherche erspare.
Danke @Frank!
Grüße ... Kiffi
Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 24.05.2011 23:33
von Frabbing
Kiffi hat geschrieben:mir ist's recht, weil ich aktuell sowas gut gebrauchen
kann und mir jetzt die Recherche erspare.
Danke @Frank!
Grüße ... Kiffi
Genau, ich hatte nämlich auch danach gesucht.
@Thomas: Deine mögliche Lösung war eben nicht zufriedenstellend...

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 24.05.2011 23:40
von ts-soft
Wenns denn so funktionieren würde

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 25.05.2011 06:50
von rolaf
ts-soft hat geschrieben:Wenns denn so funktionieren würde

geht doch, bei dir nicht thomas "barbapapa"?

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 25.05.2011 08:47
von Kiffi
ts-soft hat geschrieben:Wenns denn so funktionieren würde

funktioniert bei mir einwandfrei.
Grüße ... Kiffi
Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 25.05.2011 11:37
von Frabbing
Funktioniert bei mir bestens. SetCursor ist ein globaler Schalter für den Mauszeiger. Sollte in jedem Fenster/Control funktionieren, dessen Class keinen eigenen Cursor einsetzt:
If your application must set the cursor while it is in a window, make sure the class cursor for the specified window's class is set to NULL. If the class cursor is not NULL, the system restores the class cursor each time the mouse is moved.
In der Warten-Zeit das Hauptfenster kurzfristig disablen, verhindert jegliche Umschaltung.
Offtopic: Barbarpapa trifft es ziemlich genau...

Re: Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 25.05.2011 12:55
von ts-soft
hab sogar den Classcursor auf 0 gesetzt, sehe trotzdem nur meinen Standard-Cursor.