diff --git a/DuiLib/Control/UILabel.cpp b/DuiLib/Control/UILabel.cpp index 7354c2e..8233943 100644 --- a/DuiLib/Control/UILabel.cpp +++ b/DuiLib/Control/UILabel.cpp @@ -98,7 +98,7 @@ namespace DuiLib { m_szAvailableLast = szAvailable; m_cxyFixedLast = m_cxyFixed; if (sText.empty()) - return { 0,0 }; + return { m_cxyFixed.cx , m_cxyFixed.cy }; // 自动计算宽度 if ((m_uTextStyle & DT_SINGLELINE) != 0) { // 高度 diff --git a/DuiLib/Control/UIList.cpp b/DuiLib/Control/UIList.cpp index cb5400f..6ff7ef1 100644 --- a/DuiLib/Control/UIList.cpp +++ b/DuiLib/Control/UIList.cpp @@ -390,6 +390,31 @@ namespace DuiLib { Invalidate (); } + RECT CListUI::GetClientPos() const + { + RECT rc = m_rcItem; + rc.left += m_rcInset.left; + rc.top += m_rcInset.top; + rc.right -= m_rcInset.right; + rc.bottom -= m_rcInset.bottom; + + if (GetVerticalScrollBar() && GetVerticalScrollBar()->IsVisible()) { + auto m_pVerticalScrollBar = GetVerticalScrollBar(); + rc.top -= m_pVerticalScrollBar->GetScrollPos(); + rc.bottom -= m_pVerticalScrollBar->GetScrollPos(); + rc.bottom += m_pVerticalScrollBar->GetScrollRange(); + rc.right -= m_pVerticalScrollBar->GetFixedWidth(); + } + if (GetHorizontalScrollBar() && GetHorizontalScrollBar()->IsVisible()) { + auto m_pHorizontalScrollBar = GetVerticalScrollBar(); + rc.left -= m_pHorizontalScrollBar->GetScrollPos(); + rc.right -= m_pHorizontalScrollBar->GetScrollPos(); + rc.right += m_pHorizontalScrollBar->GetScrollRange(); + rc.bottom -= m_pHorizontalScrollBar->GetFixedHeight(); + } + return rc; + } + CListHeaderUI* CListUI::GetHeader () const { return m_pHeader; } diff --git a/DuiLib/Control/UIList.h b/DuiLib/Control/UIList.h index e611734..7e8082e 100644 --- a/DuiLib/Control/UIList.h +++ b/DuiLib/Control/UIList.h @@ -125,6 +125,7 @@ namespace DuiLib { bool IsFixedScrollbar (); void SetFixedScrollbar (bool bFixed); + RECT GetClientPos() const override; CListHeaderUI* GetHeader () const; CContainerUI* GetList () const;