Problème saturation mémoire avec screenshot [Résolu]

cs_sidhannowe 75 Messages postés lundi 27 octobre 2003Date d'inscription 11 décembre 2007 Dernière intervention - 4 juil. 2005 à 01:46 - Dernière réponse : vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

4 réponses

vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 4 juil. 2005 à 08:08
+3
Utile
DeleteObject(bitmap); aussi
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de vecchio56
cs_sidhannowe 75 Messages postés lundi 27 octobre 2003Date d'inscription 11 décembre 2007 Dernière intervention - 4 juil. 2005 à 01:47
0
Utile
J'ai oublié de noter les deux deletedc:



DeleteDC(hdc);

DeleteDC(dc);



Meme avec eux ca n'arrange pas le problème.
Commenter la réponse de cs_sidhannowe
cs_sidhannowe 75 Messages postés lundi 27 octobre 2003Date d'inscription 11 décembre 2007 Dernière intervention - 4 juil. 2005 à 12:44
0
Utile
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 ?
Commenter la réponse de cs_sidhannowe
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 4 juil. 2005 à 20:18
0
Utile
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
Commenter la réponse de vecchio56

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.