animierte Cursor setzten
-
Hallo Leute,
Ich versiche gerade einen animierten Cursor "default.ani" zu laden :
SetCursor(LoadCursorFromFile("default.ani"));
aber nichts passiert. Wieso wird der Cursor nicht geändert ?
Danke im Voraus
Gruss Linus
-
kriegste von LoadCursorFromFile auch was gültiges zurück?
rufst du das auch in WM_SETCURSOR auf?
-
Hi
WM_SETCURSOR war das Sticwort.
BOOL CSonChatDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { // TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard. if(m_bCursor) return TRUE; else { m_bCursor=TRUE; SetCursor(m_cursor=LoadCursorFromFile("default.ani")); return TRUE; } return CBDialog::OnSetCursor(pWnd, nHitTest, message); }
So funtioniert's
Membervariable : bool m_bCursor
und in InitDialog m_bCursor=FALSE setzenDanke und Tschüs
Linus
-
Super
Aber lad den Cursor am besten nur einmal am Anfang deines Programms oder des Dialogs. Sonst erzeugst du bei jedem Aufruf von LoadCursorFromFile ein Memory Leak.
In der Dokumentation steht zwar das man das nicht freigeben muss, das ist aber falsch.
-
irgendwie sieht dein code auch komisch auf. du machst das SetCursor ja nur beim ersten aufruf so wie ich das seh.
-
Hallo
zu Früh gefreut
Recht hast Du, habe es soweit geändert , dass die Datei nur einmal geladen wird.
Aber irgendwie verlier ich immer wieder den Cursor wenn ich ein anderen Dialog öffne. Dann habe ich nämlich wieder den alten Cursor. Muss ich in OnPaint immer wieder den Cursor neu setzen ? Irgenwie hab ich die Logik dahinter noch nicht ganz richtig verstanden.gruss
(verzweifelter) Linus
-
nein nicht in OnPaint, sondern immer in OnSetCursor.
BOOL CSonChatDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { SetCursor(m_cursor); return TRUE; }