小弟最近照书写了个单文档程序,就是输出一些字,然后根据自己添加的对话框,可以改变字体还有字号大小,其中调用了
EnumFontFamilies(dc.GetSafeHdc(),NULL,(FONTENUMPROC)GetFontList,(LPARAM)comfontname);这个函数获取系统的所有字体,然后在View类的APP文件最后空白处添加了  这个函数的回调函数
int CALLBACK GetFontList(ENUMLOGFONT FAR* pEachLogFont,NEWTEXTMETRIC FAR* pText,int nType,LPARAM lParam)
{
CComboBox* comfontname=(CComboBox*)lParam;
CString strname=pEachLogFont->elfLogFont.lfFaceName;
comfontname->AddString(strname);
return TRUE;
}但是运行总是出错,错误的内容好像是找不到这个函数在哪里,我又把这个函数放在了View类的APP文件开头处,结果程序运行不出来了下面是那两行错误信息,请高手忙中抽闲,帮忙看一下
D:\visual c++项目\52\52View.cpp(142) : error C2065: 'GetFontList' : undeclared identifier
D:\visual c++项目\52\52View.cpp(205) : error C2373: 'GetFontList' : redefinition; different type modifiers

解决方案 »

  1.   

    int CALLBACK GetFontList(ENUMLOGFONT FAR* pEachLogFont,NEWTEXTMETRIC FAR* pText,int nType,LPARAM lParam)CALLBACK 去掉,换成类名+::
      

  2.   

    给出的信息无法确定,贴个例子吧INT CALLBACK NEnumFontNameProc(LOGFONT *plf, TEXTMETRIC* /*ptm*/, INT /*nFontType*/, LPARAM lParam)
    {
    CComboBox* comboBox = (CComboBox*) lParam; comboBox->AddString(plf->lfFaceName); return TRUE;
    }
    //调用时
    EnumFontFamilies(GetDC()->m_hDC, (LPTSTR) NULL, (FONTENUMPROC)NEnumFontNameProc, (LPARAM)&m_fontNameCombo);回调函数这里用的全局,写到CPP文件靠上部分的位置(至少要在调用EnumFontFamilies之前,不然就要声明下),都是在同一个CPP文件的。。
      

  3.   

    C2065: 'GetFontList' : undeclared identifier
    -----------------------------------------------
    GetFontList 函数没有定义。
      

  4.   

    但是运行总是出错,错误的内容好像是找不到这个函数在哪里,我又把这个函数放在了View类的APP文件开头处,结果程序运行不出来了
    ---------------
    在你需要调用的地方加extern int CALLBACK ...
      

  5.   

    其实我也是初学者,什么都不懂。按照例程,比葫芦画瓢,这个回调函数在申明时应加一个 static 修饰符。楼主试试看,不知道楼主还来看回帖吗?