cursor-id
-
Mag vielleicht lächerlich klingen aber ich werd nicht ganz schlau aus den Zitaten:
Ich soll bevor ich irgendwas veränder SetCursor(NULL) anwenden und danach in WM_SETCURSOR verhindern das nach jeder Bewegung wieder der ursprüngliche Cursor gezeigt wird
Vielleicht noch ein Hinweis
?
-
// Du sollst bei... WNDCLASSEX wcex; wcex.lpszClassName="MeineFensterKlasse"; wcex.lpfnWndProc=WindowProc(); // ...das da auf NULL setzen: wcex.hCursor=NULL;
-
Bringt aber nicht wirklich was wenn ich
winclass.hCursor = NULL;
mache?Ich hab das Gefühl ich mache irgendwas grundsätzlich verkehrt?
-
...und die WM_SETCURSOR abfangen
oder für ne Fensterklasse kann man auch SetClassLong() verwenden um den Cursor zu ändern...
-
SetClassLong(hwnd, GCL_HCURSOR, (LONG) LoadCursor(hinstance, MAKEINTRESOURCE(IDC_BLUEARROW)));
Klappt auch nicht, er ändert den Cursor nimmt aber nen standardwindowscursor
?!
-
Also bei mir funktioniert das so aber! Wird der Cursor evtl. nicht richtig geladen, weil hinstance ungültig ist
-
Ich gebs auf ich find den Fehler nicht, ich hab schon zig verschiedene Dinge probiert, der Cursor wird zwar geändert allerdings immer in einen standard Windowscursor.
Hier ist der Code, schau mal bitte ob du siehst woran es liegt flenders
http://mitglied.lycos.de/inselkampf/c++/Code.zip
(ist etwas größer da ich die sounds nicht entfernt habe)
Hoffe du kannst mir helfen, die Stelle wo der Cursor geändert werden soll wird doch vier Kommentarreihen gekennzeichnet, alternativ die Stelle steht an Zeile 133.
Gruß
Nagetier
-
Die Sounds komen mir irgendwie bekannt vor - nur von wem? LaMothe?
Der Fehler liegt wohl, wie schon vermutet, daran, dass hinstance ungültig ist. Du musst es entweder über die Fenster-Klasse holen, oder in WinMain bzw. in WM_CREATE der globalen Variable den entsprechenden Wert zuweisen
-
sorry ich bekomms nicht hin, bin in der hinsicht ein neuling.
das selbe problem hab ich jetzt auch noch in anderer form, ich will ein paar steuerelemente ausgeben und sie außerhalb von winmain erstellen ( per funktion).
dafür musste ich hwnd global machen, aber sie werden dennoch nicht gezeichnet. wie weise ich hwnd oder hinstance einen gültigen wert zu?! was muss ich dafür in wm create tun?
-
Entweder du speicherst den an WinMain im ersten Parameter übergebenen Wert in einer globalen Variablen, oder du speicherst ihn in WM_CREATE (dort bekommst du ihn mit ((LPCREATESTRUCT)lParam)->hInstance ) in einer globalen oder in einer in WndProc statischen Variable.
Alternativ kannst du dir hInstance auch bei Bedarf direkt über GetWindowLong(hWnd,GWL_HINSTANCE) bzw. GetWindowLongPtr(hWnd,GWLP_HINSTANCE) holen