1
我已經探索了一下,到目前爲止我找到了EnumFontFamiliesEx(...)。但是,它看起來像這個函數用於返回給定字體的所有字符集(例如「Arial」)。如何使用非託管C++獲取Windows上已安裝字體的列表?
我不能完全弄清楚如何獲得安裝字體的列表開始。任何幫助/建議,將不勝感激。
預先感謝您。
我已經探索了一下,到目前爲止我找到了EnumFontFamiliesEx(...)。但是,它看起來像這個函數用於返回給定字體的所有字符集(例如「Arial」)。如何使用非託管C++獲取Windows上已安裝字體的列表?
我不能完全弄清楚如何獲得安裝字體的列表開始。任何幫助/建議,將不勝感激。
預先感謝您。
你可以做這樣的事情:
LOGFONT lf;
lf.lfFaceName[0] = '\0';
lf.lfCharSet = DEFAULT_CHARSET;
HDC hDC = ::GetDC();
EnumFontFamiliesEx(hDC, &lf, (FONTENUMPROC)&EnumFontFamExProc, 0, 0);
ReleaseDC(hDC);
然後定義一個回調函數:
int CALLBACK EnumFontFamExProc(
ENUMLOGFONTEX *lpelfe,
NEWTEXTMETRICEX *lpntme,
DWORD FontType,
LPARAM lParam
)
{
AfxMessageBox(lpelfe->elfFullName);
//Return non--zero to continue enumeration
return 1;
}
您可能想看看here,因爲這裏的代碼解釋瞭如何使用EnumFontFamiliesEx
來獲取所有字體名稱。