微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GetTextExtentPoint32可以但无法通过验证

如何解决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 举报,一经查实,本站将立刻删除。