【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类型,所以才会出现以上高亮后的问题。
。
if (block.Font.bItalic)
{
UINT nChar = (UINT)block.strText.GetAt(strlen(block.strText) + -1);
if (nChar >= 0xA0)
{
nChar = ((UINT)block.strText.GetAt(strlen(block.strText) + -2) >> 8) + nChar;
nChar = nChar & 0xFFFF;
int nWidth;
GetCharWidth32(hdc,nChar ,nChar ,&nWidth);
nBlockWidth = sz.cx + nWidth;
}
else
{
ABC czAbc = {0};
GetCharABCWidths(hdc,nChar,nChar,&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);
通过这个函数获取当前字体下,最后一个字符的宽度。
。能够非常好的全然显示出来!
【SonicUI】关于字体高亮的问题。。的更多相关文章
- NX二次开发-UFUN获取对象的显示属性(图层,颜色,空白状态,线宽,字体,高亮状态)UF_OBJ_ask_display_properties
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize( ...
- 【cocos2d-x 手游研发小技巧(6)聊天系统+字体高亮】
转载请注明出处:http://www.cnblogs.com/zisou/p/cocos2dxJQ-6.html 聊天系统在手机网游中是最常见的交互工具,大家在一起边玩游戏边聊天岂不乐哉: 废话不多了 ...
- eclipse 设置字体高亮
在eclipse中不小心按错了什么键,使得变量的高亮显示没了. 其恢复方式如下: 选择:windows-> preferences->java->Editor->Mark Oc ...
- 【Linux 操作系统】 Secure CRT 终端配置 -- 配置语法高亮 光标 和 字体
. 1. Secure CRT 中没有想要的字体 Windows 8 下没有 Courier New 字体, 需要在系统的字体上进行配置, 进入 C:\Windows\Fonts 目录, 下面是目录的 ...
- Python终端如何输出彩色字体
实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27 ...
- IOS6 字体高亮显示
ios6之前在一个字符串中如果也让某个字体高亮或者特殊显示(如: 关注[ ]),需要用单独一个的标签进行显示,或者利用CoreText进行字体绘绘制,非常麻烦: 现在IOS6 中TextView,la ...
- Python终端输出打印彩色字体的方法
一 实现过程 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是0 ...
- python输出彩色字体
Python终端如何输出彩色字体 实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ES ...
- python 字体颜色的设置
实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27 ...
随机推荐
- vue的钩子函数
1.computed 计算属性 计算属性将被混入到 Vue 实例中.所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 1..aPlus: { get: function ...
- CSS的水平居中和垂直居中解决方案
在写CSS样式的时候,有时为了美观,会添加水平居中和垂直居中,这时候你有可能会遇到很棘手的问题,有些水平居中和垂直居中的属性添加上去完全没反应,下面给大家列举一些CSS水平居中和垂直居中的终极解决方案 ...
- 如何组织CSS?
前端工程师在开发一个单页面或者小网站的时候有可能不会在意CSS的组织问题,但如果要开发一个中大型的网站,就要好好的组织CSS文件,不然会增加维护成本,整个网站的结构也没条理性. 如何组织CSS?一般常 ...
- Google Summer of Code 2017 经验谈
Google Summer of Code (GSoC) 2018 又要开始了. 如果想实现你心中的开源梦想, 用代码让世界变得更美好. 参加GSoC可能是你进入开源的世界最好途径. GSoC是什么 ...
- 我比xx强在哪里?弱在哪里?
向下管理? 向上管理? 自我形象? 人机关系运作? 弱项不在管理方面: 在向上的人际关系处理和机会把握方面.
- Windows环境下VMware虚拟机的自启动与自动关机--命令行操作
.设置开机免密登录系统 1. 按下Windows + R 组合键,输入“netplwiz”,点击回车. 2. 去除需要密码登录的勾. 3. 如果需要密码,输入密码,点击确认. 二.编辑vmware ...
- 測试password强度
<html> <!--激情在最后面.请看最后面红色字 这是是个计算password强度的实例 网上有非常多这种样例 只是呢,都不怎么好 这是我写的一个完整的效果,能够通用, new一 ...
- JavaScript中获取Map集合中的key和value值(前提是:既不知道key为什么值,也不知道value有哪些值)
for(var i in maps){//通过定义一个局部变量i遍历获取map里面的所有key值 alert(maps[i]); //通过获取key对应的value值 }
- Torch 的安装与基本用法
本文安装仅限 ubuntu 系统.官方文档见:Getting started with Torch. 0. 简介 Torch 使用轻量级脚本语言 Lua 及其 C/CUDA 扩展模块实现,底层数值计算 ...
- C++标准库概述
一.C++标准库的主要组件: 1.标准C库 2.I/O流技术(对标准输入输出设备称为标准I/O,对在外磁盘上文件的输入输出称为文件I/O,对内存中指定的字符串存储空间的输入输出称为串I/O) 3.st ...