LoadCursor Problem
-
Hi,
möchte für meinen Dialog einen anderen Cursor laden.
Leider klappt folgender Aufruf nicht:
wc.hCursor = LoadCursor(hInstance,MAKEINTRESOURCE(IDC_CURSOR));Was kann ich da falsch machen?
IDC_CURSOR ist ein normaler Cursor in der Resource-Datei.mfg
Fred
-
Ist die WNDCLASS da die WNDCLASS deines Hauptfensters oder des Dialogs?
cya

-
Ich knüpfe mal hier an, da ich das gleiche Problem habe. Ich habe einen Cursor erstellt (als "Cursor.cur" gespeichert), IDC_CURSOR definiert und folgenden Code produziert:
IDC_CURSOR CURSOR "Cursor.cur"wc.hCursor = LoadCursor( hInstance, MAKEINTRESOURCE(IDC_CURSOR));Warum wird der Standart-Cursor angezeigt, nicht mein eigener?
-
Sollte eigentlich passen.
LoadCursor( )wird übrigens ersetzt durchLoadImage( ):HCURSOR cursor = reinterpret_cast< HCURSOR >( LoadImage( instance, MAKEINTRESOURCE( IDC_CURSOR ), IMAGE_CURSOR, LR_DEFAULTSIZE, LR_DEFAULTSIZE, LR_DEFAULTSIZE ) );Was sagt
GetLastError( )?greetz, Swordfish
-
Moin,
normal müßte dein Cursor zu sehen sein, solange die maus nicht bewegt wird. Nach einer Mausbewegung ist wieder der Standard Cursor zu sehen.Mit nachfolgendem Code klappt es bei mir.
Aber dazu habe ich trotzdem eine Frage. Ich möchte den animierten Mauszeiger in der Exe einbinden. Wie geht das, und wie rufe ich den dann auf ??
LoadCursorFromFile geht dann ja nicht oder ??// Animierten Cursor laden
// Wird aus PGM Verzeichnis geholt
cursor = LoadCursorFromFile("at.ani");
if( cursor == NULL) // Fehler
{
TRACE("Fehler: Der Cursor konnte nicht geladen werden, fehler code: %d\n",GetLastError());
}}
SetCursor(cursor);
// Klasse registrieren !!
::SetClassLong( *this, GCL_HCURSOR, (LONG) cursor);
-
Also mein 1. Problem hat sich jetzt gelöst, mein Cursor wird angezeigt.
Wie bestimme ich einen spezifischen Cursor bei Dialog-Buttons?
Bis jetzt wird bei mir der standartmäßige Windows-Pfeil angezeigt, wie ändert man das?
-
Bei meiner Suche habe ich das hier gefunden.
Davon verstehe ich jedoch nicht den Code, außerdem will ich ja alle Cursor in meinem Programm ändern.
Wenn ich das richtig verstanden habe sollte das ja mit SetClass funktionieren, aber wie?
Muss ich erst eine Klasse für bspw. Buttons erstellen?
Ich habe es mit folgendem Code versucht:SetClassLong( hwndDlg, GCL_HCURSOR, LONG(cursor));hwndDlg: HWND vom Dialog -> hier muss eine Klasse her, richtig?
Was benötige ich, um bei Buttons, Menüs etc. einen bestimmten Cursor anzeigen zu lassen?
-
SetClassLong ist ein No-No! Es ist ein Holzhammer den man nicht empfehlen kann.
Du musst die Fenster subclassen und selber WM_SETCURSOR behandeln. Jedes Fenster entscheidet selbst, welchen Cursor es darstellen will.
Menüs sind wieder eine eigene Sache, denn hier werden wieder eigene Fenster verwendet.Mal eine Frage: Warum willst Du die default UI verändern. Was ist der Benefit für den Kunden, außer dass er irritiert wird?
-
Danke für die Antworten.
Mal eine Frage: Warum willst Du die default UI verändern. Was ist der Benefit für den Kunden, außer dass er irritiert wird?
Ich bin dabei (privat!) ein Spiel zu proggen (der Rest sollte sich von selbst verstehen) ...

-
Nein das verstehe ich nicht. Selbst wenn ich privat etwas programmiere versuche ich mich an die GUI Standards zu halten...