如何检查CreateFont()的成功

时间:2014-05-19 10:17:02

标签: winapi fonts font-face

众所周知,win32 api CreateFont() - 函数不保证创建所需的字体。不幸的是,它默默地“失败”并返回替换字体的句柄。

这很糟糕,因为我的应用程序需要知道CreateFont()的成功。 为了检查这一点,我做了以下工作,效果很好:

// LOGFONT lf; ....
// lf.lfFaceName == "nameWanted"   // assign my desired font name

HFONT hFnt = ::CreateFontIndirect(&lf);
HDC dc = ::CreateDC("DISPLAY",0,0,0);
HFONT oldfont = (HFONT)::SelectObject(dc, _h);
char nameFound[32];
::GetTextFace(dc,32,nameFound);
::SelectObject(dc, oldfont);
::DeleteDC(dc);
::DeleteObject(hFont);

const bool isOk = _stricmp("nameWanted", nameFound) == 0;
if (!isOk) {
    // Font doesn't seem to be available.
    // Handle this case
    ...
}

然而,对我来说这看起来有点过分,我想知道,是否有直接的方法来检查CreateFont()的成功。 我错过了什么吗?

0 个答案:

没有答案