pdc-> GetOutputTextExtent()崩溃。为什么?手册说:
nCount 指定字符串中的字符数。如果nCount为-1,则计算长度。
答案 0 :(得分:0)
看来手册是错误的。在内部,它是这样实现的:
_AFXWIN_INLINE CSize CDC::
GetOutputTextExtent(LPCTSTR lpszString, int nCount) const
{
ASSERT(m_hDC != NULL);
SIZE size;
VERIFY(::GetTextExtentPoint32(m_hDC, lpszString, nCount, &size));
return size;
}
而且,GetTextExtentPoint32
文档没有不提到-1将自动计算。
但是,有一个重载兄弟对象,它只接受一个本身会计数的字符串:
_AFXWIN_INLINE CSize CDC::GetOutputTextExtent(const CString& str) const
{
ASSERT(m_hDC != NULL);
SIZE size;
VERIFY(::GetTextExtentPoint32(m_hDC, str, (int)str.GetLength(), &size));
return size;
}