VC中让COMBO BOX直接调用系统的字体信息

2025-12-17 20:28:18
推荐回答(1个)
回答1:

BOOL
CALLBACK
CDlg::EnumFamScreenCallBackEx(
ENUMLOGFONTEX* pelf,
NEWTEXTMETRICEX* /*lpntm*/,
int FontType,
LPVOID pThis) /*回调函数,枚举系统已经安装的字体*/
{
if (FontType & RASTER_FONTTYPE)
return 1;
CString ss;
if(FontType & TRUETYPE_FONTTYPE)
ss=_T(pelf->elfLogFont.lfFaceName);
int kk= ((CDlg*)pThis)->m_FontList.AddString(ss); //m_FontList为一个ComboBox的控制变量
return 1;
}

BOOL CDlg::EnumerateFonts(void)/*枚举系统已经安装的字体*/
{
HDC hDC;
hDC = ::GetWindowDC(NULL);
LOGFONT lf;
ZeroMemory(&lf,sizeof(lf));
lf.lfCharSet = GB2312_CHARSET;
if (!EnumFontFamiliesEx(
hDC, // 设备描述表句柄
&lf, // 逻辑字体信息指针
(FONTENUMPROC)EnumFamScreenCallBackEx, // 回调函数指针
(LPARAM) this,
(DWORD) 0))
return FALSE;

::ReleaseDC(NULL,hDC);
return TRUE;

}

资料来源:
Google
MSDN