Curser monochron
-
Hallo,
Ist das eine weitere .NET-Einschränkung (gibt ja ein paar) oder kann man einem Control einfach keinen farbigen Cursor übergeben? Ich hab ein von PictureBox abgeleitetes Control und würde dem gerne (entsprechend dem gewählten Tool) einen neuen Cursor verpassen, aber er macht sie immer monochron (auch wenn sie in Farbe vorliegen). Die Cursors erstelle ich mit Axialis AX-Cursors, füge sie als Embedded Resource im Solution Explorer ein und übergebe so den Cursor aus den Resourcen:
System.Reflection.Assembly thisExe = System.Reflection.Assembly.GetExecutingAssembly(); Stream file = thisExe.GetManifestResourceStream("PfadInDenResources.cross.cur"); this.Cursor = new Cursor(file);
Google, Codeproject, Codeguru und die Forumsuche wurden schon betätigt. Hat jemand eine Idee warum das so ist?
PS: Auf der Arbeit haben wir (noch) Windows2000, könnte es eventuell daran liegen? Hatte auch schon Probleme mit Toolbars die Alpha-Transparenz unterstützen sollten.
-
Das Problem ist Microsoft auch bekannt und es wird auch in den Referenzen angegeben, dass die Cursor-Klasse nur monochrome, nicht animierte Cursors unterstützt. Es gibt da ein simples Workaround über die Win32API. Du benutzt einfach LoadCursorFromFile um ein Handle auf einen Cursor zu erhalten und erstellst dann über den Cursor-Konstruktor anhand dieses Handles einen Net-Cursor. Das ist zwar etwas umständlich, weil dein Cursor ja als Resource vorliegt, da musst du dir dann noch was einfallen lassen, da außerdem die NET-Ressourcen ja nicht mit den API-Ressourcen nicht kompatibel sind
public class Win32Interop { [DllImport("user32.dll",EntryPoint = "LoadCursorFromFileW",CharSet = CharSet.Unicode)] private static extern IntPtr LoadCursorFromFile(String str); }
IntPtr CursorHandle = LoadCursorFromFile("123.cur"); if (CursorHandle != IntPtr.Zero) { myCursor = new Cursor(CursorHandle); }
-
Hallo master_of_x32
Danke für deine Antwort und den Lösungsvorschlag. Ich habe zwar den Artikel zur Cursor-Klasse gelesen aber kann mich nicht erinnern dort etwas gesehen zu haben was damit zusammenhängt. Jedenfalls weiss ich jetzt wie es gehen würde wenn ich mal zwingend farbige Cursors brauche, die derzeitige Applikation kommt auch ohne gut aus.
-
Hier ist der Link, bei "Ask Dr. GUI"
http://msdn.microsoft.com/library/default.asp?url=/archive/en-us/dnaraskdr/html/askgui11182003.asp