私は次の関数システムにMFCで必要なフォントがあるかどうかを調べるには?
bool IsFontExistInSystem(const CString& fontStyle) const
{
}
を書きたいが、これを行うには、WindowsのいずれかのAPIはありますか? 多くのありがとう!
私は次の関数システムにMFCで必要なフォントがあるかどうかを調べるには?
bool IsFontExistInSystem(const CString& fontStyle) const
{
}
を書きたいが、これを行うには、WindowsのいずれかのAPIはありますか? 多くのありがとう!
フォントがインストールされているかどうかを確認するために掘り出した古いコードです。それは整理されているとすることができますが、あなたは考えを得る:
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;
}
EnumFontFamiliesEx
を使用して、実際のフォントが存在するかどうかを調べることができます。
UPD:私は、MSがEnumFontFamiliesの代わりにEnumFontFamiliesExを使用することを推奨していることを知りました。
多くの感謝!できます! – user25749