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 : 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
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 ). 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 )