Allgemeine Fragen zu Cursor [gelöst]

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Allgemeine Fragen zu Cursor [gelöst]

Beitrag 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?
Zuletzt geändert von Sebastian am 19.12.2007 11:05, insgesamt 1-mal geändert.
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Probier das von edel bitte mit z.B.
hand = LoadCursorFromFile_("Garden.ico")
anstelle von hand = LoadCursor_(0,#IDC_HAND)

Funktioniert prima :allright:

http://www.purebasic.fr/german/viewtopi ... 292#180292

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag 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...
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag 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.
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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 :wink:

[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
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Die Cursor muss 32x32 groß sein, nicht 20x20.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag 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?
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Exakt.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten