2010-06-30 4 views
0

В шаблоне диалога я поместил ListBox, так как флажок списка не показан в параметрах визуального макета. Я установил его для рисования владельца и настроил его с помощью DDX, изменив связанную переменную класса с типа CListBox на CCheckListBox - другими словами, единственные изменения, которые я делаю, от того, что делает для меня мастер, - это установить правку владельца и изменить член переменный тип.MFC: элементы CCheckListBox перекрываются

в OnInitDialog методе диалогового окна моего, я затем проверить с:

m_List.AddString(_T("One")); 
m_List.AddString(_T("Two")); 
m_List.AddString(_T("Three")); 
m_List.AddString(_T("Four")); 
m_List.SetCheck(1,1); 

Когда я запускаю список есть, с 4-х предметов и один проверенного, с нужными строками. Но высота элементов неправильная. Похоже, что высота флажка используется для определения высоты элемента, что приводит к перекрытию текста, указанного ниже.

Не следует ли определять поведение класса по умолчанию для этого, без необходимости индивидуально устанавливать высоту каждого элемента?

ответ

1

Из MSDN:

Если контрольный ящик контрольный ящик по умолчанию (список строк с по умолчанию размера флажков к слева от каждого ОРЗ), вы можете использовать по умолчанию CCheckListBox в :: DrawItem, чтобы нарисовать контрольный список . В противном случае вы должны переопределить функцию CListBox :: CompareItem и CCheckListBox :: DrawItem и CCheckListBox :: Функции MeasureItem.

Похоже, вам нужно либо вызвать реализацию по умолчанию, либо реализовать собственный MesaureItem/DrawItem. Вероятно, поэтому элементы, похоже, перекрываются.

Смежные вопросы