Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

30.06.2014, 18:00

[C++] Cursor liegt "unter" DirectX-Window... HILFE!

Hallo Leute!
Dies ist mein erster Post und ich bin in C++ aktuell noch nicht wirklich fortgeschritten, aber ich programmiere gerade eine Art eigenes Spiel. Ich benutze in meinem Code den DirectX-Wrapper von Chris Rook, DirectX 10 SDK und halt Microsoft Visual Studio Express 2013. Mein Problem ist, dass der Mauszeiger zwar da ist, aber sobald ich damit auf das Fenster mit meinem orangen Hintergrund zeige, ist er weg.. Ich kann nur die Position erahnen, weiss aber wo er sich befindet. Wenn ich mit dem unsichtbaren Zeiger klicke, dann kommt auch meine programmierte Meldung die die Position anzeigt, aber er ist halt nicht sichtbar... Wäre geil wenn ihr mir helfen könntet, ich verzweifele hier allmälig. Ich hab hier meinen ganzen Ordner dann könnt ihr direkt die "Microsoft Visual Studio Solution" öffnen, da ist alles weitere drin und ihr müsstet alles direkt sehen.
Vielen Dank im Voraus schon mal!

FSA

Community-Fossil

  • Private Nachricht senden

2

30.06.2014, 18:57

Zeile 242 wincode.cpp

C-/C++-Quelltext

1
ShowCursor(false);                                          // Hide Mouse Pointer

http://msdn.microsoft.com/de-de/library/…6(v=vs.85).aspx

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

3

30.06.2014, 20:05

Zeile 242 wincode.cpp

C-/C++-Quelltext

1
ShowCursor(false); // Hide Mouse Pointer

http://msdn.microsoft.com/de-de/library/…6(v=vs.85).aspx
Da muss ich dich leider enttäuschen. Diese Funktion wird ja nur ausgeführt, wenn der FullscreenFlag auf true ist, da habe ich auch schon als Ansatz eine MessageBox eingebaut, die aber auch nicht kommt. Auskommentieren bringt auch nichts, liegt nicht dran..

4

30.06.2014, 21:42

Windows setzt beim Betreten des Fensters immer als erstes den Zeiger, der in der Fensterklasse (WNDCLASSEX-Struktur beim Erzeugen des Fensters) eingetragen war. Trag dort mal LoadCursor(MAKEINTRESOURCE(IDC_ARROW)) ein.

Danach setzt Windows den Cursor der WM_SETCURSOR-Nachricht. Ich glaube nicht, dass die häufig überschrieben wird, aber könnte ja auch sein: Falls die NULL zurückgibt, ist der Zeiger ebenfalls unsichtbar.

Und, wie FSA schrieb: Der Zeiger darf nicht durch ShowCursor() ausgeblendet worden sein. Beachte auch, dass die Funktion einen Zähler führt: zwei Mal ShowCursor(false) muss auch zwei Mal durch ShowCursor(true) ausgeglichen worden sein damit der Zeiger sichtbar ist.

5

30.06.2014, 21:44

Schau dir doch nochmal dein handling vom WM_SETCURSOR event an.
Dann schaust du dir die Dok für SetCursor an und liest: " If this parameter is NULL, the cursor is removed from the screen." ;)
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

6

01.07.2014, 13:57

Ich habs gefunden!!

C-/C++-Quelltext

1
2
3
4
    case WM_SETCURSOR:
        SetCursor(NULL);
        return (0);
        break;

Danke trotzdem, Leute! Thread kann geschlossen werden!

Werbeanzeige