int CALLBACK EnumFontFamExProc(//用于判断设备上下文是否拥有该字体的回调函数
ENUMLOGFONTEX *lpelfe, // logical-font data
NEWTEXTMETRICEX *lpntme, // physical-font data
DWORD FontType, // type of font
LPARAM lParam // application-defined data
)
{
//CString strName = lpelfe->elfLogFont.lfFaceName;
//MessageBox(NULL , strName , 0 , 0);
return 10;
}
BOOL isSystemHasFont(HDC hdc , CString fontName)//判断是否可以使用该字体
{
CFont font;
if( font.CreatePointFont(12,fontName) )
{
LOGFONTW lf;
wcscpy_s(lf.lfFaceName , min(LF_FACESIZE , fontName.GetLength()+1) , fontName.GetBuffer());
int iRet = EnumFontFamiliesExW(hdc , &lf , (FONTENUMPROC)EnumFontFamExProc , (LPARAM)0 , 0);
font.DeleteObject();
return iRet==10?TRUE:FALSE;
}
return FALSE;
}
判断是否可以使用微软雅黑,isSystemHasFont( hdc , L"微软雅黑");