Problème saturation mémoire avec screenshot

Résolu
cs_sidhannowe Messages postés 75 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 11 décembre 2007 - 4 juil. 2005 à 01:46
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 4 juil. 2005 à 20:18
Bonjour,



Je réalise un screenshot régulièrement (ttes les 500ms) grace à un timer, le code qui génère le screenshot est le suivant:



HWND pWnd = GetDesktopWindow();

HBITMAP bitmap;

HDC dc = GetWindowDC(pWnd);

HDC hdc;

hdc=CreateCompatibleDC(dc);



int ScreenWidth = GetDeviceCaps(dc, HORZRES);

int ScreenHeight = GetDeviceCaps(dc, VERTRES);



bitmap=CreateCompatibleBitmap(dc, ScreenWidth, ScreenHeight);



SelectObject(hdc,bitmap);

BitBlt(hdc, 0, 0, ScreenWidth,ScreenHeight, dc, 0, 0, SRCCOPY);



Mon problème est que visiblement la mémoire occupée par le programme
augmente de manière constante et que au bout d'environ 1 min, le
screenshot ne s'effectue plus (visiblement l'erreur se trouve dans la
création des DC). Je suis sur que c'est cette partie du programme qui
pause problème. Qqun a une idée ?



Merci pour votre aide.

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 juil. 2005 à 08:08
DeleteObject(bitmap); aussi
3
cs_sidhannowe Messages postés 75 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 11 décembre 2007
4 juil. 2005 à 01:47
J'ai oublié de noter les deux deletedc:



DeleteDC(hdc);

DeleteDC(dc);



Meme avec eux ca n'arrange pas le problème.
0
cs_sidhannowe Messages postés 75 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 11 décembre 2007
4 juil. 2005 à 12:44
Ok merci ca à l'air d'etre ca, je n'ai visiblement plus de problème de
screenshot ni de mémoire sauf que ca augmente encore mais très
légèrement (ce que je trouve pas normal). Normalement lorsque la
fonction est terminée ca libère la mémoire automatiquement de ttes les
variables de la fonction non ?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 juil. 2005 à 20:18
Bien sur que non, comment la mémoire pourrait elle être libérée
automatiquement? Un HBITMAP est juste un pointeur vers une zone
mémoire, c'est celle ci que tu libères en utilisant DeleteObject
0
Rejoignez-nous