[MFC] Comment enregistrer les élements d'un CImageList ?
Bonjour à tous,
Comme indiqué dans le titre du sujet, je souhaite enregistrer les éléments d'une imagelist. L'idée est que je récupère une CImageList quelconque et je dois générer X fichier(s) correspondant au X éléments de l'imagelist.
Pour l'instant je suis partis sur la solution suivante :
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| void CGen::createImage(CImageList * pList)
{
if(pList != NULL)
{
// parcours de toute l'imageList.
for(int i = 0 ; i < pList->GetImageCount() ; i++)
{
IMAGEINFO infos;
if( pList->GetImageInfo(i, &infos) == TRUE)
{
int iWidth = infos.rcImage.right - infos.rcImage.left;
int iHeight = infos.rcImage.bottom - infos.rcImage.top;
CImage image;
if( image.Create(iWidth, iHeight, 24) == TRUE )
{
image.Attach(infos.hbmImage);
if(image.MaskBlt( image.GetDC(),
CRect(0, 0, iWidth, iHeight),
CPoint(infos.rcImage.left, infos.rcImage.top),
infos.hbmMask,CPoint(0,0)) == TRUE)
{
CString strFileName;
strFileName.Format(_PATH_, i);
HRESULT hRes = image.Save(strFileName);
switch(hRes)
{
case E_OUTOFMEMORY:
case E_ABORT:
case E_FAIL:
case E_ACCESSDENIED:
break;
case S_OK:
{
// cas passant
}
break;
default:
{
}
}
}
}
else
{
}
}
else
{
}
}
}
} |
.. mais bien évidemment ca ne marche pas ( sinon je ne posrterai pas :wink: ). J'ai des assertions à la destruction de l'objet CImage
. Visiblement les handles ne sont pas bons vu les assertions mais je ne comprends pas comment utiliser les fonctions Attach(), Detach() et Destroy() ( et encore si je dois les utiliser :? )