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 (将#修改为@)