MiniUtilityFramework 九 CText和TEXT

本文详细介绍了CText控件的功能和使用方法,包括其丰富的公共接口,如设置字体属性、文字颜色、背景模式等,以及如何通过配置文件指定控件的各种属性。同时,提供了实例展示如何在代码中动态修改文本内容。
               

  //========================================================================
  //TITLE:
  //    MiniUtilityFramework(九):CText和TEXT
  //AUTHOR:
  //    norains
  //DATE:
  //    Wednesday 26-March-2009
  //Environment:
  //    VISUAL STUDIO 2005 + WINDOWS CE 5.0
  //========================================================================
  
  CText和微软的Static Control类似,都是用以显示文字信息。最大的不同,可能就在于CText能更方便设置字体的信息,比如:大小,颜色等等。
  
  CText的public接口比较多,不过大多数都只是用来设置文字显示的形式:

class CText  {public: //-------------------------------------------------------------------- //Description: // Set all the property for the control // //--------------------------------------------------------------------- BOOL SetProperty(const Text::Property &Property); //-------------------------------------------------------------------- //Description: // Get all the property of the control // //--------------------------------------------------------------------- Text::Property GetProperty(); //-------------------------------------------------------------------- //Description: // Set the strikeOut // //--------------------------------------------------------------------- void SetStrikeOut(BOOL bStrikeOut); //-------------------------------------------------------------------- //Description: // Set the underline // //--------------------------------------------------------------------- void SetUnderline(BOOL bUnderline); //-------------------------------------------------------------------- //Description: // Set the italic // //--------------------------------------------------------------------- void SetItalic(BOOL bItalic); //-------------------------------------------------------------------- //Description: // Specifies the weight of the font in the range 0 through 1000. For example,  //400 is normal and 700 is bold. If this value is zero, a default weight is used.  // //--------------------------------------------------------------------- BOOL SetWeight(int iWeight); //-------------------------------------------------------------------- //Description: // Get the position as rect // //--------------------------------------------------------------------- RECT GetPosition(); //-------------------------------------------------------------------- //Description: // Set the point size of text // //--------------------------------------------------------------------- void SetPointSize(int iPointSize); //-------------------------------------------------------------------- //Description: // Set Format. // //Parameters: // The value you should see the uFormat of DrawText() //-------------------------------------------------------------------- void SetFormat(UINT uFormat); //-------------------------------------------------------------------- //Description: // Set the background color // //-------------------------------------------------------------------- void SetBkColor(COLORREF crColor);  //-------------------------------------------------------------------- //Description: // Set the text color // //-------------------------------------------------------------------- void SetTextColor(COLORREF crColor); //-------------------------------------------------------------------- //Description: // Set the background mode. // //Parameters: // iMode: [in] The value is just like as follow: //  OPAQUE      -- Background is filled with the current background color before the text,  //      hatched brush, or pen is drawn.  //  TRANSPARENT -- Background remains untouched.  //-------------------------------------------------------------------- BOOL SetBkMode(int iMode); //-------------------------------------------------------------------- //Description: // Display the text stored. // //-------------------------------------------------------------------- void Draw(HDC hdc);  //-------------------------------------------------------------------- //Description: // Set the text. If you want to display the text ,you should call the Display() // //-------------------------------------------------------------------- BOOL SetText(const TSTRING &strText); //-------------------------------------------------------------------- //Description: // Set the control position // //-------------------------------------------------------------------- void SetPosition(const RECT &rcWndPos); //-------------------------------------------------------------------- //Description: // Get the text. // //-------------------------------------------------------------------- TSTRING GetText(); //-------------------------------------------------------------------- //Description: // Set font face name // //-------------------------------------------------------------------- BOOL SetFaceName(const TSTRING &strFaceName);public: CText(); virtual ~CText();private: Text::Property m_Property;

 

    配置文件可选的字段也不少,但并不复杂:

  TYPE:类型,取值必须为TEXT,标明当前控件为TEXT
  
  RECT_POS:该控件在窗口的位置。
  
  POINT_SIZE:字体的大小。
  
  WEIGHT:粗细,取值为0~900。
  
  FORMAT:格式。取值和DrawText的uFormat参数的一致,有如下类型(取自DrawText的说明文档):
    
    DT_BOTTOM         Justifies the text to the bottom of the rectangle. You must combine this value with DT_SINGLELINE.
    
    DT_CALCRECT       Determines the width and height of the rectangle. If the rectangle includes multiple lines of text, DrawText uses the width of the rectangle pointed to by the lpRect parameter and extends the base of the rectangle to bound the last line of text. If the rectangle includes only one line of text, DrawText modifies the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText returns the height of the formatted text but does not draw the text. Before calling DrawText, an application must set the right and bottom members of the RECT structure pointed to by lpRect. These members are updated with the call to DrawText.  
    
    DT_CENTER         Centers text horizontally in the rectangle.
    
    DT_END_ELLIPSIS   Truncates a text string that is wider than the display rectangle and adds an ellipsis to indicate the truncation.
    
    DT_EXPANDTABS     Expands tab characters. The default number of characters per tab is eight. 
    
