Probleme, objet GDI monte constament ds le gestionnaire de tache apres chaque On
gege1024
Messages postés138Date d'inscriptionvendredi 10 janvier 2003StatutMembreDernière intervention27 janvier 2009
-
14 juin 2005 à 20:51
gege1024
Messages postés138Date d'inscriptionvendredi 10 janvier 2003StatutMembreDernière intervention27 janvier 2009
-
31 déc. 2005 à 00:29
j'affiche une bmp issu des ressource comme ci-dessous.
le pb est que dans le gestionnaire de tache, je vois le nombre d'objet GDI monter constament a chaque OnPaint() de la fenetre, et vu que j'affiche bcp de bmp, mon appli bloque a peu prés de 12 rafraichissements (ce qui est trés peu !!!!!!)
CDC* pDC = GetDC();
CDC* pMemDC;
pMemDC = new CDC;
pMemDC->CreateCompatibleDC(pDC);
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 14 juin 2005 à 20:55
Il faut libérer le DC: pDC->ReleaseDC();
Tu est sur que delete pMemDC est suffisant? (je sais pas trop, est ce
qu'un DeleteObject est fait dans le destructeur? Je pense que oui mais
à vérifier).
cs_Denis007
Messages postés22Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention 7 octobre 2012 30 déc. 2005 à 03:38
Pour que ce code soit correct il faudrais aussi appeller la fonction releaseDC,
en effet quand vous demandez l'utilisation du DisplayContext de window et
même si, en même temps vous déclarer la variable, ceci vous demande aussi,
d'après les normes, car ce context d'affichage en le plus goumand en ressource,
de libérer ce handle qui augmente régulièrement...
Les méandres de windows sont ainsi définie...
ps : pouvez vous m'indiquer quel programme observe ainsi les handes du GDI.
cs_Denis007
Messages postés22Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention 7 octobre 2012 30 déc. 2005 à 21:54
Bonjour Gégé, je n'est pas remarqué d'information particulière dans le gestionnaire de tache a propos des objets du gdi, il n'affiche que la mémoire du processus, peut-être en avait vous déduit ceci de cela ?