原文地址:http://www.jb51.cc/article/p-zkotooxi-gt.html
今天在做一个程序的界面时,需要在一个列表中显示除文字以外的其他控件,如:Edit、Button、Combo等;我做界面使用的是duilib,其自带的CListUI并不能满足此项功能,需要进行扩展,在此记录,以便后续使用需要。
先看一下实现的效果:
今天我们的扩展主要包含如下部分:
1.表头支持控件
在ListUI中,表头是CListHeaderItemUI,而这个类是从CControlUI继承而来,为了能支持在其中显示其他控件,它需要是一个窗口,那么需要将其父类改成CContainerUI,调整基类后,需要同时将CListHeaderItemUI类中引用CControlUI的地方全部改成CContainerUI,如:
- LPVOIDCListHeaderItemUI::GetInterface(LPCTSTRpstrName)
- {
- if(_tcscmp(pstrName,DUI_CTR_LISTHEADERITEM)==0)returnthis;
- returnCContainerUI::GetInterface(pstrName);
- }
如果此处不改,将无法从XML文件中加载内嵌控件。
还需要修改其他如DoEvent事件中的CControlUI,否则会导致表头无法拖拉,切记。