C++ 不带CDC的MFC字符串宽度
是否有任何方法可以在不使用CDC或使用未与显示器链接的CDC的情况下获得以像素为单位的字符串宽度。需要检索字符串宽度的类不会从CWnd继承以使用CWnd::GetDC(),并且无法将现有CDC传递给函数 我试图创建一个虚拟CDC,它不与显示器链接,但是这会导致MFC崩溃。理想的情况是:C++ 不带CDC的MFC字符串宽度,c++,mfc,fontmetrics,C++,Mfc,Fontmetrics,是否有任何方法可以在不使用CDC或使用未与显示器链接的CDC的情况下获得以像素为单位的字符串宽度。需要检索字符串宽度的类不会从CWnd继承以使用CWnd::GetDC(),并且无法将现有CDC传递给函数 我试图创建一个虚拟CDC,它不与显示器链接,但是这会导致MFC崩溃。理想的情况是: m_font = new CFont(); m_font->CreatePointFont(size * 10, _T("Arial")); m_tempCDC = new CDC(); m_tempCD
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;
编辑:应该用字体名称变量替换字符串文字。如果不知道需要使用的字体,如何计算宽度
我建议在您看到所需设备上下文的位置计算宽度,并将其传递给需要此宽度的类。字体的宽度取决于如何转换为像素,这取决于它所呈现的设备。例如,打印机和显示器显然是不同的。这就是为什么这个函数需要DC
您可以使用
CDC::FromHandle(::GetDC(NULL))
获取桌面的DC,但是我知道字体,CFont对象m\u字体?