大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
作者:朱金灿
来源:http://blog.csdn.net/clever101
同事在使用BCG库图表组件(BCG库的版本为BCGCBPRO1510)时遇到一个问题,就是图表标题总是出现乱码,具体如下图:
我查看了一下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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184533.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...