[CImageList] Problème avec GetImageInfo
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 :
Code:
1 2 3 4 5 6 7
| typedef struct _IMAGEINFO {
HBITMAP hbmImage;
HBITMAP hbmMask;
int Unused1;
int Unused2;
RECT rcImage;
} IMAGEINFO, *LPIMAGEINFO; |
A partir de là je récupére hbmImage pour créer un CBitmap avant de l'afficher comme je le souhaite.
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) :
Code:
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); |
Merci d'avance.