Bonjour,

je souhaiterais developper un CListCtrl avec la possibilité de spécifier la hauteur d'un item en mode Report.
A ma connaissance il existe plusieurs facons de le faire dont les principales sont
decrite sur ce site
http://www.codeproject.com/listctrl/changerowheight.asp.

J'ai implementé les solutions données et cela fonctionne bien sauf dans un cas lorsque le control est redimensionné et qu'une scrollbar apparait.Dans ce cas
j'ai essayé de gérer la scroll avec des Scrollinfo mais sans succès.
Comme au depart les méthodes décrites relèvent un peu de la bidouille, cela ne m'etonne pas que j'ai un souci avec le scrolling.

Par conséquent j'aimerais essayer une idée qui consiste a modifier (ou créer) une image list qui a la bonne taille en hauteur.
Prenons le cas ou j'ai deja une imagelist associée a mon CListCtrl, j'ai ajouté une méthode SetItemHeight pour spécifier la taille d'un item et j'aimerais fusionner l'image liste existante dans une plus grande.

Donc ma question est :

1)comment récuperer la couleur transparente asscociée a une ImageList

2)comment créer une CBitmap de taille et de couleur donnée.
Pour le moment j'ai codé le code ci-dessous mais je ne suis pas sur de moi.
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
 
BOOL CListCtrlCommands::CreateBitmap(CBitmap& bmp, int nWidth, int nHeight, COLORREF crfColor)
{
	BOOL bRet = FALSE;
 
	CDC memDC; 
	bRet = memDC.CreateCompatibleDC(NULL);
	bmp.CreateCompatibleBitmap(&memDC, nWidth, nHeight);
	memDC.SelectObject(&bmp);
	CBrush brushBk;
	brushBk.CreateSolidBrush( crfColor );
	RECT rcBkGnd = {0, 0, nWidth, nHeight};
	memDC.SelectObject( &brushBk );
	memDC.FillRect(&rcBkGnd, &brushBk);
 
	return bRet;
}
3)Comment fusionner les deux bitmaps, celle venant de CreateBitmap avec celle de l'imagelist ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
// Merge two bitmaps by vertically centered the small inside the big one
// bmpSmall comes from ImageList, bmpBig is the bitmap created by CreateBitmap
BOOL CListCtrlCommands::MergeBitmaps(CBitmap& bmpBigOut, CBitmap& bmpSmall, CBitmap& bmpBig )
{
//????
}
4) est ce que mon approche a une chance de marcher un jour ?