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 ? szAvailable.cx : m_cxyFixed.cx, m_cxyFixed.cy == 0 ? 9999 : m_cxyFixed.cy};

		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 szXY = {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 = szXY.cx;
		}

		if( m_cxyFixed.cy == 0 ) m_cxyFixed.cy = szXY.cy;
		return CControlUI::EstimateSize(szAvailable);
	}




      其中m_bAutoCalcWidth是新增的属性,新增的属性代码很简单,我就不贴了。

      修复后的完整代码我已经提交到自己的Duilib库。

      我的Duilib库代码下载地址:点击打开链接


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值