    DT_INTERNAL       Uses the system font to calculate text metrics. 
    
    DT_LEFT           Aligns text to the left.
    
    DT_NOCLIP         Draws without clipping. DrawText is somewhat faster when DT_NOCLIP is used.
    
    DT_NOPREFIX       Turns off processing of prefix characters. Normally, DrawText interprets the mnemonic-prefix character & as a directive to underscore the character that follows, and the mnemonic-prefix characters && as a directive to print a single &. By specifying DT_NOPREFIX, this processing is turned off.
    
    DT_RIGHT          Aligns text to the right.
    
    DT_RTLREADING     Layout in right-to-left reading order for bi-directional text when the font selected into the hdc is a Hebrew or Arabic font. The default reading order for all text is left-to-right.
    
    DT_SINGLELINE     Displays text on a single line only. Carriage returns and linefeeds do not break the line.
    
    DT_TABSTOP        Sets tab stops. Bits 8–15, which form the high-order byte of the low-order word, of the uFormat parameter specify the number of characters for each tab. The default number of characters per tab is eight. You cannot use the DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP, and DT_NOPREFIX values with the DT_TABSTOP value.
    
    DT_TOP            Top-justifies text. You must combine this value with DT_SINGLELINE.
    
    DT_VCENTER        Centers text vertically. You must combine this value with DT_SINGLELINE.
    
    DT_WORD_ELLIPSIS  Truncates any word that does not fit in the display rectangle and adds an ellipsis.
    
    DT_WORDBREAK      Breaks words. DrawText automatically breaks lines between words if a word would extend past the edge of the rectangle specified by the lpRect parameter. A carriage return-linefeed sequence also breaks the line.
  
  COLOR:文本的颜色
  
  TRANSPARENT_MODE:决定背景是否透明。取值为TRUE或FALSE。当为FALSE时,背景颜色为TRANSPARENT_COLOR所确定的数值。
  
  STRING:连接的字符串
  
  FONT_FACE_NAME:字体。注意,该字段指的不是字体的文件名,而是字体名。也就是说,该字段取值不会是FONT的KEY值。该数值可以通过CCommon::GetFontNameFromFile读取相应的字体文件来获得。
  
  ITALIC:斜体
  
  UNDERLINE:下划线
  
  STRIKEOUT:删除线
  
  
  配置文件的字段,和Text::Property中的变量基本上是对应:
  
  namespace Text
  {
   struct Property
   {
    RECT rcWndPos; 
    TSTRING strText;
    UINT uFormat;
    int iPointSize;
    int iBkMode;
    COLORREF crTextColor;
    COLORREF crBkColor;
    int iWeight;
    BOOL bItalic;
    BOOL bUnderline;
    BOOL bStrikeOut;
    TSTRING strFaceName;
   };
  }
  
  如果CText的使用仅仅是用来显示相应的信息,并不打算在代码中对显示信息进行变更,可以在配置文件中设置STRING字段的指向,不仅能够方便地显示文字,还能在调用SetCurLanguage后自动变更显示的内容。如果需要在代码中进行操控,我们只需要通过GetText函数获取相应的对象,然后再调用SetText函数即可:
  
  CText *pText = GetText(TEXT("TXT_EXIT"));
  pText->SetText(TEXT("退出"));
  
  这是一个随着语言的不同,显示不同语言的“导航”的例子:
  [TXT_TITLE_NAVI]
  TYPE=TEXT
  RECT_POS=11,8,162,39
  POINT_SIZE=26
  WEIGHT=700
  FORMAT=DT_LEFT|DT_SINGLELINE|DT_VCENTER
  COLOR=0,255,0
  TRANSPARENT_MODE=TRUE
  FONT_FACE_NAME=kaiti_GB2312
  STRING=STR_NAVI
  
