使用的API
Windows API | 简述 |
---|
EnumFontFamilies | 枚举字体的函数 |
代码
#include <Windows.h>
#include <stdio.h>
BOOL CALLBACK EnumFamCallBack(
LPLOGFONT lplf,
LPNEWTEXTMETRIC lpntm,
DWORD FontType,
LPARAM aFontCount)
{
PINT aiFontCount = (PINT)aFontCount;
if (FontType & RASTER_FONTTYPE)
{
aiFontCount[0]++;
} else if (FontType & TRUETYPE_FONTTYPE)
{
aiFontCount[2]++;
} else
{
aiFontCount[1]++;
}
printf("fontName: %ls\tItalic=%d\n", lplf->lfFaceName, lplf->lfItalic);
if (aiFontCount[0] || aiFontCount[1] || aiFontCount[2])
{
return TRUE;
}
return FALSE;
}
DWORD ListFont(HWND hwnd)
{
HDC hdc = GetDC(hwnd);
int aFontCount[] = { 0, 0, 0 };
EnumFontFamilies(hdc, nullptr, (FONTENUMPROC)EnumFamCallBack, (LPARAM)aFontCount);
printf("光栅字体个数:%d\n", aFontCount[0]);
printf("矢量字体个数:%d\n", aFontCount[1]);
printf("TrueType字体个数:%d\n", aFontCount[2]);
return 0;
}
int main()
{
ListFont(nullptr);
return 0;
}
测试效果
