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:

Code: Alles auswählen

SetCursor_(LoadCursor_(0, #IDC_WAIT))
Zurücksetzen auf normalen Pfeil mit:

Code: Alles auswählen

SetCursor_(LoadCursor_(0, #IDC_ARROW))
:D

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 :lol:

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 :lol:
mir ist's recht, weil ich aktuell sowas gut gebrauchen
kann und mir jetzt die Recherche erspare. :D

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. :D

Danke @Frank!

Grüße ... Kiffi
Genau, ich hatte nämlich auch danach gesucht.
@Thomas: Deine mögliche Lösung war eben nicht zufriedenstellend... :mrgreen:

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 :mrgreen:

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 :mrgreen:
geht doch, bei dir nicht thomas "barbapapa"? :wink:

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 :mrgreen:
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... :mrgreen:

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.