差MSN EnumFonts或者EnumFontFamilies必须得调用一个 callback function函数
函数体的定义:
static int CALLBACK EnumFontNameProc (ENUMLOGFONT* lpelf,NEWTEXTMETRIC* lpntm, int nFontType, LPARAM lParam);
函数内容:
int CALLBACK CNewChildTXTSet::EnumFontNameProc(ENUMLOGFONT *lpelf, NEWTEXTMETRIC *lpntm, int nFontType, LPARAM lParam)
{
CNewChildTXTSet* pWnd = (CNewChildTXTSet*) lParam;
if (nFontType & TRUETYPE_FONTTYPE)
pWnd->m_effect.AddString (lpelf->elfLogFont.lfFaceName);
return 1;
}
调用函数:
CPaintDC dc(this);
::EnumFontFamilies(dc.m_hDC, NULL, (FONTENUMPROC)EnumFontNameProc, (LPARAM) this);
m_effect是我控件的变量 CNewChildTXTSet是我Dlg窗体类
这样就能够调出显示所有windows当前机器上的字体