VC2008 CString::Format 问题

yang554023631 2010-07-18 09:37:22
小弟正在学习孙鑫的《VC++深入详解》的视频,用的是VC2008,和VC6.0差别挺大的。碰到CString::Format的问题解决不了,求达人指教。
说说我的问题吧,举个例子:
先新建一个项目CMenu的项目,单文档的。
给CMenuView添加一个LBUTTONDOWN的消息处理函数,和int型变量m_a、CString型变量m_str。
在消息处理函数中写:
m_a=10;
m_str.Format("x=%d",m_a);
MessageBox(m_str); (不记得是MessageBox(m_str);还是MessageBox(&m_str);了,但是这个地方我没写错 )

调试,说我类型不对(我用的是UNICODE),我改m_str.Format(_T("x=%d"),m_a);这下通过编译了,但是我在产生的窗口中左击鼠标就弹出一个错误对话框,叫我选中止、忽略和重试。换成m_str.Format((WCHAR)"x=%d",m_a);和_T()的情况一样。

在网上看了一下,有说可以把UNICODE改为多字符集的,我也改了,项目->属性->常用->多字符集。代码还是
m_a=10;
m_str.Format("x=%d",m_a);
MessageBox(m_str);
结果还是有问题。

崩溃。。。。。。T_T
那位达人能告诉我CString::Format该怎么用啊?谢谢啦!
...全文
246 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
加上_T的宏,进行编码的自动变换
jbz001 2010-07-18
  • 打赏
  • 举报
回复
VS2008要加上_T("字符")
建议你用VC6.0英文版的学,和教程上匹配。
VC6.0也是经典版本,很多书都是以这个为开发平台的,很多公司也仍然大量使用。
学完了再熟悉新版本。
AlanBruce 2010-07-18
  • 打赏
  • 举报
回复
Unicode

多字节字符串问题

luocw110 2010-07-18
  • 打赏
  • 举报
回复
为什么非得写个等号
jixingzhong 2010-07-18
  • 打赏
  • 举报
回复
建议可以考虑使用 CStringT,字符串都带上_T()宏,
这样就不会遇到这样的问题
饭fan有引力 2010-07-18
  • 打赏
  • 举报
回复
要用_T 或者L,或者还可以在设置哪里调整一下设置就可以了
ayw215 2010-07-18
  • 打赏
  • 举报
回复
up
另外,别忘记了加上<tchar.h>头文件
[Quote=引用 1 楼 arong1234 的回复:]

任何时候字符串都不应该写成"x=%d",而应该是_T("x=%d"),你也说了,你是Unicode编译,而"x=%d"显然不是unicode的
[/Quote]
jixingzhong 2010-07-18
  • 打赏
  • 举报
回复
项目->属性->常用->多字符集

然后rebuild all
arong1234 2010-07-18
  • 打赏
  • 举报
回复
任何时候字符串都不应该写成"x=%d",而应该是_T("x=%d"),你也说了,你是Unicode编译,而"x=%d"显然不是unicode的
九度空间 2010-07-18
  • 打赏
  • 举报
回复
在字符串前面加上_T(" ")
yang554023631 2010-07-18
  • 打赏
  • 举报
回复
谁能告诉我,采用Unicode的情况下要怎样做才能成功呢?在问题中我说过了_T()我试过了,可以通过编译,但运行时会弹出错误提示。
小弟今天是第一次发帖,看到众达人的回复非常激动,CSDN是个好东西啊!谢谢大家!
yang554023631 2010-07-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jixingzhong 的回复:]

建议可以考虑使用 CStringT,字符串都带上_T()宏,
这样就不会遇到这样的问题
[/Quote]
我试了一下,采用多字符集,之后rebuiltall果然成功了,还是最开始的代码不加类型转换。非常感谢!
matrixcl 2010-07-18
  • 打赏
  • 举报
回复
楼主,说实话我认为你的代码问题不在这里。

建议调试找出出错位置
wade_2003 2010-07-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jixingzhong 的回复:]
建议可以考虑使用 CStringT,字符串都带上_T()宏,
这样就不会遇到这样的问题
[/Quote]

是这样的,要不就单步调试一下,看看出现错误的地方在哪里?是什么错误
yqzhao_sx 2010-07-18
  • 打赏
  • 举报
回复
VC6.0能不能安装在Windows 7上面呀?

64,674

社区成员

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

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