So finden Sie, ob das System die Schrift habe ich in MFC benötigt?
Frage
Ich mag die folgende Funktion schreiben
bool IsFontExistInSystem(const CString& fontStyle) const
{
}
Gibt es eine API in Windows, dies zu tun? Vielen Dank!
Lösung
Hier einige alte Code, den ich ausgegraben, dass überprüft, ob eine Schriftart installiert ist. Es könnte mit aufmöbeln in Ordnung gebracht werden, aber Sie bekommen 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;
}
Andere Tipps
könnten Sie EnumFontFamiliesEx
ob die aktuelle Schriftart vorhanden ist.
UPD: Ich habe gerade erfahren, dass es von MS empfohlen EnumFontFamiliesEx statt EnumFontFamilies zu verwenden
.Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow