使用CDC::GetTextExtent出现了问题的奇怪问题,m_hDC 是有效的,但GetTextExtent内部调用GetExtentPoint32有时失败
本人写了一个程序,使用了一个开源的ChartCtrl(http://www.codeproject.com/KB/miscctrl/High-speedCharting.aspx),控件在刷新时要使用GetTextExtent来获取控件上字符串的尺寸。
在界面视图A上放置CChartCtrl控件,一个工作线程去定时取数据,然后调用界面视图A的方法将数据数据在CChartCtrl控件上界面出来,程序在运行的时候有时出现f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxwin1.inl,即GetTextExtent内部调用GetExtentPoint32()返回FALSE导致VERIFY失败而弹出的对话框,如果DEBUG模时,忽略掉该问题了,程序又可以正常运行了,但过一段时间又出这样的问题。
仔细分析了CChartCtrl的代码,m_hDC绝对是有效的,而且在运行过程中没有改过CDC对象。并且不存在多线程访问界面视图A。
出现问题后调用GetLastError()都返回0,即正常。
好奇怪的问题了,搞了一周了还没有找到解决方案,先谢谢各位的帮助了。