Seltsame 6 Minuten Fehler!

Nabi

Erfahrenes Mitglied
Hi, ich habe ein problem mit WM_PAINT loop , Es läuft OK aber für Ungefähre 5-6 Minuten
und dann LoadImage scheitern wird , Keine weitere Loads , das Bild wird nicht mehr geladen
und so alle Aufgaben in die WM_PAINT loop , die von dem Bild abhängig sind
Scheitern wird , alle TextOut Grafiks weiter erscheinen
nur das Bild wird nicht mehr geladen, ich konnte keine erklärung finden Warum die LoadImage funktion Jedesmal nach ungefäre 5-6 Minuten ausführungszeit scheitern.

Code:
case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hDC=0;
            hDC=BeginPaint(hWnd,&ps);
HDC hram = CreateCompatibleDC(hDC);

hImage1=LoadImage(GetModuleHandle(NULL),"boat3.bmp",IMAGE_BITMAP,420,420,LR_LOADFROMFILE );
SelectObject(hram, hImage1);

BitBlt(hDC,si1,134,420,420,hram,0,0,SRCCOPY);
.


. // Hier befindet sich weitere funktionen
.

         EndPaint(hWnd,&ps);

   return 0;
   break;
            };

Die WM_PAINT Loop ist auch durch die Mausklick aufrufbar , Während die arbeit lade ich die Grafiks in case WM_LBUTTONDOWN: So

Code:
RECT r1={540,130,970,560};
InvalidateRect(hWnd,&r1,FALSE);
UpdateWindow(hWnd);

aber wie gesagt , das Programm Läuft Wunderbar für Max 6 Minuten
es wird Keine Fehler Meldung angezeigt.
 
Zuletzt bearbeitet:
Vermutlich geht dir der Speicher für die GDI-Objekte aus. GDI-Objekte müssen nach ihrer Benutzung freigegeben bzw. gelöscht werden. In deinem Fall dann so:
C++:
HDC hram = CreateCompatibleDC(hDC);

//...

DeleteDC(hram);
C++:
HBITMAP hOldImage1 = SelectObject(hram, hImage1);

//...

SelectObject(hram, hOldImage1);
DeleteObject(hImage1);
Gruß
MCoder
 
und Tatsächlich, es war ein Speicher probleme, mit DeleteDC(hram); Und
DeleteObject(hImage1); ist das Probleme gelöst.. Danke.
 
Zurück