Trouver le HDC

Signaler
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004
-
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004
-
Bonjour à tous. Voilà je suis sur un programme en c++ et je me trouve dans une interface dans laquelle je veux faire apparaitre des images réduites. Je réussis à reduire mes images mais il faut a tout pris que j ouvre celle ci en taille originale avant et que je l efface apres. Malheureusement cette méthode d'ajout et d'effacement peut cacher totalement mes images réduites si celle ci est grosse.
J ai donc chercher sur le net est j ai trouvé une méthode qui necessite pas l affichage de l'image et qui utilise la méthode StretchBlt comme moi. Malheureusement cette méthode utilse un
HDC hdc=GetDC(NULL) ,
moi cette fonction retourne un CDC * et ne veut pas de paramètre , résultat ca plante à chaque fois . De plus la fonction StretchBlt ne veut pas les même paramètres. Je sais pas si il faut travailler dans une classe précise, ou une view, in doc.. Quelqu'un pourrait t il m aider svp.....
Merci d 'avance

5 réponses

Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
C'est un api windows, il n'y a pas de classe
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
GetDC()->m_hDC;
ou bien
::GetDC(0);
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004

Merci le GetDC()->m_hDC marche, je cherche encore pour bien afficher mais là ca m aide vraiment.
J ai juste une question en plus, dans la doc j ai:

StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop );

mais dans les notes trouvés le code c :

StretchBlt(hBmpDC1, 0, 0,100,100, hBmpDC2, 0,0,info.bmWidth,info.bmHeight,SRCCOPY );

les déclarations ne sont pas identique pourtant g trouvé qu une seule définition, y a une explication ? ou une doc en plus qui traine, ca pourrait aidé..
merci
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
L'explication est la même que pour GetDC: tu utilises les MFC, donc certaines fonction Win32 sont surchargées, et des méthodes de CDialog par exemple portent le même nom, et masquent donc les fonctions Win32. Le moyen d'éviter ces problème, est dans un premier temps de choisir si tu utilises les MFC ou pas. Si tu utilises les MFC, ton HDC sera un CDC, et tu auras la plupart du temps moins de code à taper. Si tu veux coder en Win32 normal, il faut que tu mettes :: devant chaque fonction surchargée, pour dire que tu va le chercher dans l'espace de noms global. Par exemple ::StretchBlt au lieu de StretchBlt. Je pense cependant que puisque tu fais un code avec les MFC, utilise toujours les classes existantes, et donc un CDC au lieu d'un HDC.
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004

Je te remercie vecchio56 pour tes explications et pour ton aide, maintenant c plus clair pour moi. Je comprenais pas qu'il y ai différentes déclarations pour chaque fonctions mais qu on nous en donnait qu une. Merci encore..