有没有办法在不使用 CDC 或使用未与显示器链接的 CDC 的情况下获取以像素为单位的字符串的宽度。需要检索字符串宽度的类不会从 CWnd 继承以使用 CWnd::GetDC() 并且无法将现有 CDC 传递给函数。
我试图创建一个不与显示器链接的虚拟 CDC,但这会导致 MFC 崩溃。理想情况下是这样的:
m_font = new CFont();
m_font->CreatePointFont(size * 10, _T("Arial"));
m_tempCDC = new CDC();
m_tempCDC->SelectObject(m_font);
return m_tempCDC->GetOutputTextExtent(_T("Test")).cx;
编辑:应该用字体名称变量替换字符串文字。