C++ 如何查找系统是否具有MFC中所需的字体?

C++ 如何查找系统是否具有MFC中所需的字体?,c++,windows,mfc,fonts,system,C++,Windows,Mfc,Fonts,System,我想编写以下函数 bool IsFontExistInSystem(const CString& fontStyle) const { } windows中是否有API来执行此操作? 非常感谢 您可以使用查找是否存在实际字体 UPD:我刚刚了解到MS建议使用EnumFontFamiliesEx而不是EnumFontFamiliesEx。以下是我找到的一些旧代码,可以检查是否安装了字体。这可能与被整理有关,但你会想到: static int CALLBACK CFontHelper::

我想编写以下函数

bool IsFontExistInSystem(const CString& fontStyle) const
{

}
windows中是否有API来执行此操作? 非常感谢

您可以使用查找是否存在实际字体


UPD:我刚刚了解到MS建议使用EnumFontFamiliesEx而不是EnumFontFamiliesEx。

以下是我找到的一些旧代码,可以检查是否安装了字体。这可能与被整理有关,但你会想到:

static int CALLBACK CFontHelper::EnumFontFamExProc(ENUMLOGFONTEX* /*lpelfe*/, NEWTEXTMETRICEX* /*lpntme*/, int /*FontType*/, LPARAM lParam)
{
    LPARAM* l = (LPARAM*)lParam;
    *l = TRUE;
    return TRUE;
}

bool Font::IsInstalled(LPCTSTR lpszFont)
{
    // Get the screen DC
    CDC dc;
    if (!dc.CreateCompatibleDC(NULL))
    {
        return false;
    }
    LOGFONT lf = { 0 };
    // Any character set will do
    lf.lfCharSet = DEFAULT_CHARSET;
    // Set the facename to check for
    _tcscpy(lf.lfFaceName, lpszFont);
    LPARAM lParam = 0;
    // Enumerate fonts
    ::EnumFontFamiliesEx(dc.GetSafeHdc(), &lf,  (FONTENUMPROC)EnumFontFamExProc, (LPARAM)&lParam, 0);
    return lParam ? true : false;
}

我讨厌你打我[@GMan,这是一个对称的过程:)实际上,我认为这个函数可以返回数据,而不是提供回调函数……为什么工程师会给出这么简单的问题,复杂的设计……使用起来一点都不方便。