Duilib ListContain 扩展
来源:互联网 发布:js获取鼠标点击位置 编辑:程序博客网 时间:2024/04/30 15:59
通过对listContain扩展,使list可以插入任意控件到Item里面去,方便对list操作
操作完了之后记得调用SetPos让Contain计算内部控件位置
m_pList->SetPos(rtList);
class UILIB_API CListContainerElementUIEx:public CListContainerElementUI{public:CListContainerElementUIEx(){};virtual void SetPos(RECT rc);};
void CListContainerElementUIEx::SetPos( RECT rc ){CDuiString xx =this->GetParent()->GetParent()->GetName();CContainerUI::SetPos(rc);rc = m_rcItem; rc.left += m_rcInset.left; rc.top += m_rcInset.top; rc.right -= m_rcInset.right; rc.bottom -= m_rcInset.bottom; TListInfoUI *plistinfo = GetOwner()->GetListInfo(); SIZE szAvailable = { rc.right - rc.left, rc.bottom - rc.top }; CListUI *pList=(CListUI*)this->GetParent()->GetParent();CListHeaderUI* pH = pList->GetHeader();for( int it2 = 0; it2 < m_items.GetSize(); it2++ ) { CControlUI* pControl = static_cast<CControlUI*>(m_items[it2]); CListHeaderItemUI* pHItem1= (CListHeaderItemUI* )pH->GetItemAt(it2);if(pHItem1->IsVisible()!=pControl->IsVisible()){pControl->SetVisible(pHItem1->IsVisible());}if( !pControl->IsVisible() ) continue; if( pControl->IsFloat() ) { SetFloatPos(it2); continue; } RECT rcPadding = pControl->GetPadding();SIZE sz = pControl->EstimateSize(szAvailable); if( sz.cx == 0 ) { if( sz.cx < pControl->GetMinWidth() ) sz.cx = pControl->GetMinWidth(); if( sz.cx > pControl->GetMaxWidth() ) sz.cx = pControl->GetMaxWidth(); } else { if( sz.cx < pControl->GetMinWidth() ) sz.cx = pControl->GetMinWidth(); if( sz.cx > pControl->GetMaxWidth() ) sz.cx = pControl->GetMaxWidth(); } sz.cy = pControl->GetFixedHeight(); if( sz.cy == 0 ) sz.cy = rc.bottom - rc.top - rcPadding.top - rcPadding.bottom; if( sz.cy < 0 ) sz.cy = 0; if( sz.cy < pControl->GetMinHeight() ) sz.cy = pControl->GetMinHeight(); if( sz.cy > pControl->GetMaxHeight() ) sz.cy = pControl->GetMaxHeight(); //RECT rcCtrl = { iPosX + rcPadding.left, rc.top + rcPadding.top, iPosX + sz.cx + rcPadding.left , rc.top + rcPadding.top + sz.cy};RECT rcCtrl = { plistinfo->rcColumn[it2].left + rcPadding.left, rc.top + rcPadding.top, plistinfo->rcColumn[it2].right + rcPadding.left, rc.top + sz.cy + rcPadding.top + rcPadding.bottom }; pControl->SetPos(rcCtrl);}}
效果图:
1 0
- Duilib ListContain 扩展
- duilib list控件扩展
- duilib list 扩展
- duilib list控件扩展
- Duilib扩展—双击、右键消息扩展
- Duilib扩展—扩展GIF显示
- duilib进阶教程 -- 扩展duilib的消息 (11)
- 关于duilib中的list的扩展探索
- 关于duilib中的list的扩展探索
- Duilib 改造之路 <1> 扩展标签
- (转)duilib list扩展 修正bug
- Duilib Button属性和HorizontalLayoutUI的扩展
- 关于duilib中的list的扩展探索
- Duilib Button属性和HorizontalLayoutUI的扩展
- Duilib扩展《01》— 双击、右键消息扩展
- Duilib扩展《01》— 双击、右键消息扩展
- Duilib扩展《01》— 双击、右键消息扩展
- Duilib扩展《01》— 双击、右键消息扩展
- 个人的Redis学习集合包下载
- jsoup基本用法
- 剑指offer第一题
- echarts 实例 (二:调用时,渲染)
- Emeditor宏编译java文件并执行
- Duilib ListContain 扩展
- Android中判断app何时启动和关闭的技术研究
- (ORACLE 11g)"未在本地计算机注册“OraOLEDB.Oracle.1”提供程序"问题解决
- leetcode挨个儿刷150515(10):Search in Rotated Sorted Array
- mysql基础命令(一)
- 做精确计算时应避免使用float和double
- c++基础i
- centos 6.5下搭建ipsec/xl2tpd VPN
- 一些记录