函数原型:void drawtext(CString str,int x,int y,int w,int h,CFont font);
函数调用:
CFont font;
font.CreateFont(12,0,0,0,400,TRUE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,_T("Aerial"));
drawtext("哈哈",0,0,100,20,font);编译没有问题,请问这是不是VC的自身问题!

解决方案 »

  1.   

    我的分不多啊,烦麻哪位知道能告诉我。还有,我讲错了,代码其它地方没有问题,只有cannot convert parameter 6 from 'class CFont' to 'class CFont' 这个编译错误!
      

  2.   

    CFont类是间接从CObject类中派生出来的
    CObject的类定义中有
    private:
    CObject(const CObject& objectSrc);              // no implementation
    void operator=(const CObject& objectSrc);       // no implementation
    这两个构造函数是私有成员,只有类内部和友元才能调用。
    所以不能把一个CFont值传给另一个CFont变量。把你的
    void drawtext(CString str,int x,int y,int w,int h,CFont font);
    改成
    void drawtext(CString str,int x,int y,int w,int h,CFont *font);
    就没错了。
      

  3.   

    用引用做参数啊void   drawtext(CString   str,int   x,int   y,int   w,int   h,CFont &font); 
      

  4.   

    原因是CFong没有定义赋值操作符,所以不能在函数参数中通过传值来传递CFont对象,解决方法见4楼。
      

  5.   

    CFont *font = new CFont();然后定义一个LOGFONT logFont结构对象,给该结构赋值;最后用font->CreateFontIndirect(&logFont)载入字体就行了,我就这么用的,绝对OK!
      

  6.   

    font->CreateFontIndirect(&logFont)载入字体就行了