Как получить список установленных шрифтов в Windows, используя неуправляемый C ++? - PullRequest
1 голос
/ 03 июня 2009

Я немного изучил и пока нашел EnumFontFamiliesEx (...). Однако похоже, что эта функция используется для возврата всех кодировок для данного шрифта (например, «Arial»).

Я не могу понять, как получить список установленных шрифтов для начала. Любая помощь / предложения будут оценены.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 03 июня 2009

Вы можете сделать это примерно так:

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 голосов
/ 03 июня 2009

Возможно, вы захотите взглянуть здесь , так как код там объясняет, как использовать EnumFontFamiliesEx для получения всех имен шрифтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...