Seite 1 von 1
Allgemeine Fragen zu Cursor [gelöst]
Verfasst: 18.12.2007 00:03
von Sebastian
Ich möchte in meiner Oberfläche verschiedene Cursor für verschieden Tools darstellen. Durch die Forensuche bin ich auf den Befehl:
LoadCursorFromFile_
und
SetCursor_
gestoßen. Im Grobem funktioniert es auch. Allerdings lässt mich ein Zweifel und ein Problem nicht zur Ruhe kommen.
1. Den Befehl SetCursor_ lasse ich ständig (in der repeat-schleife) wiederholen. Wenn ich das nicht mache, den Cursor also nur einmal setzen lasse, dann ist sofort wieder der normale Pfeil dar. Das kann doch aber nicht die Lösung sein, oder? Ist es nicht unheimlich ressourcenfressend den Cursor in der Endlosschleife setzen zu lassen?
2. Der Cursor wird zu groß dargestellt. Dir .cur Datei ist 20x20 Pixel groß, jedoch wird der Cursor vergrößert angezeigt. Wie kann ich das unterbinden? Was läuft hier schief?
Verfasst: 18.12.2007 00:40
von Falko
Probier das von edel bitte mit z.B.
hand = LoadCursorFromFile_("Garden.ico")
anstelle von hand = LoadCursor_(0,#IDC_HAND)
Funktioniert prima
http://www.purebasic.fr/german/viewtopi ... 292#180292
Gruß Falko
Verfasst: 18.12.2007 08:27
von Sebastian
Das beantwortet mir nicht meine zweite Frage und meine erste eigentlich auch nicht wirklich, da Du mir nur eine Lösung anbietest, jedoch nicht auf meine Frage eingehst...
Verfasst: 18.12.2007 16:54
von Sebastian
Mag vielleicht jemand direkt auf meine Fragen Bezug nehmen? Es geht mir nicht nur darum eine Lösung für das Problem zu finden, vielmehr möchte ich die Lösung auch verstehen bzw. verstehen, warum eine andere Lösung nicht funktioniert.
Verfasst: 18.12.2007 17:21
von Falko
Für das Verständnis zu deinem Code müsste man ihn erst sehen, wie du es
gemacht hast. Alles andere steht eigentlich in der API gut beschrieben.
Für einen dauerhaften Cursor,
der nicht in die Repeatschleife geschrieben
wird, müsstest du wahrscheinlich SetClassLong_() nutzen.
Diesmal kommt kein Beispiel
[Edit] Unter SetCursor_() steht unter Remarks, folgendes:
Der Cursor wird nur gesetzt, wenn der neue Cursor anders als der vorherige Cursor ist; sonst kehrt die Funktion sofort zurück.
Der Cursor ist eine gemeinsam benutzte Ressource. Ein Fenster sollte die Cursorform setzen, nur wenn der Cursor in seinem Kundenbereich ist oder wenn das Fenster Mauseinsatz schlägt. In Systemen ohne eine Maus sollte das Fenster den vorherigen Cursor wiederherstellen, bevor der Cursor dem Kunden Bereich überlässt oder bevor es Steuerung ein anderes Fenster abtritt.
Wenn Ihre Bewerbung den Cursor setzen muss, während es in einem Fenster ist, vergewissern Sie sich, dass der Klassencursor für die Klasse des angegebenen Fensters auf null gesetzt ist. Wenn der Klassencursor nicht null ist, stellt das System den Klassencursor jedes Mal wieder her, wenn die Maus bewegt ist.
Der Cursor wird nicht auf der Abschirmvorrichtung gezeigt, wenn die interne Cursoranzeigezählung weniger als null ist. Dies tritt auf, wenn die Bewerbung die Funktion ShowCursor verwendet, um den Cursor mehr zu verstecken, misst, als den Cursor zu zeigen.
Lustige Translator-Übersetzung, aber man weiß wenigstens, warum man einen ClassCursor setzen sollte
[/Edit]
Mit freundlichen Grüßen,
Falko
Verfasst: 18.12.2007 19:33
von Fluid Byte
Die Cursor muss 32x32 groß sein, nicht 20x20.
Verfasst: 19.12.2007 00:05
von Sebastian
Okay. Die Datei muss also 32x32 groß sein. Jedoch gibt es doch auch kleinere Cursor (z.B. das Standardpfeilsymbol). Bedeutet das, dass einfach nicht alle möglichen Pixel des 32x32 großen Feldes genutzt wurden?
Verfasst: 19.12.2007 00:06
von Fluid Byte
Exakt.