visual c++程序错误

来源:百度知道 编辑:UC知道 时间:2024/05/29 12:19:27
程序如下:
void CwelcomeView::OnDraw(CDC* pDC)
{
CwelcomeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

CRect r;
GetClientRect(&r);
int x=r.right/2,y=r.bottom/2;
pDC->SetTextAlign(TA_CENTER|TA_BASELINE);
pDC->TextOutW(x,y,"Welcome to Visual C++.net!");// TODO: 在此处为本机数据添加绘制代码
}

调试之后显示:

------ 已启动全部重新生成: 项目: welcome, 配置: Debug Win32 ------
正在删除项目“welcome”(配置“Debug|Win32”)的中间文件和输出文件
正在编译...
stdafx.cpp
正在编译...
MainFrm.cpp
welcome.cpp
welcomeDoc.cpp
welcomeView.cpp
f:\c++讲义\welcome\welcome\welcomeview.cpp(59) : error C2664: 'BOOL CDC::TextOutW(int,int,const CString &)' : cannot convert parameter 3 from 'const char [27]' to 'const CString &'
Reason: cannot convert from 'const char [27]' to 'const CString'
Constructor for class 'ATL::CStr

TextOutW 用的是Unicode形式的函数,它的参数只能是Unicode的,你的第三个参数 "Welcome to Visual C++.net!"是ANSI形式,所以会报错,你需要改成Unicode形式。。改成 pDC->TextOutW(x,y,L"Welcome to Visual C++.net!"));前面加一个L表示是宽字符,也就是Unicode

改成这样
pDC->TextOutW(x,y,TEXT("Welcome to Visual C++.net!"));// TODO: 在此处为本机数据添加绘制代码

改成这样
void CwelcomeView::OnDraw(CDC* pDC)
{
CwelcomeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

CRect r;
GetClientRect(r); //此处修改
int x=r.right/2,y=r.bottom/2;
pDC->SetTextAlign(TA_CENTER|TA_BASELINE);
pDC->TextOutW(x,y,"Welcome to Visual C++.net!");//改为pDC->TextOut(x,y,"Welcome to Visual C++.net!");看哈的
// TODO: 在此处为本机数据添加绘制代码
}