Ich habe mir eine ziemlich lange Funktion im WM_PAINT eines Fensters gebastelt
Ganz zu Anfang steht da
Normal wäre, die Bitmap füllen, BitBlt nach hdc und dann mit DeleteDC() wieder löschen
Nun habe ich aber zwischen Create und Delete ein Stück Code stehen
Im case x würde ich gerne die HDC und die HBITMAP resetten, sprich was auch immer da drin ist auf NULL setzen und beides neu füllen
Probiert habe ich einfach
Aufgefallen ist mir dabei zuerst mal, wenn die neue BITMAP kleiner ist als die Alte, muss ich den Überschuss extra löschen, mit
Damit funktioniert das Ganze nun, ich habe nur Bedenken, dass ich dabei ein Speicherleck erzeuge, und ich wüsste gern, wie ich die HDC und HBITMAP "sauber" resetten kann ohne das handle zu verlieren
DeleteDC() geht jedenfalls nicht, weil sie dann unterhalb vom switch() nicht mehr vorhanden ist
Ganz zu Anfang steht da
Code:
HDC hdc = BeginPaint(MyWindow, &ps);
HDC IrgendwasDC = CreateCompatibleDC(hdc);
HBITMAP IrgendwasBitmap = CreateCompatibleBitmap(hdc, 300, 200);
Normal wäre, die Bitmap füllen, BitBlt nach hdc und dann mit DeleteDC() wieder löschen
Nun habe ich aber zwischen Create und Delete ein Stück Code stehen
Code:
while(irgendwas)
{
switch(sonstwas)
{
case x:
{
// Hier habe ich das Problem
}
break;
}
}
Im case x würde ich gerne die HDC und die HBITMAP resetten, sprich was auch immer da drin ist auf NULL setzen und beides neu füllen
Probiert habe ich einfach
Code:
IrgendwasDC = NULL;
IrgendwasBitmap = NULL;
IrgendwasDC = CreateCompatibleDC(hdc);
IrgendwasBitmap = CreateCompatibleBitmap(hdc, x, y);
Aufgefallen ist mir dabei zuerst mal, wenn die neue BITMAP kleiner ist als die Alte, muss ich den Überschuss extra löschen, mit
Code:
InvalidateRect(MyParentWindow,NULL,false);
Damit funktioniert das Ganze nun, ich habe nur Bedenken, dass ich dabei ein Speicherleck erzeuge, und ich wüsste gern, wie ich die HDC und HBITMAP "sauber" resetten kann ohne das handle zu verlieren
DeleteDC() geht jedenfalls nicht, weil sie dann unterhalb vom switch() nicht mehr vorhanden ist
Zuletzt bearbeitet: