【SonicUI】关于字体高亮的问题。。

	m_pSonicString[1]->Format(_T("/c=%x, a='http://hi.csdn.net/', linkh=0xFF00F0, font, font_height=25, font_bold=1, font_italic=1/点我打开链接uM"),RGB(128,0,32));
	m_pSonicString[2]->Format(_T("/c=%x, a='http://hi.csdn.net/', linkh=0xFF00F0, font, font_height=25, font_bold=1, font_italic=0/点我打开链接uM"),RGB(128,0,32));

测试代码如上:

通过代码分析,发现了作者使用的是 API GetTextExtentPoint32

BOOL GetTextExtentPoint32(  HDC hdc,           // handle to DC
  LPCTSTR lpString,  // text string  int c,      // characters in string
  LPSIZE lpSize      // string size);

这个是函数是可以获取到字符串的宽度。。但是没有区分Italic类型,所以才会出现以上高亮后的问题。。

GetTextExtentPoint32(hdc, block.strText, block.strText.GetLength(), &sz);
					if (block.Font.bItalic)
					{
						ABC czAbc;
						GetCharABCWidths(hdc,block.strText.GetAt(strlen(block.strText) + -1),block.strText.GetAt(strlen(block.strText) + -1),&czAbc);
						nBlockWidth = sz.cx - czAbc.abcC;
					}
					else
					{
						nBlockWidth = sz.cx;
					}

\SonicUI_src\SonicUI\SonicString.cpp  477line

</pre><pre class="cpp" name="code">BOOL GetCharABCWidths(  HDC hdc,         // handle to DC
  UINT uFirstChar, // first character in range
  UINT uLastChar,  // last character in range
  LPABC lpabc      // array of character widths);

通过这个函数获取当前字体下,最后一个字符的宽度。。可以很好的完全显示出来!



时间: 2024-10-15 19:11:58

【SonicUI】关于字体高亮的问题。。的相关文章

NX二次开发-UFUN获取对象的显示属性(图层,颜色,空白状态,线宽,字体,高亮状态)UF_OBJ_ask_display_properties

1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_modl.h> 5 #include <uf_obj.h> 6 7 UF_initialize(); 8 9 UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔 10 double Corner_pt[3] = {0.0, 0.0, 0.0};//设置原点 11 char *Edge_Len[3] = {"100", &qu

eclipse 设置字体高亮

在eclipse中不小心按错了什么键,使得变量的高亮显示没了. 其恢复方式如下: 选择:windows-> preferences->java->Editor->Mark Occurences

python 字体颜色的设置

实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033). 书写格式:     开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m 注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个:另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别:但

Python终端输出打印彩色字体的方法

一  实现过程 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033). 二 书写格式 开头部分:\033[显示方式;前景色;背景色m 结尾部分:\033[0m      完整格式: \033[显示方式;前景色;背景色m要打印的文字\033[0m   如果有空格,空格也会打印出来 注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个

Python文本颜色设置

1. 实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033). 2.书写格式:      开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m 注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个:另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统

iOS UIButton按钮

系统字体 + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]]; NSArray *fontNames; NSInteger indFamily, indFont; for (indFamily=0; indFamily<[familyNames count]; ++indFamily) {     NSLog(@"Fa

UILabel的讲解

首先,我先自定义几个名词,方便接下来的讲解工作.如下图所示: 接下来,通过五个方面来讲解我们能对UILabel做出哪些改变或者称之为设置: 1.文字 1.1普通文字:内容text.字体大小font.字体颜色textColor.字体高亮颜色highlightedTextColor.是否显示高亮highlighted.(颜色方面可以使用渐变颜色) 1.2富文本文字(优先):富文本attributedText. 2.文字阴影:阴影颜色shadowColor.阴影偏移量shadowOffSet. 3.文

主要责任、 主要技术

主要责任.主要技术责任描述:    协助项目经理对产品进行构架,    软件界面架构及实现,多控制器嵌套处理    利用UI设计组提供的UI图片,使用AutoLayout布局设置对APP界面进行布局    增加多平台支付功能    负责界面搭建,数据显示    利用第三方框架百度地图开放API进行定位和周边团购数据查找    定位功能.便捷支付模块代码的编写和封装    加入支付宝.网银支付功能    本地数据缓存优化    及时消息及文件传递    OpenFire + MySQL服务器搭建 

网页版酷我音乐 ---- 谷歌插件之歌词定位

前言 通过百度搜索歌曲,进入到酷我听歌页面时,发现没有歌词定位功能. 突然想到自己可不可以实现这个效果,于是就有了这篇文章. 分析 放上我喜欢的一首歌<Hello> .界面如下 通过分析html源码,得到以下结果 1.最重要的两部分区域: 歌词区域 . 播放进度区域 2.歌词区域是一个 div [class="w_lrc_content"] ,每一句歌词是一个p标签. 3.播放进度区域是一个 div [class="w_c_progress"], 而当前