Bonjour,

Je suis en train de créer une liste d'icônes horizontales avec un affichage différent que celui proposer avec la CListCtrl.

Je voulais donc faire un OwnerDraw de la liste pour y arriver en utilisant le style LVS_OWNERDRAWFIXED.

Mais il y a un truc que je ne comprend pas. J'ai mis à des points d'arrêt dans MeasureItem (ON_WM_MEASUREITEM_REFLECT) et dans DrawItem (ON_WM_DRAWITEM_REFLECT). Cependant le programme s'arrête que dans MeasureItem.

Ca maintenant plusieurs heures que je cherche partout et je ne trouve pas et je suis maintenant à cours d'idée.
Je me retourne donc vers vous.

Auriez vous une idée pour résoudre mon problème.

Header
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
class CPropertySheetIconsBarWnd : public CListCtrl
[...]
	//{{AFX_MSG(CPropertySheetIconsBarWnd)
	afx_msg void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
	afx_msg void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
	afx_msg void OnItemchanged ( NMHDR * pNotifyStruct, LRESULT* result );
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
[...]
Corps
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
 
[...]
BEGIN_MESSAGE_MAP(CPropertySheetIconsBarWnd, CListCtrl)
	//{{AFX_MSG_MAP(CPropertySheetIconsBarWnd)
	ON_WM_DRAWITEM_REFLECT()
	ON_WM_MEASUREITEM_REFLECT()
	ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, OnItemchanged)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
 
 
void CPropertySheetIconsBarWnd::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	CDC dc;
	dc.Attach ( lpDrawItemStruct->hDC );
 
 
	dc.Rectangle ( &lpDrawItemStruct->rcItem );
 
 
	dc.Detach ( );
}
 
void CPropertySheetIconsBarWnd::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct) 
{
	lpMeasureItemStruct->itemWidth  = 100;
	lpMeasureItemStruct->itemHeight = 100;
}
[...]