Как изменить размер элемента и промежуток между ними в Custom Drown CListCtrl

Насколько я знаю, ON_WM_MEASUREITEM не вызывается в элементе управления Custom Draw list. Он используется только в том случае, если элемент управления нарисован владельцем.

Я нашел способ сделать это, но это своего рода ХАК, и я все еще не могу контролировать промежутки между элементами, которые они устанавливают каким-то образом автоматически.

Хитрость заключается в том, что вы можете создать CImageList с неиспользованными изображениями нужного вам размера, и если вы назначите такой список изображений элементу управления списком, элементы будут изменены до размеров, близких к размеру изображений. После этого вы можете использовать Custom Draw, чтобы раскрасить все, что находится внутри этих увеличенных элементов.

CImageList m_imageList1;
m_imageList1.Create(176, 144, ILC_COLOR32 | ILC_MASK, 5, 1);
GetListCtrl().SetImageList(&m_imageList1, LVSIL_NORMAL);

Итак, вопрос в том, как изменить размер элементов и расстояние между ними в элементе управления Custom Drown?

Или мой единственный вариант - использовать полностью принадлежащий владельцу элемент управления с LVS_OWNERDRAWFIXED?


person Ma99uS    schedule 24.10.2008    source источник
comment
Смысл ваших изображений в том, чтобы просто увеличить размер ваших предметов? Это взлом? Просто пытаюсь разобраться в вашем вопросе ...   -  person Aardvark    schedule 24.10.2008
comment
Я создаю и назначаю список изображений, которые никогда не буду использовать. Я обманываю элемент управления, заставляя его думать, что он должен отображать эти изображения, поэтому ему приходится выделять больше места для каждого элемента.   -  person Ma99uS    schedule 26.10.2008
comment
Так что если вам нужно обманом заставить систему делать то, что вы хотите, каким-то непрямым способом, в моей книге это квалифицируется как ХАК. :-)   -  person Ma99uS    schedule 26.10.2008


Ответы (1)


Обновление.
Я скомпилировал такой же настраиваемый элемент управления списком в VS2008. И внешний вид был другим. Размер предмета был идеальным, между предметами не было зазоров. Я предполагаю, что проблема с размером, которая у меня была, была только в MFC для VS2003, которую я использовал изначально.
Чувак, MFC - это постоянное взламывание :-)

Думаю, вопрос закрыт.
Спасибо (мне).

person Ma99uS    schedule 26.10.2008