  [STR_NAVI]
  TYPE=STRING
  EN="NAVI"
  CHS="导航"
  CHT="導航"

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

内容概要:本文提出了一种基于瞬态三角哈里斯鹰算法(TTHHO)的多无人机协同集群在三维空间中的避障路径规划方法,旨在通过优化综合目标函数实现最低路径成本。该方法综合考量路径长度、飞行高度、环境威胁区域及转弯角度等多个因素,构建精细化的代价评估模型,从而提升路径的安全性与经济性。研究采用Matlab平台完成算法设计与仿真实验,验证了TTHHO算法在复杂三维动态环境下的高效寻优能力与强鲁棒性,能够有效支持多无人机系统的自主导航、协同控制与实时避障,具有良好的工程应用前景。; 适合人群:具备一定编程基础优化算法理论背景,从事无人机路径规划、群体智能优化算法研究及相关领域的科研人员、工程技术人员与研究生。; 使用场景及目标:①解决多无人机在复杂三维空间中的协同避障与路径优化问题;②降低飞行综合能耗与风险,提高任务执行效率与安全性;③为智能优化算法在无人系统、自动驾驶、空中交通管理等实际工程场景中的应用提供可复现的技术范例与仿真支持。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点关注目标函数的设计逻辑、约束条件的处理方式以及参数调优策略,同时可将该方法迁移拓展至其他群体智能优化或路径规划应用场景中进行对比研究与性能验证。
内容概要:本文提出了一种考虑算力负荷时空迁移特性的多数据中心与共享储能协同优化调度策略,旨在实现“算电协同”背景下综合能源系统的高效运行。该策略深度融合算力、电力与储能资源的动态特性,通过构建优化调度模型并利用Matlab进行仿真求解,实现了多数据中心算力负荷在时间空间维度上的灵活调度,以及共享储能系统的优化配置与运行,从而提升能源利用效率与系统整体经济性。研究重点探讨了算力负荷作为可调度资源的潜力,揭示了算力-电力-储能耦合系统的协同优化机制,为应对能源与算力双重挑战提供了创新解决方案。; 适合人群:从事电力系统、综合能源系统、数据中心运营管理、优化调度算法研究的科研人员及工程技术人员,具备一定的Matlab编程能力数学建模基础。; 使用场景及目标:①为实现“东数西算”等国家战略提供关键技术参考,研究如何利用地理时间差异调度算力以最大化消纳可再生能源;②为多数据中心与电网的协同规划与运行提供优化方案,有效降低运营成本,同时提高能源系统的灵活性、可靠性可持续性。; 阅读建议:此资源以Matlab代码实现为核心,建议读者结合代码深入理解模型构建与求解过程,重点关注目标函数的设计、约束条件的设定以及算例分析部分,以便将该优化思路应用于实际工程项目或进一步开展学术研究。
内容概要:本文档介绍了一个基于Simulink的光伏储能直流系统仿真模型,涵盖PV光伏阵列、Boost DCDC变换器、负载、双向DCDC变换器及锂离子电池系统等关键组件的建模与仿真,旨在实现对光伏储能系统的能量管理与动态特性分析。文中深入探讨了系统在离网或并网工况下的能量均衡控制策略,重点实现了最大功率点跟踪(MPPT)技术、储能系统的充放电协同控制以及直流母线电压稳定控制,并通过Simulink平台进行系统级仿真验证,帮助研究人员掌握新能源系统的核心控制逻辑与仿真技术。; 适合人群:具备扎实的电力电子、自动控制理论基础,熟练掌握MATLAB/Simulink仿真环境,从事新能源系统、微电网、储能技术等相关方向的科研人员或工程技术人员,尤其适合电气工程、能源动力类专业的研究生及企业研发人员。; 使用场景及目标:①开展光伏储能一体化系统的建模与仿真研究;②验证MPPT控制算法、双向DCDC变换器的能量双向流动控制及储能系统的充放电管理策略;③作为高校电力系统、新能源技术等课程的教学案例,辅助学生理解系统能量流动与控制逻辑;④支撑科研项目中的系统方案设计、控制算法开发与优化验证。; 阅读建议:建议结合MATLAB/Simulink环境动手搭建模型,逐步理解各功能模块的设计原理与参数设置,重点关注光伏出力波动下的系统动态响应特性,深入分析控制环路之间的耦合关系,并基于文中提供的仿真框架进行扩展研究,如引入不同控制策略或优化目标,以全面提升对新能源系统仿真与控制的综合能力。
本资源提供截至2025年长江流域水库与大坝空间分布数据,系统整合流域内各类水库、大坝及重要水利工程的空间位置信息,包含可编辑MXD工程文件、标准Shapefile矢量文件以及标准成图TIF文件。数据经过统一整理与标准化处理,空间定位准确、属性结构规范,可直接应用于GIS空间分析、水资源管理、水利工程研究及科研教学等多种应用场景。 从数据背景来看,长江流域是我国面积最大、径流量最丰富的流域,也是全国水利工程最为密集的区域之一。经过长期开发建设,流域内形成了由大型控制性水库、中小型水库及各类拦河坝共同组成的水利工程体系,在防洪减灾、水资源调配、水力发电、农业灌溉、航运保障及生态修复等方面发挥着重要作用。水库与大坝的空间分布特征也是流域水资源开发利用及流域治理研究的重要基础数据。 在数据内容方面,本资源收录截至2025年长江流域各类水库与大坝,以面状矢量形式表达其空间位置。Shapefile文件包含水库(或大坝)名称、类型、所属行政区划、库容、建成时间及地理坐标等基础属性信息,可用于水利工程统计分析、空间分布研究及专题制图。同时配套提供MXD工程文件,已完成基础图层组织与符号配置,用户可在ArcGIS平台中直接进行编辑、查询及成果输出。 在应用层面,该数据可广泛用于流域综合管理、水资源优化配置、水库调度分析、防洪风险评价、水电开发研究及生态环境保护等领域。结合DEM、河流水系、降水、径流、土地利用及人口等数据,还可开展流域水文过程模拟、水利工程布局评价、水库蓄水能力分析及流域生态安全研究。此外,该数据也适用于GIS教学、水文学、水利工程及自然资源管理等相关课程实践。 资源同时提供标准成图TIF文件,可直接用于科研论文插图、项目报告及教学展示。整体数据结构规范、兼容性强,可在ArcGIS、QGIS等主流GIS软件平台中直接使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值