void CMFC2View::OnDraw(CDC* pDC)
{
CMFC2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: 在此处为本机数据添加绘制代码 pDC->TextOutW( 100, 100, "test" );
}错误信息:
error C2664: 'BOOL CDC::TextOutW(int,int,const CString &)' : cannot convert parameter 3 from 'const char [5]' to 'const CString &'
1>        Reason: cannot convert from 'const char [5]' to 'const CString'
1>        Constructor for class 'ATL::CStringT<BaseType,StringTraits>' is declared 'explicit'
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]这跟那本VC6.0书上讲的一样,2005上就有这个错误
帮帮忙啊

解决方案 »

  1.   

    pDC->TextOutW( 100, 100, "test" );
    改成pDC->TextOut( 100, 100, _T("test") );
    注意字符串加上_T宏
      

  2.   

    正解。
    VS2005使用UNICODE字符集,处理字符串的时候一定要注意多使用_T宏。另外,还有两个办法解决你的问题:
    1. CString strTest=_T("Test");
       pDC->TextOut(100,100,strTest);
    2. “工程”->“设置”->“字符集”->使用ANSI字符集。(路径好象是这么样子的哈,你也可以去查查),把字符集该回成ANSI(VC6就使用了ANSI字符集),还是使用你原来的语句,编译一般不会有问题了。
      

  3.   

    pDC->TextOutW( 100, 100, L"test" ); //unicode
    或者
    pDC->TextOutW( 100, 100, L"test" ); //根据工程设置自动选择//vs2005功能默认为unicode,vc6默认为MBCS