网上有大量的有关“获取字符串的显示宽度”的文章,基本都是用 GetTextExtent 或 GetTextExtentPoint32,但大多数都没说字体的影响,直接结果是误差很大,包括MSDN上的示例:

MSDN这段示例原代码:
// Pointer to the myListBox.
extern CListBox* pmyListBox;
// Find the longest string in the list box.
CString str;
CSize sz;
int dx=0;
CDC* pDC = pmyListBox->GetDC();
for (int i=0;i < pmyListBox->GetCount();i++)
{
pmyListBox->GetText( i, str );
sz = pDC->Get

本文主要讨论在VC++和MFC中,如何精确无误差地使用GetTextExtent和GetTextExtentPoint32函数,指出忽略字体影响会导致尺寸计算误差。并提供了代码示例进行改进,强调了获取当前字体信息的重要性,推荐使用GetTextMetrics获取字体详细信息。
最低0.47元/天 解锁文章

4641

被折叠的 条评论
为什么被折叠?



