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.来进行相应的更新。

  • 相关阅读:
    安装完QQ必须要删除掉的几个恐怖文件
    dede实战系统:更换成kindEditor编辑器
    PHP 5.4 中经 htmlspecialchars 转义后的中文字符串为空的问题
    DEDECMS图片集上传图片出错302的解决办法
    dedecms安装完成后登录后台出现空白
    OFV.msi是什么 为什么更新时无法安装
    CentOS 挂载NTFS分区的两种方法
    centos使用yum安装gcc
    NetBeans菜单栏字体太小了
    注入漏洞页
  • 原文地址:https://www.cnblogs.com/cxiaoln/p/4379610.html
Copyright © 2011-2022 走看看