BCG库的一个bug[通俗易懂]

BCG库的一个bug[通俗易懂]作者:朱金灿来源:http://blog.csdn.net/clever101            同事在使用BCG库图表组件(BCG库的版本为BCGCBPRO1510)时遇到一个问题,就是图表标题总是出现乱码,具体如下图:我查看了一下BCG库的源码,发现BCG库的绘制接口是采用D2D的接口。D2D是微软推出的一个二维绘制的com组件,只支持unicode字符,非unicode字符需要转换

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用



作者:朱金灿

来源:http://blog.csdn.net/clever101

 

            同事在使用BCG库图表组件(BCG库的版本为BCGCBPRO1510)时遇到一个问题,就是图表标题总是出现乱码,具体如下图:

BCG库的一个bug[通俗易懂]

我查看了一下BCG库的源码,发现BCG库的绘制接口是采用D2D的接口。D2D是微软推出的一个二维绘制的com组件,只支持unicode字符,非unicode字符需要转换为unicode字符。其中绘制标题字符的代码如下:

USES_CONVERSION;CStringW wStr = T2CW(strText); // strText为图表标题m_pRenderTarget->DrawText(wStr,strText.GetLength(),pWriteTextFormat, &rectD2D, pD2DBrush, options);

这段代码是有问题的,问题在于strText转化为unicode字符wStr后,strText的长度并不等于wStr,因此DrawText绘制wStr使用的却是strText的长度,这样是明显不对的,会出现读取内存越界从而读到的是乱码。还有一个隐含的错误是假如strText本身就是unicode字符,那么它就不需要转换的。因此需要把这句代码作如下修改:

#ifndef UNICODE 

USES_CONVERSION;
CStringW wStr = T2CW(strText);
m_pRenderTarget->DrawText(wStr,wStr.GetLength(),pWriteTextFormat, &rectD2D, pD2DBrush, options);

#else

m_pRenderTarget->DrawText(strText,strText.GetLength(),pWriteTextFormat, &rectD2D, pD2DBrush, options);

#endif

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184533.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月8日 下午4:00
下一篇 2022年10月8日 下午4:16


相关推荐

  • WPF XAML X名称空间详解

    WPF XAML X名称空间详解X 名称空间里面的成员 如 X Name X Class 都是写给 XAML 编译器看的 用来引导 XAML 编译器将 XAML 代码编译为 CLR 代码 X 名称空间里面到底都有些什么 nbsp nbsp x 名称空间映射的是 http schemas microsoft com winfx 2006 xaml 望文生义 它包含的类均与解析 XAML 语言相关 所以亦称之为 XAML 名称空间

    2026年3月19日
    2
  • js获取当前时间的方法_c获取当前时间毫秒

    js获取当前时间的方法_c获取当前时间毫秒1.获取时间vardate=newDate();varyear=date.getFullYear();//返回的是年份varmonth=date.getMonth()+1;//返回的月份上个月的月份,记得+1才是当月vardates=date.getDate();//返回的是几号varday=date.getDay();//周一返回的是1,周六是6,但是周日是0

    2026年3月2日
    3
  • mybatis获取map的key_mybatis怎么处理结果集

    mybatis获取map的key_mybatis怎么处理结果集实体类:数据库:CREATETABLE`job_title_info`(`_jobtitleid`varchar(255)DEFAULTNULL,`_shortname`varchar(255)DEFAULTNULL,`_fullname`varchar(255)DEFAULTNULL,`_departmentid`varchar…

    2026年4月15日
    4
  • 【Autoit】Autoit 使用[通俗易懂]

    【Autoit】Autoit 使用[通俗易懂]一、Autoit上传文件、1.常用语法-WinActivate("title")聚焦到指定活动窗口 -ControlFocus("title&q

    2022年7月3日
    66
  • 宝塔面板安装nginx失败_卸载宝塔网站防火墙

    宝塔面板安装nginx失败_卸载宝塔网站防火墙解压并转到目录下tar-zxvfnginx-1.9.15.tar.gzcdnginx-1.9.15设置一下配置信息./configure–prefix=/usr/local/nginx,或者不执行此步,直接默认配置编译安装makemakeinstallmake的过程是把各种语言写的源码文件,变成可执行文件和各种库文件;makeinstall是把这些编译出来的可执行文件和库文…

    2025年8月26日
    10
  • Maven配置环境变量后不起作用的原因「建议收藏」

    Maven配置环境变量后不起作用的原因「建议收藏」Maven配置环境变量后不起作用的原因一.首先去maven官网下载maven相关文件点击左侧download选项选择图片中的Binaryziparchive apache-maven-3.8.1-bin.zip进行下载并解压到本地这个是解压后的文件二.配置环境变量1.添加MAVEN_HOME环境变量D:\Java\maven\apache-maven-3.8.12.添加M2_HOME环境变量(后面学习Spring会用到,可以先不进行配置)D:\Java\maven\apa

    2022年7月25日
    79

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号