Seite 1 von 5
Sanduhr nur auf Fenster sichtbar, nicht auf Buttons usw.
Verfasst: 27.08.2008 23:49
von Delle
Hallo,
ich habe ein Fenster mit Buttons, Webgadgets, Containern usw.
Ich setze bei einer Berechung den Mauszeiger als Sanduhr:
SetClassLong_(WindowID(0),#GCL_HCURSOR,LoadCursor_(0,#IDC_WAIT))
Nach der Berechnung wieder auf:
SetClassLong_(WindowID(0),#GCL_HCURSOR,LoadCursor_(0,#IDC_ARROW))
Problem: Die Sanduhr ist zwar sichtbar auf dem Fenster, allerdings NICHT wenn man über Buttons, Webgadgets oder Container fährt.
Gibt es dafür irgendeinen Grund?
Oder muss ich jetzt jedem Gadget extra nochmal die Sanduhr zuordnen?
Thanks,
Delle
Verfasst: 27.08.2008 23:51
von Kaeru Gaman
... ich fürchte ja ...
warum machst du das nicht irgendwie anders?
der Mauszeiger als Sanduhr soll ja eigentlich anzeigen, dass dein Fenster nicht reagiert.
also, wenn die Buttons reagieren können, ist die Sanduhr doch eigentlich fehl am Platze...
Verfasst: 27.08.2008 23:55
von Delle
Also während der Berechnung sollen die Buttons natürlich nicht funktionieren, lassen sich auch nicht anklicken weil in einer Berechnungsschleife.
Mich wunderts nur... vielleicht muss ich einen unsichtbaren Container drüberlegen und dem die Sanduhr zuweisen hm?
Verfasst: 27.08.2008 23:59
von ts-soft
Du änderst ja nur die Fensterklasse des Hauptfensters, aber das sollte ja
auch genügen, da Du die Buttons usw. sowieso disablen solltest, wenn sie
nicht funktionieren können, somit ist der Cursor dort eigentlich egal.
Verfasst: 28.08.2008 00:01
von Kaeru Gaman
also, wenn dein programm in einer berechnungsschleife steckt und kein (Wait)WindowEvent() ausgeführt wird, sollte die Sanduhr eigentlich automatisch auftauchen....
Verfasst: 28.08.2008 00:01
von Delle
Naja Problem ist, dass die Buttons und Webgadgets das Programm zu 90% ausfüllen - die Sanduhr ist auf den "freien Stellen" des eigentlichen Fensters also kaum zu sehen

Verfasst: 28.08.2008 00:04
von Delle
Kaeru Gaman hat geschrieben:also, wenn dein programm in einer berechnungsschleife steckt und kein (Wait)WindowEvent() ausgeführt wird, sollte die Sanduhr eigentlich automatisch auftauchen....
Nein, es sind schon mehrere Schritt wo auch auf dem einen Container was aktualisiert werden muss. Das dauert so 10 Sekunden bis wieder zur eigentlichen Schleife (mit den Maus/Button-Abfragen) zurückgekehrt wird.
Verfasst: 28.08.2008 00:08
von gnasen
du könntest den auch im Thread nebenbei rattern lassen und weiterhin die Hauptschleife nutzen um zB einen schönen Fortschrittsbalken etc anzuzeigen.
Verfasst: 28.08.2008 00:10
von ts-soft
Wenn die Sanduhr von alleine kommt, ist es ein totes Fenster, das sollte man
unbedingt vermeiden
Ich meine im CodeArchiv ist ein Code um den Cursor des Fensters zu
ändern, statt den Cursor der Classe. Mußte mal bitte selber suchen.
Verfasst: 28.08.2008 00:27
von Kaeru Gaman
ts-soft hat geschrieben:Wenn die Sanduhr von alleine kommt, ist es ein totes Fenster, das sollte man
unbedingt vermeiden
ja nee, is schon klar... wunderte mich nur, dass er sagte, die buttons sind eh nich aktiv..
@Delle
lass doch ein imagegadget ne sanduhr anzeigen...
den cursor als sanduhr find ich nich so dolle, weil wie gesagt, dann würde ich davon ausgehen, dass das programm hängt.
außerdem haben nicht alle ne schön animierte sanduhr, gibt ja auch verschiedene cursor-profile.