要学习该控件得先去看duilib的demo里面的ListDemo
ListMainForm
1、该类继承了IListCallbackUI接口,并实现了对应的LPCTSTR GetItemText(CControlUI* pControl, int iIndex, int iSubItem)回调函数。
在CListTextElementUI函数中的DrawItemText调用了该函数来获取对应的item的值。pControl 是对应的ClistLabelElementUI指针,iIndex则是对应的是该pControl在数组中对应第几行。iSubItem就是对应的第几列。
当然:如果没有使用该函数,则可以使用else strText.Assign(GetText(i));进行函数操作。如果使用else则无法对当前的数据进行diy,只能使用默认的数据。
2、CListUI 继承了CVerticalLayout,主要是为了进行对应的滚动条的操作。因为滚动条是为了用在CListBodyUI:该类保存了所有的element。并使用了Expand来判断是否将该行显示出来。这个很有利于重绘树形控件。具体重绘树形控件可以看GameDemo。
3、CListUI最主要的属性是CListBodyUI* m_pList; 实现了主要的Item操作的功能。
回到ListMainForm类
该类的List的xml控件(这里删去一些)
<List name="domainlist" menu="true"> <ListHeader height="24" menu="true"> <ListHeaderItem sepwidth="1"/> <ListHeaderItem sepwidth="1"/> </ListHeader>