Farben verschwinden
-
und was soll ich dort dann reinschreiben??
Habe doch zum zeichen der Farben
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) benutzt, und keine OnPaint() function
-
maRKus23 schrieb:
Welches Objekt verursacht dieses Speicherleck?
hbr 1 - 4
müssen alle mit DeleteObject freigegeben werdne.
das kannst du natürlich nicht in OnCtlColor machen.
-
und wo soll ich sie dann freigeben?
-
im Konstruktor erstellen und im Destruktor freigeben zum Beispiel.
-
Ok, danke!!
Das hat aber aller dings auch noch nicht mein Problem gelöst.
-
Visual C++ 6 in 21 Tagen
[url=http://www.hki.uni-koeln.de/teach/ss06/PS_C++/tag23/21/kap10.htm]Tag 10
SDI-Anwendungen[/url]
kuck mal dort evtl hilft dir das ja ich glaub nämlich schon das du die OnDraw bzw OnPain Function überschreiben must in dem beispiel sorgt nämlich die OnDraw dafür das alles wieder gezeichnet wird sobald du den dialog hervorholst
-
Soweit funktionierts nun, also doch nichts mit neuzeichnen.
Vielen Dank an """""""!!
Nur hab ich jetzt ein neues problem, wenn ich das Debuggen beende, gibts ein Fehler mit der Leseposition und er springt an folgende Stelle:static int __cdecl CheckBytes( unsigned char * pb, unsigned char bCheck, size_t nSize ) { int bOkay = TRUE; while (nSize--) { if (*pb++ != bCheck) { /* Internal error report is just noise; calling functions all report results - JWM */ /* _RPT3(_CRT_WARN, "memory check error at 0x%p = 0x%02X, should be 0x%02X.\n", */ /* (BYTE *)(pb-1),*(pb-1), bCheck); */ bOkay = FALSE; } } return bOkay; }springt auf
if (*pb++ != bCheck)was soll das denn heißen?
-
@ LowFly: Lag wohl doch an dem Speicherleck
-
maRKus23 schrieb:
@ LowFly: Lag wohl doch an dem Speicherleck
Der Farbverlust war ein deutliches Zeichen dafür.

-
trotzdem bekomm ich jetzt diese Zugriffsverletzung.
und ich habe keine Ahnung warum.
-
Wie sieht denn der Callstack aus?
Welcher von deinem Code ist da gerade dran?(Was ein Callstack ist und wie man debugged findest du da.)

-
Na denn werde ich mir das mal bis morgen durchlesen, jetzt mache ich erstmal Feierabend.

Also könnte es sein das noch etwas auf dem Stack liegt wenn ich das Programm beende?
Diese Meldung kam ja erst als ich hbr1-hbr4 auf dem Heap erzeugt habe.

-
Hab mein Problem gelöst!! ^^
//Im Konstruktor hbr1 = NULL; hbr1 = CreateSolidBrush(RGB(0, 0, 0)); //Im Destruktor DeleteObject(hbr1);mein Problem bestand darin das ich delete anstatt DeleteObject verwendete.
Dazu noch 2 kleine Fragen:
-Was ist der Unterschied zwischen delete und DeleteObject?
-Was bedeutet GDI im Kontext mit GDI-Object?
-
Erstmal: Das "hdr1=NULL;" ist überflüssig, weil du den Brush sofort danach korrekt initialisierst.
maRKus23 schrieb:
-Was ist der Unterschied zwischen delete und DeleteObject?
delete löscht nur das Objekt selber, DeleteObject teilt auch deinem System mit, daß das Objekt nicht mehr existiert (andernfalls würde es beim Aufräumen nochmal versuchen, es zu löschen).
-
Danke CStoll!!
Und was heißt GDI?
-
Graphics Device Interface - frei übersetzt "Schnittstelle für Grafikgeräte".
-
-
Danke an alle die mir weiter geholfen haben!