如何解决GetTextExtentPoint32可以但无法通过验证
在我的编码项目中,我有一个主线程,然后有一个子线程。在这个项目中,我使用AFX函数GetTextExtent(),该函数在afxwin1.inl文件中定义如下:
_AFXWIN_INLINE CSize CDC::GetTextExtent(LPCTSTR lpszString,int nCount) const
{
ASSERT(m_hAttribDC != NULL);
SIZE size;
VERIFY(::GetTextExtentPoint32(m_hAttribDC,lpszString,nCount,&size));
return size;
}
在主线程中调用GetTextExtent()时,此方法正常。但是,如果在子线程中调用GetTextExtent(),我往往会(并非总是)获取异常,这将要求我中止,重试或忽略。阅读控制台,我收到此消息:
调试断言失败!
程序:C:\ WINDOWS \ SYstem32 \ mfc140d.dll 文件:d:\ agent_work \ 1 \ s \ src \ vctools \ vc7libs \ ship \ atlmfc \ include \ afxwin1.inl 线:632
我认为这是引发此异常的VERIFY功能,因此我摆脱了VERIFY功能。现在,此功能在主线程和子线程中都可以正常工作。显然,此GetTextExtentPoint32()有时未通过VERIFY。但是,如果没有此VERIFY检查,它就可以正常工作。
有人知道为什么它不通过VERIFY吗?知道为什么它可以通过VERIFY时效果很好吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。