Mauszeiger wird zum Wait-Cursor
-
Hallo,
ich habe den Anfang eines 2D-Spiels (Vollbild) vor mir.
Das Programm funkt soweit, nur verwandelt sich der Cursor - beim Start - zur Sanduhr, obwohl ichwcx.hCursor = LoadCursor( hInst, IDC_ARROW);
angegeben habe.
Ich denke es liegt an der Endlosschleife, doch wie kann ich das ändern??
-
Normalerweise geht der Warte-Cursor weg sobald man Nachrichten verarbeitet.
Du brauchst also eine Nachrichten-Schleife.
Wenn du jetzt keine hast... sieht das üblicherweise so aus:void MeinSpieleLoop() { while(1) { TuIrgendwas(); // Nachrichtenschleife: { MSG msg; while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } } } }
-
Die Nachrichtenschleife hab ich schon. Das bringt bei mir nichts.
Ich habe auch schon versucht den oben genannten Code in die Schleife einzusetzen, aber das war es auch nicht.Kennt denn niemand das Problem?? Oder ist das zu simpel??
-
Also bei mir ist das auch, aber sobald ich den Mauszeiger ein bisschen über dem Fenster bewege, wird er zum normalen Cursor.
EDIT:
Hat vielleicht was mit der redraw eigenschaft der WNDCLASS zu tun?...
-
Ich kann mich nichtmehr genau erinnern, ist schon zu lange her. Es gab da einige Eigenheiten...
Versucht mal
* WM_SETCURSOR zu überschreiben
* gleich nach dem öffnen des Fensters selbst ein ::SetCursor aufzurufen
-
Ich glaube aber, du musst HREDRAW | VREDRAW setzen.
-
@ceplusplus: was soll das genau sein?
@hustbaer: Ja, mit ::SetCursor in der Schleife läufts
wie kann ich eigentlich einen eigenen Cursor mit einbinden (ohne andere Dateien) ?
Bei meinem Versuch
wcx.hCursor = LoadCursor( hInst, "cursor.cur");
wird gar kein Cursor angezeigt.
thx,
XCoder++
-
zu 1: Lies dir mal ein Buch über die Winapi durch, das sind Fenstereigenschaften
zu 2: Ressourcen? Welcher Comnpiler?/Buch schon gelesen...
-
langeweile schrieb:
zu 1: Lies dir mal ein Buch über die Winapi durch, das sind Fenstereigenschaften
Ok, werd ich demnächst machen... :p - wenn ich eins habe
langeweile schrieb:
zu 2: Ressourcen? Welcher Comnpiler?/Buch schon gelesen...
Was willst du mir damit sagen?
Kann man Cursor nur mit *.rc Dateien einbinden?
Ich hab den VC++ Compiler und folgende Bücher:
*C/C++: Die Referenz | ISBN: 9783827242273 (C/C++ Die Referenz, Louis)
*Spieleprogrammierung mit DirectX und C++ | ISBN: 9783898428279 (Spieleprogrammierung mit DirectX und C++, Kaiser & Lensing)
-
XCoder++ schrieb:
@hustbaer: Ja, mit ::SetCursor in der Schleife läufts
Ja, klar dass es mit ::SetCursor in der Schleife läuft, das sollte aber eigentlich nicht notwendig sein.
Ich meinte ein einmaliges ::SetCursor.
-
XCoder++ schrieb:
langeweile schrieb:
zu 2: Ressourcen? Welcher Comnpiler?/Buch schon gelesen...
Was willst du mir damit sagen?
Kann man Cursor nur mit *.rc Dateien einbinden?Ja, in der rc steht der Pfad zur cur-Datei, hab aber grad kein Beispiel...
€: jetzt schon:
rc:
#include <windows.h> ... maus CURSOR maus.cur ...
wc.hCursor = LoadCursor(hInstance, "maus");
-
Danke für alle Antworten!
Übrigens:
Der Fehler mit dem Warte-Cursor war dumm von mir. Es müsste richtig heißen:wcx.hCursor = LoadCursor( NULL, IDC_ARROW);
Dann braucht man gar kein ::SetCursor ...
MfG,
XCoder++
-
Hehe, ja.
Ich sagte ja ich kann mich nichtmehr genau erinnern.
Ich glaube das seltsame Verhalten was ich mal hatte war wenn man dem Fenster beim Erstellen 0 als Cursor mitgiebt - dann muss man IIRC WM_SETCURSOR selbst behandeln.