2013-11-26 2 views
0

Спасибо, что пришел !!MFC CListCtrl Регулировка высоты элемента. (LVS_SMALLICON)

я хочу, чтобы настроить height.look элемента как этот:

enter image description here

, но на самом деле это:

enter image description here

и я нашел 3 способ регулировки высоты элемента :

(1). добавьте изображение, но текст не находится в центре.

m_ImageListCList.Create(16,36/*Here*/,ILC_COLOR24|ILC_MASK,$Cnt ,$Cnt); 
m_ImageListCList.Add(&Bitmap2, RGB(192, 192, 192)); 
m_listSchedule.SetImageList(&m_ImageListCList, LVSIL_SMALL); 

enter image description here

(2). изменить размер шрифта, это не очень

enter image description here

(3). и я хочу перезаписать функцию DrawItem() MeasureItem().

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); 
afx_msg void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); 
ON_WM_MEASUREITEM_REFLECT() 
ON_WM_DRAWITEM() 

, но MeasureItem() - это работа, DrawItem() не может быть вызвана. , а затем я найти этот контекст

MSDN База знаний Q131788: Стиль LVS_OWNERDRAWFIXED совместим только со стилем LVS_REPORT. Вы не можете иметь владельца DrawView с LVS_ICON, LVS_SMALLICON или LVS_LIST.

Теперь у меня нет лучшей идеи ... Большое спасибо за вашу помощь!

ответ

1

Когда MeasureItem работает, вы можете определить размер своих товаров, но вы пробовали NM_CUSTOMDRAW. AFAIK он должен работать.

Если вам нужно отобразить только значок и какой-либо текст, и вы хотите выбрать и выбрать данные, недостаточно ли списка? Используйте классический ListBox и некоторые Owndraw mechansim.

+0

Большое спасибо! В конце концов, я использую LVS_REPORT и скрываю заголовок, добавляя значок. И затем перезаписать «DrawItem» «MeasureItem» ... Спасибо за совет! – user2894287