hWnd adresse ungültig (0x000000)
-
seit tagen habe ich ganz normal mit einer klasse gearbeitet die ich von CWnd abgeleitet habe. heute muss ich auf einmal festellen das das programm abstürzt. hatte dieses unerklärliche problem schon des öfteren und weiß nicht woran es liegt.
in OnInitDialog() rufe ich ganz normal funktionen meines objektes auf und verändere ein par werte (das objekt wurde hier mit new erzeugt, die adresse habe ich in einer referenz var. gespeichert). später reagiere ich auf den benutzer und rufe wieder eine funktion aus meinem objekt auf.
genau da stürtzt es ab. die adresse meines objektes scheint immer noch in ordnung zu sein (habe gedebuggt), aber der hWnd member ist auf einmal ungültig !?!?
-
Vielleicht wäre ein wenig Code nicht schlecht.
War denn das Handle vorher gültig?
-
Übergibst du denn den this Pointer bei der Konstruktion deiner von CWnd abgeleiteten Klasse?
-
ja, this zeiger wurde übergeben.
quellcode ist schwer, da es sehr viel ist. glaube auch wirklich nicht das er hilft, da:
ich verwende die funktion in mehreren programmen. bei allen programmen gehts, nur bei dem einen halt nicht. und ich behandle wirklich alles gleich.
das ist das komische daran.
-
Dann ist dir schwierig zu helfen. Versuch vielleicht nochmal ein neues Projekt anzulegen und kopier nochmal alles hinein. Ob es dann funktioniert? Vielleicht auch ein Bug von VS?
-
Hallo, an Bugs glaube ich erst einmal nicht, denn das wäre doch zu einfach. Vielleicht ist der Zeiger doppelt vorhanden (z.B. in verschiedenen Klassen), und es wurde dort der andere nicht initialisierte Zeiger verwendet. Am besten mit dem Debugger die Stelle suchen und Werte und Aufrufreihenfolge auswerten.
Viel Spaß
-
habe nur wenig aufrufe des objektes im quellcode.
die adresse meines objektes ändert sich nicht. es wird auch immer in der selben klasse verwendet (wobei das ja eigentlich egal sein sollte).
die klasse ist folgendermassen abgeleitet:
CDieKlasse -> CAndereKlasse -> CNochEine -> CDialog
-
habe es hingekriegt ^^
vermute es war wirklich so, dass ich mehrere objekte hatte da ich es so gelöst habe:
hatte in der header file vergessen
#ifndef MEINE_KLASSE_ #define MEINE_KLASSE_ // ... #endif
danach ging es. mir ist nur rätselhaft warum es bei allen anderen programmen lief !?!?
-
Aber die Headerdatei deklariert doch nur?! Oder hattest du dort schon ein Objekt definiert?
Jo, und das das in den anderen Programmen lief ist schon seltsam.
Aber gut, dass du das jetzt hinbekommen hast.
-
hatte zwischen den defines natürlich noch die klasse mit dem objekt unter anderem definiert.
das coole:
in einem anderen programm hatte ich auch noch so einen fehler, der jetzt auch weg istdas schlechte:
der eine fehler im anderen prog ist jetzt weg, aber ein neuer in der art ist schon wieder gekommen. zweifle jetzt echt langsahm an vs *grml*mache dazu aber nen neuen tread auf -.-