相同的代码也编译不过?

liudanking 2009-04-23 10:00:33
我先在VC6里面创建了一个MFC的项目,然后点击一个按钮获取当前系统的时间并显示出来:

// TODO: Add your control notification handler code here
CString str1;
CTime tm;
tm=CTime::GetCurrentTime();
str1= tm.Format("%Y年%m月%d日 %X");
this->GetDlgItem(IDC_EDIT1)->SetWindowText(str1);
this->SetWindowText("显示系统时间的简单窗体");
这个可以正常运行,得到的结果也是正确的。

然后我又在vs2008里面创建了一个MFC项目,窗体一样,控件的名字也一样,在相同的按钮下面写了相同的事件执行代码:
// TODO: Add your control notification handler code here
CString str1;
CTime tm;
tm=CTime::GetCurrentTime();
str1= tm.Format("%Y年%m月%d日 %X");
this->GetDlgItem(IDC_EDIT1)->SetWindowText(str1);
this->SetWindowText("显示系统时间的简单窗体");
结果编译的时候出现这两个错误:
错误 1 error C2664: “CWnd::SetWindowTextW”: 不能将参数 1 从“const char [23]”转换为“LPCTSTR” f:\c++程序\c++mfc\c++mfc\c++mfcdlg.cpp 187 c++mfc
错误 2 error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [5]”转换为“LPCTSTR” f:\c++程序\c++mfc\c++mfc\c++mfcdlg.cpp 188 c++mfc

请问这是为什么?另外大家写MFC的时候用的是VC6还是用的VS呀?
...全文
198 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhayumu 2011-05-03
  • 打赏
  • 举报
回复
VC6.0默认是ASCII编码
VS2008 默认是Unicode编码
f22fbi 2009-04-23
  • 打赏
  • 举报
回复
如LS所说
默认情况下VC6的是多字节,VC8的是Unicode
ltc_mouse 2009-04-23
  • 打赏
  • 举报
回复
两个工程的项目配置不太一样的(有可能是默认不同). VC6的是多字节,VC8的是Unicode~

解决方法:
1. 改后者工程配置,使用多字节编码...
2. 如5楼那样,对文本串使用TEXT或者_T,就跟编码配置无关了,在VC系列中移植性好
chongyang 2009-04-23
  • 打赏
  • 举报
回复
默认 使用了 unicode 的原因
icansaymyabc 2009-04-23
  • 打赏
  • 举报
回复
记住,以后没事的时候所有的字符串都要用 TEXT() 把它包括起来,这样做符合可移植性的要求。
如果你要做一个仅能在VC2008里能用在VC6里不能用的程序,你可以这样写:

str1= tm.Format(L"%Y年%m月%d日 %X");
icansaymyabc 2009-04-23
  • 打赏
  • 举报
回复
// TODO: Add your control notification handler code here
CString str1;
CTime tm;
tm=CTime::GetCurrentTime();
str1= tm.Format(TEXT("%Y年%m月%d日 %X"));
this->GetDlgItem(IDC_EDIT1)->SetWindowText(str1);
this->SetWindowText(TEXT("显示系统时间的简单窗体"));

上述代码在 VS6和VS2008里都能通过
mosaic 2009-04-23
  • 打赏
  • 举报
回复
看起来就是那两个函数的参数类型变为LPCTSTR了,那就强制转换一下看看行不行。
liudanking 2009-04-23
  • 打赏
  • 举报
回复
请问那该怎么解决这个改动带来的不同呢?
liliangbao 2009-04-23
  • 打赏
  • 举报
回复
帮顶!
baiwei156 2009-04-23
  • 打赏
  • 举报
回复
vs2008下对c++做了很大的改动。。。
直接用vc6.0下的代码是不行了

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