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

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

11

24.11.2012, 17:30

Du übergibst ein NULL als lpParam bei CreateWindow und versuchst das dann auf ein Game zu casten und zu benutzen... klar knallt das und der Debugger hätte dir das auch direkt angezeigt, dass du da NULL drin stehen hast.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

24.11.2012, 17:33

Ist ja auch ganz klar; wie ich mir schon gedacht hab, übergibst du an CreateWindowEx als letzten Parameter NULL. Wie genau soll das denn funktionieren!? In CGame::StaticWndProc packst du im WM_CREATE Handler den an CreateWindowEx übergebenen lpParam (genau das steckt in diesem ominösen CREATESTRUCT) in den User Pointer deines Fensters, um ihn von da an als Thispointer für den Aufruf von CGame::WndProc zu benutzen. Der Wert muss aber von irgendwo herkommen. Du musst also den Pointer auf dein CGame als letzten Parameter bei CreateWindowEx angeben. ;)

Btw: CreateWindowEx sendet vor dem WM_CREATE schon ein paar Nachrichten an die Fensterprozedur, du musst also generell den Fall bedenken, dass die GWL_USERDATA noch nicht gesetzt wurde...

Mit "vermüllten Speicherplatz" (was auch immer das genau sein soll) hat das alles jedenfalls nichts zu tun, der Fehler ist schlicht und einfach, dass du da ständig eine Methode auf einem Nullpointer aufrufst und spätestens wenn diese Methode mal auf einen Member (cam) zugreifen will, knallts natürlich...

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (24.11.2012, 17:40)


13

24.11.2012, 17:48

Okey danke euch beiden.
Wenn ich ehrlich bin, wusste ich gar nicht, was diese "Scheiße" bezwecken sollte. Ich habe es mir einfach rauskopiert um damit rumhantieren zu können.
Jetzt werde ich wohl dieser Funktion bzw. diesem Schritt viel Aufmerksamkeit verleihen ;)

lg. denniro
Only God can judge me.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

24.11.2012, 17:50

Ich habe es mir einfach rauskopiert [...]

Das war noch nie eine gute Idee... ;)

15

24.11.2012, 18:03

Ich habe es mir einfach rauskopiert [...]

Das war noch nie eine gute Idee... ;)


Jo stimmt, wobei mir der Code richtig ominös vorkam xD
Richtig dumm alles rumzucasten und vorallem gibt es keinen Zusammenhang und wozu zum Gaier immer auf den einen Zeiger casten?
Naja ist egal.
Ich mache sie wohl außerhalb der Klasse.
Mir fällt keine Lösung ein, wie ich sie schön sauber in der Klasse verpacken könnte.
Only God can judge me.

Werbeanzeige