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,这是一个对称的过程:)实际上,我认为这个函数可以返回数据,而不是提供回调函数……为什么工程师会给出这么简单的问题,复杂的设计……使用起来一点都不方便。