如何使用非托管C ++获取Windows上已安装字体的列表?

时间:2009-06-03 15:56:44

标签: c++ windows

我已经探索了一下,到目前为止我已经找到了EnumFontFamiliesEx(...)。但是,看起来这个函数用于返回给定字体的所有字符集(例如“Arial”)。

我无法弄清楚如何获取已安装字体的列表。任何帮助/建议将不胜感激。

提前谢谢。

2 个答案:

答案 0 :(得分:3)

你可以这样做:

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

答案 1 :(得分:2)

您可能需要查看here,因为其中的代码解释了如何使用EnumFontFamiliesEx获取所有字体名称。