|
Eine ImageList verwaltet die Einzelbilder in Form von Bitmaps. Auf die jeweiligen Einzelbilder kann via ImageList_ExtractIcon ein Bild aus einer ImageList als eigenständiges Icon extrahiert werden. Soll das Image als Bitmap im Originalformat geliefert werden, muß eine neue Bitmap erzeugt werden, die als Funktionsergebnis retunierbar ist. Die Funktion IL_GetBitmap übernimmt als Parameter die betroffene ImageList und den Index des gewünschten Bildes.
HBITMAP IL_GetBitmap( HIMAGELIST hIL, int iIndex )
{
HDC hdcDST;
HBITMAP hbmDST, hbmOLD;
int cx, cy;
Als erstes ist die Größe der Bilder in der übergebenen ImageList zu ermitteln und eine kompatible Bitmap zu erzeugen.
ImageList_GetIconSize( hIL, &cx, &cy );
hdcDST = CreateCompatibleDC( NULL );
hbmDST = CreateBitmap( cx, cy,
GetDeviceCaps( hdcDST, PLANES ),
GetDeviceCaps( hdcDST, BITSPIXEL ),
NULL );
hbmOLD = SelectObject( hdcDST, hbmDST );
Auf die neu erzeugte Bitmap wird mittels ImageList_Draw das Image ausgegeben.
ImageList_Draw( hIL, iIndex, hdcDST, 0, 0, ILD_NORMAL );
In hbmDST steht jetzt das Einzelbild als Bitmap, die als Funktionsergebnis zurückgeliefert wird.
SelectObject( hdcDST, hbmOLD );
DeleteDC( hdcDST );
return hbmDST;
}
|