Ich möchte die folgende Funktion schreiben
bool IsFontExistInSystem(const CString& fontStyle) const
{
}
Gibt es eine API in Windows, um dies zu tun? Vielen Dank!
Ich möchte die folgende Funktion schreiben
bool IsFontExistInSystem(const CString& fontStyle) const
{
}
Gibt es eine API in Windows, um dies zu tun? Vielen Dank!
Hier ist ein alter Code, den ich ausgegraben habe, um zu prüfen, ob eine Schriftart installiert ist. Er könnte etwas aufgeräumt werden, aber Sie verstehen die Idee:
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;
}
Sie könnten verwenden EnumFontFamiliesEx
um herauszufinden, ob eine aktuelle Schriftart existiert.
UPD: Ich habe soeben erfahren, dass MS empfiehlt, EnumFontFamiliesEx anstelle von EnumFontFamilies zu verwenden.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.