首页 > 其他分享 >记一次换行显示问题分析

记一次换行显示问题分析

时间:2023-05-19 14:25:52浏览次数:43  
标签:分析 控件 显示 一次 xml 换行 xD &#

本文记录在解决换行显示问题中的分析过程。

背景描述

换行显示控件 CToolTipCtrl 在显示时,没有按照预期进行换行

问题分析

该控件是系统控件,正常来说不会有什么问题,因此,应该是使用的问题。在网上搜罗一大圈,都说这个控件在默认情况下,只会显示单行,如要支持多行显示,需要设置 SetMaxTipWidth 成员函数,也照着这么做了,可还是显示单行。这就很奇怪的。

接着,在测试小工程中,单独测试 CToolTipCtrl 控件,设置内容中包含换行符 \r\n 或者 \r\n,都能达到换行效果,那为什么在工程中就不行了呢?

在这个点上卡了好几天,先暂用多加空行的方式,强制第二行内容显示在实际第二行上,这是不优雅的做法,就先这么用吧,等测试发现问题再说。

过了几天,果然测试报问题了,上述这种做法不能适应显示宽度跟随DPI变化的场景,一旦显示宽度改变,增加的空格个数不够,第二行的内容就有部分会显示在第一行末尾,这下到了不得不解决的时候了。

在工程中,先将显示内容固定写死,如 "中国\r人们\n共和国\r\n",发现换行效果正常,载入从 xml 文件中读取到的内容,显示不正常,问题定位到了。带有换行符的同样的字符串,从xml文件中解析出来时,会将 \r\n 解析为字符串,而不是转义字符。

接下来的问题就变成,如何正确的从 xml 文件中读取包含换行符的字符串?

经过一顿 google,发现答案 how-to-add-a-newline-line-break-in-an-xml-file,在xml文件中,使用 
 表示 LF, 使用 
 表示 CR。因此,可在需要换行的地方,加上 
 即可达成效果。

问题拓展


又是怎么来的呢?
image.png

从上图可以看出,xD是回车符CR的十六进制表示,xA是换行符LF的十六进制表示。

在这篇 List of XML and HTML character entity references 文档中,可以找到在 XML 文档格式中定义的标准公用实体字符集合:

  1. & 表示 & 符号
  2. < 表示 小于号
  3. > 表示 大于号
  4. ' 表示 单引号
  5. " 表示 双引号

除了上述标准实体字符集合外,还支持自定义其他符号,格式如下:

	&#nnn;
    &#xhhh;

nnn是符号的十进制表示,hhh是十六进制表示,当以十六进制表示时,x必须为小写。

小结

想要在XML格式文档中表示带有换行的字符串时,需要用 
 当做换行符。

标签:分析,控件,显示,一次,xml,换行,xD,&#
From: https://www.cnblogs.com/cherishui/p/17414975.html

相关文章

  • 记一次前后端项目Nginx代理出现的“405”问题
    事情的起因是这样的:因为好久没有写前端代码了对前端打包部署这块有点抵触公司的有个小项目是前端vue+后端springboot实现的在部署的时候通过nginx反向代理去实现跨域(这块nginx一直都是简单的使用也没有过深的了解包括之前也用过nginx+memache实现的灰度部署的方案)总感觉很......
  • [转]Android冷启动白屏解析,带你一步步分析和解决问题
    [img]http://dl2.iteye.com/upload/attachment/0118/3095/d8d8c13d-7225-33cd-9559-efcc6e1f9432.png[/img]关于首次启动程序白屏时间过长这个问题其实我也早就发现了,而且正如评论中所说,有的时候白屏时间可以长达七八秒。看来这个问题已经是一个普遍存在的......
  • 庆军之xamarin.forms 第一次简单总结
    在我写了单元测试,并且手搓通过了单元测试之后。打包给了客户。客户反馈的问题是,数据只有一条。找了很久的原因。最后发现,因为没有为弹窗写单元测试。本来的回传数据,我写的,获取到数据之后。this.Model.Insert(0,数据),回传this.Model[this.Model.Count-1],最后只有一条数据了。总......
  • Git冲突分析及解决
    Git冲突分析及解决一、gitpull时冲突解决完冲突以后,原来的一个commit,会变成两个,解决冲突的过程也会被提交为一个commit1、gitpull在commit后执行1)情景gitbranch#*b_b#mastergitaddb.txtgitcommit-m'updateb_ba.txt'gitpulloriginmaster#此时......
  • 方芳:武汉市江夏区对于金融支农创新模式与案例可行性分析总结
    武汉市江夏区对于金融支农创新模式与案例可行性分析武汉市江夏区交通局武汉市江夏区公路局  武汉市江夏区公路建筑工程公司武汉市江夏城投集团有限公司武汉江夏路桥工程总公司 武汉工程大学 土木工程与建筑学院    方芳    15927602711 在当今社......
  • R语言面板平滑转换回归(PSTR)分析案例实现|附代码数据
    全文下载链接: http://tecdat.cn/?p=3765最近我们被客户要求撰写关于PSTR的研究报告,包括一些图形和统计输出。在本文中,建模过程包括三个阶段:表述,估计和评估,本文帮助用户进行模型表述、估计,进行PSTR模型评估 ( 点击文末“阅读原文”获取完整代码数据******** ) 。在程序包中实......
  • 【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享|附代码
    全文链接:http://tecdat.cn/?p=18770 最近我们被客户要求撰写关于复杂网络分析的研究报告,包括一些图形和统计输出。为了用R来处理网络数据,我们使用婚礼数据集 ( 查看文末了解数据获取方式 ) 。CNA研究和应用爆炸式增长的突出原因是两个因素-一个是廉价而强大的计算机的可......
  • TLS1.2握手流程分析(RSA,ECDHE),和TLS1.3区别
    目录一、加密算法简介1.2RSA简要流程1.1ECDHE简要流程二、TLS1.2握手消息简介三、TLS1.2RSA流程四、TLS1.2ECDHE流程五、TLS1.2和TLS1.3区别5.1更快的访问速度5.2更强的安全性六、wareshark抓包验证TLS1.2流程6.1搭建httpsserver(springboot)6.2请求并抓包6.3抓包结果分......
  • APP中RN页面热更新流程-ReactNative源码分析
    平时使用WebStorm或VSCode对RN工程中的文件修改后,在键盘上按一下快捷cmd+s进行文件保存,此时当前调试的RN页面就会自动进行刷新,这是RN开发相比于原生开发一个很大的优点:热更新。那么,从按一下快捷cmd+s到RN页面展示出最新的JS页面,这个过程是怎样发生的呢?下面根据时间顺序来梳理一下......
  • 记一次排错的过程
    解析某网站的内容,用requests库获得html内容后,用BeautifulSoup来解析内容其中有个标签大概这样,代码流程大概这样cookie='xxxxx'r=requests.get(url,cookies=cookies)page=BeautifulSoup(r.text)page.find('div',class_='gh-ji')结果始终说方......