想在窗口中显示一句话
void CChildView::OnPaint() 
{
CPaintDC dc(this); // 用于绘制的设备上下文

// TODO: 在此处添加消息处理程序代码
dc.TextOutW(0,0,"This is my first MFC");
// 不要为绘制消息而调用 CWnd::OnPaint()
}编译后出现以下错误信息 error C2664: “BOOL CDC::TextOutW(int,int,const CString &)”: 不能将参数 3 从“const char [21]”转换为“const CString &”
1>        原因如下: 无法从“const char [21]”转换为“const CString”
1>        class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
我应该怎样修改程序呢?mfc

解决方案 »

  1.   


    CString strText("This is my first MFC");
    dc.TextOut(0,0,strText); virtual BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount );BOOL TextOut( int x, int y, const CString& str );这里是重载函数,上面那个是用字符串和要显示的字符串长度,也就是说你那个函数只要再多带一个字符串长度的参数也行,下面是接受一个CString对象作为参数
      

  2.   

     “const char [21]”转换为“const CString &”是ASCII字符串
    TextOutW 只接受unicode参数.
      

  3.   

    dc.TextOutW(0,0,_T("This is my first MFC"));
      

  4.   

    这是你建立MFC时(估计使用的vs2012之类的)选用了默认的UNICODE字符集,你可以在工程里面设置成多字符集 或者改为dc.TextOutW(0,0,_T("This is my first MFC"));