搜索
bottom↓
回复: 15

今天刚开始学VC++。。觉得好难哈,就写了以个入门的函数还不对,是关于FORMAT的。大家帮

[复制链接]

出0入0汤圆

发表于 2009-6-8 00:27:00 | 显示全部楼层 |阅读模式
先说下过程吧。看了一本c++的教材,就跟着练,他用的Visual Studio 2005,
首先新建了以个MFC的可执行工程。
然后在类视图里打开CMy1View::OnDraw
然后在下面添加代码的地方就写了下面几句。
int a;
CString strOutput;
a = 123;
strOutput.Format("%d",a);
pDC -> TextOut(0,0,strOutput);

编译的时候出现下面的错误错误        1        error C2664: “void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [3]”转换为“const wchar_t *”       

错误在strOutput.Format("%d",a);这一行

如果就写个
pDC -> TextOut(0,0,"Hello World");
这个编译就出现了
错误        1        error C2664: “BOOL CDC::TextOutW(int,int,const CString &)”: 不能将参数 3 从“const char [13]”转换为“const CString &”       

今天才开始学VC++, 招数抄了个程序都不对,挺受打击。
大家帮我下吧!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入22汤圆

发表于 2009-6-8 00:39:47 | 显示全部楼层
我没用vs2008,我用的是VC98,看了下,下面的代码没问题。
         int n=123;
        CString a;
        a.Format("%d",n);
        MessageBox(a);
不过不知道楼主的pDC是虾米玩意,不好继续帮忙验证了。

出0入0汤圆

发表于 2009-6-8 01:03:01 | 显示全部楼层
字符常量前加“L”看看,比如L"%"。

这样:pDC -> TextOut(0,0,L"Hello World");

L是一个宏,表示字符串的本地化,你用中文系统,编译器默认为宽字符串wchar。

你调开MFC源文件,会发现都是加L的,这是一种编程规范。

很久以前学的,不知对不对。

出0入0汤圆

发表于 2009-6-8 02:51:25 | 显示全部楼层
问题就出在“wchar_t”上,看看他的定义你能了解更多

因为存在字符编码的问题,ANSI码还是UNICODE等,自然不能自动转换。

Heraclitus说的对,使用字符串的本地化宏,可以简化此问题的处理。
当你使用UNICODE的时候,它会自动帮你转换成宽字符的,当使用ANSI编码时,它就保持原样不变

出0入0汤圆

发表于 2009-6-8 03:55:27 | 显示全部楼层
如果用Visual Studio 2005的话,就学C#吧,不要再折腾VC了.

出0入0汤圆

发表于 2009-6-8 08:12:51 | 显示全部楼层
int a;
CString strOutput;
a = 123;
strOutput.Format(TEXT("%d"),a); //!!!!!!!!!!!!!!!!!!!!!!!!!
pDC -> TextOut(0,0,strOutput);

出0入0汤圆

发表于 2009-6-8 08:22:18 | 显示全部楼层
C#的好处是比较省事,坏处是搞不清机理,不可控,速度慢。

VC++的好处是机理比较可控,坏处是要操心的东西比较多。当时为了搞清MFC,曾经一层层跟踪到最底层。速度有时也慢。

汇编则是完全可控,坏处是什么都得操心。

不论什么语言,要编出比较完美的代码都不容易。既要有好的结构,又要有好的速度。特别是多线程处理,无论是C#还是VC都不是容易的事。线程的同步与调度,封装与通信,能把头搞得两个大。

出0入0汤圆

发表于 2009-6-8 08:42:11 | 显示全部楼层
我学的是孙鑫的教材感觉不错,总结了他的教学经验是一切从实用出发而教的,建议用这个,而且带有视频教程,强烈建议使用!

出0入0汤圆

发表于 2009-6-8 09:08:33 | 显示全部楼层
VC现在应用范围很窄,花时间也多,何苦来哉!

出0入0汤圆

发表于 2009-6-8 09:22:55 | 显示全部楼层
用VC,就像用汇编一样,只是不信一种语言可以解决所有问题。

实际上C#也不能说真的很高级。simlink的仿真流图就比它高级得多,直接利用抽象的数学语言,同时也表达出了流程间的并行关系。

simlink又很严格,可以直接编译成机器代码。我认为simlink才是程序的发展方向。

出0入0汤圆

发表于 2009-6-8 09:33:33 | 显示全部楼层
并不是高级和低级的问题,C#相比VC应用范围要广很多,特别是现在WEB泛滥的情况下.

出0入0汤圆

 楼主| 发表于 2009-6-8 11:16:19 | 显示全部楼层
按照5楼和2楼朋友说的方法修改了之后,成功通过。在这想在问下,
Visual studio 2005 和 Visual studio 2008  下的VC++ 有哪里不同呢?

出0入0汤圆

发表于 2009-6-8 12:12:01 | 显示全部楼层
很早以前学的VC,有什么不同就讲不清了。

出0入0汤圆

发表于 2009-6-12 10:58:32 | 显示全部楼层
Visual Studio6.0  对应vc6
Visual Studio2003 对应vc7
Visual Studio2005       8
Visual Studio2008       9

马上2010就要出正式版了。

出0入0汤圆

 楼主| 发表于 2009-6-12 11:04:49 | 显示全部楼层
咋更新这么快。。都还啥都没学呢。。。  无奈了。

出0入0汤圆

发表于 2009-6-12 11:28:33 | 显示全部楼层
unicode.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 18:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表