zoukankan      html  css  js  c++  java
  • CListUI控件的认识

    要学习该控件得先去看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>
    View Code

    这里我标注了两个地方的menu,其实只有List起作用,另外的位置不起作用。因为它的子控件均属于该大框架。当右击List范围内的时候就会响应对应的WM_CONTEXTMENU中调用CControl的DoEvent 中的UIEVENT_CONTEXTMENU 。

    4、当很疑惑为什么添加一个Element的时候会马上显示。其实在Add或者erase的时候均会调用NeedUpdate.来进行相应的更新。

  • 相关阅读:
    bootstrap modal 弹出效果
    集合List内容
    input文本框设置和移除默认值
    jQuery hover事件
    jQuery事件之鼠标事件
    jquery操作select(取值,设置选中)
    JS里设定延时:js中SetInterval与setTimeout用法
    移动端 触摸事件 ontouchstart、ontouchmove、ontouchend、ontouchcancel
    profiler加入计划任务
    sql server 时间小汇
  • 原文地址:https://www.cnblogs.com/cxiaoln/p/4379610.html
Copyright © 2011-2022 走看看