Salut !
J'utilise un CImageList pour afficher des images dans une CComboBox : ça permets à l'utilisateur de mon application de sélectionner une image.
Cette image je veux par la suite pouvoir la récupérer et l'afficher en réajustant dynamiquement sa taille. Je n'ai malheureusement pas trouvé de méthode de CImageList la permettant. Sachant comment le faire avec un CBitmap je suis donc parti sur une solution durant laquelle je construirai un CBitmap connaissant la CImageList et l'index de l'image qui m'intéresse.
J'ai donc utiliser la fonction GetImageInfo qui est sensée me permettre de remplir la structure suivante :
A partir de là je récupére hbmImage pour créer un CBitmap avant de l'afficher comme je le souhaite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 typedef struct _IMAGEINFO { HBITMAP hbmImage; HBITMAP hbmMask; int Unused1; int Unused2; RECT rcImage; } IMAGEINFO, *LPIMAGEINFO;
J'ai donc tenté de faire comme ça, cependant bien que le CRect rempli dans la stucutre soit cohérent avec ce que je peux attendre, hbmImage contient (selon Visual) "Expression cannot be evaluated" ... moi pas comprendre ...
Voici mon code (même si je ne pense pas que ça puisse trop aider) :
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 IMAGEINFO Info; this->m_listeimage.GetImageInfo(this->idPicto, &Info); //get a memory dc object CDC dcMem2; //create a compatible dc dcMem2.CreateCompatibleDC(dc); // Select the bitmap into the in-memory DC //Select the bitmap into the dc CBitmap * bm; bm = CBitmap::FromHandle(Info.hbmImage); CBitmap* pOldBitmap = dcMem2.SelectObject(bm); dc->TransparentBlt( lpDrawItemStruct->rcItem.left+2, lpDrawItemStruct->rcItem.top+6, (Info.rcImage.right-Info.rcImage.left)*3/5, (Info.rcImage.right-Info.rcImage.left)*3/5, &dcMem2, Info.rcImage.left, Info.rcImage.top, Info.rcImage.right-Info.rcImage.left, Info.rcImage.bottom-Info.rcImage.top, NULL);
Partager