zoukankan      html  css  js  c++  java
  • 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库代码下载地址:点击打开链接


  • 相关阅读:
    前端工具Gulp的学习
    研究javascript中的this
    如何让引入ES6的html文件运行起来
    windows用命令方式查看文件内容
    windows中用'ls'命令查看项目目录
    一步步理解ajax
    【拥抱ES6】搭建一个ES6环境
    npm还是cnpm
    【聊一聊】css中的经典布局——圣杯布局
    【聊一聊】css中的经典布局——双飞翼布局
  • 原文地址:https://www.cnblogs.com/redrainblog/p/4209714.html
Copyright © 2011-2022 走看看