duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性
转载请说明原出处,谢谢~~:
今天有朋友反映CTextUI控件无法设置宽度,于是修复了这个bug,顺便给Text控件增加了一个自动计算宽度的属性,描述如下
<Attribute name="autocalcwidth" default="false" type="INT" comment="是否自动计算宽度"/>
bug出现在EstimeteSize函数,修复后的主要代码如下:
SIZE CTextUI::EstimateSize(SIZE szAvailable) { RECT rcText = { 0, 0, m_bAutoCalcWidth ? 9999 : m_cxyFixed.cx, 9999 }; rcText.left += m_rcTextPadding.left; rcText.right -= m_rcTextPadding.right; if( m_bShowHtml ) { int nLinks = 0; CRenderEngine::DrawHtmlText(m_pManager->GetPaintDC(), m_pManager, rcText, m_sText, m_dwTextColor, NULL, NULL, nLinks, DT_CALCRECT | m_uTextStyle); } else { CRenderEngine::DrawText(m_pManager->GetPaintDC(), m_pManager, rcText, m_sText, m_dwTextColor, m_iFont, DT_CALCRECT | m_uTextStyle); } SIZE cXY = {rcText.right - rcText.left + m_rcTextPadding.left + m_rcTextPadding.right, rcText.bottom - rcText.top + m_rcTextPadding.top + m_rcTextPadding.bottom}; if (m_bAutoCalcWidth) { m_cxyFixed.cx = cXY.cx; } if( m_cxyFixed.cy != 0 ) cXY.cy = m_cxyFixed.cy; return cXY; }
其中m_bAutoCalcWidth是新增的属性,新增的属性代码很简单,我就不贴了。
修复后的完整代码我已经提交到自己的Duilib库。
我的Duilib库代码下载地址:点击打开链接