duilib 修復Text控件沒法設置寬度的bug,增長自動加算寬度的屬性

轉載請說明原出處,謝謝~~:html


      今天有朋友反映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是新增的屬性,新增的屬性代碼很簡單,我就不貼了。ui

      修復後的完整代碼我已經提交到本身的Duilib庫。spa

      個人Duilib庫代碼下載地址:點擊打開連接.net

相關文章
相關標籤/搜索