Windows CE和Windows 7上相同字体的不同TEXTMETRIC值

时间:2014-01-14 21:30:53

标签: c++ winapi fonts gdi

我有C ++ Win32应用程序,它支持Windows CE 6.0,它使用GDI显示在矩形内剪切的不同大小的文本。我有一个问题,文本被修剪在CE版本而不是Windows 7版本中我跟着它到我在使用TEXTMETRIC结构的tmAveCharWidth成员缩放字体时。

我有这样的代码来获取tmAveCharWidth,结果是Windows 7上的8和Windows CE上的9具有相同的字体,这导致以后的计算出现问题。什么可以解释这种差异?

LOGFONT logFont = {};
logFont.lfHeight            = -19;
logFont.lfWidth             = 0;
logFont.lfWeight            = FW_NORMAL;
logFont.lfCharSet           = DEFAULT_CHARSET;
logFont.lfOutPrecision      = OUT_DEFAULT_PRECIS;
logFont.lfClipPrecision     = CLIP_DEFAULT_PRECIS;
logFont.lfQuality           = DEFAULT_QUALITY;
logFont.lfPitchAndFamily    = DEFAULT_PITCH | FF_DONTCARE;
::wcscpy_s(logFont.lfFaceName, LF_FACESIZE, faceName);

HFONT font = ::CreateFontIndirect(&logFont);
HDC hdc = ::CreateCompatibleDC(NULL);
HGDIOBJ oldObj = ::SelectObject(hdc, font);
TEXTMETRIC metrics = {};
::GetTextMetrics(hdc, &metrics);

std::cout << metrics.tmAveCharWidth;

使用AddFontResource()添加程序使用的字体,我使用GetFontData()来检查我使用CreateFontIndirect()创建的字体是否实际上在两个版本中都使用了该字体。

0 个答案:

没有答案