2009-06-03 95 views
1

我已經探索了一下,到目前爲止我找到了EnumFontFamiliesEx(...)。但是,它看起來像這個函數用於返回給定字體的所有字符集(例如「Arial」)。如何使用非託管C++獲取Windows上已安裝字體的列表?

我不能完全弄清楚如何獲得安裝字體的列表開始。任何幫助/建議,將不勝感激。

預先感謝您。

回答

2

你可以做這樣的事情:

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; 
} 
2

您可能想看看here,因爲這裏的代碼解釋瞭如何使用EnumFontFamiliesEx來獲取所有字體名稱。

相關問題