精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
服务方向
联系方式
使用GetTextExtent可以获取字符串在当前渲染上下文中占用空间的大小,众所周知,Windows窗口开发区域大小都是常用概念,字符串显示区域位置和区域大小都是要认真设计,不能互相干扰,看不清楚,所以在显示时,要调用GetTextExtent来获取大小,指定合理的位置和区域大小。
如下的代码:
CFont *pFont = m_pParentWnd->GetFont(); // use same font as ctrl
CFont *pFontDC = dc.SelectObject( pFont );
CSize size = dc.GetTextExtent( strTitle );
在调用时出现异常,异常时点重试定位到MFC内部函数代码GetTextExtentPoint32位置上。
这些用法都是和MSDN里的帮助说明一样的,为什么出错,就觉得很头疼!。
在查错误时,想到最近对配置信息进行了改动,有些属性的大小和以前不一要样了,而属性里有字体的属性,因为渲染上下文里依赖字体,比如示例代码里SelectObject(pFont)就是加载字体到上下文里,所以判断是字体属性不对,创建的字体是非法无效的,理论上在创建不成字体时会有提示,但是没遇到,那么在显示时就出错了,把属性大小恢复用状,再从配置文件里加载就正常了。
这类代码是一个股票行情项目代码,这套代码非常复杂,所以在大项目时,出现小问题,更难查。
如果有这类的异常,欢迎找锐英源解决,锐英源有30年一线开发经验,英文精通,五笔快速,诚心服务。