Hvordan kan jeg få en liste over installerede skrifttyper på Windows, ved hjælp af uhåndteret C ++?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har udforsket en smule, og indtil videre har jeg fundet EnumFontFamiliesEx (...). Det ser imidlertid ud til, at denne funktion bruges til at returnere alle tegnsæt for en given skrifttype (fx 'Arial').


Jeg kan ikke helt finde ud af, hvordan man får listen over installerede skrifttyper til at begynde med. Eventuelle hjælp/forslag vil blive værdsat.


Tak på forhånd.

Bedste reference


Du kan gøre det sådan noget:


LOGFONT lf;
lf.lfFaceName[0] = '';
lf.lfCharSet = DEFAULT\_CHARSET;
HDC hDC = ::GetDC();
EnumFontFamiliesEx(hDC, &lf, (FONTENUMPROC)&EnumFontFamExProc, 0, 0);
ReleaseDC(hDC);


Definer derefter en tilbagekaldsfunktion:


int CALLBACK EnumFontFamExProc(
   ENUMLOGFONTEX *lpelfe,
  NEWTEXTMETRICEX *lpntme,
  DWORD FontType,
  LPARAM lParam
  )
{
    AfxMessageBox(lpelfe->elfFullName);

    //Return non--zero to continue enumeration
    return 1;
}

Andre referencer 1


Du kan måske se her, da koden forklarer, hvordan du bruger EnumFontFamiliesEx for at få alle skrifttypenavne. [4]