2010-06-30 66 views
0

在对话框模板中,我放置了一个ListBox,因为选中的列表框没有显示在可视化布局选项中。我将它设置为所有者绘制并使用DDX进行设置,将关联的类变量从类型CListBox更改为CCheckListBox - 换句话说,我从向导为我设置的所有东西绘制的唯一更改被设置为owner-draw,并且chnage成员变量类型。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。这可能是项目似乎重叠的原因。