做一个简单的加法对话框计算器时,结果出现乱码,
本来写的代码是下面这样的
         int num1,num2,num3;
char ch1[10],ch2[10],ch3[10]; GetDlgItemTextW(IDC_EDIT1,ch1,10);
GetDlgItemTextW(IDC_EDIT2,ch2,10);

num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10); SetDlgItemTextW(IDC_EDIT3,ch3);
但是用vs2008编译的时候说上面那几个函数中类型不能转化,GetDlgItemTextW(IDC_EDIT1,ch1,10);GetDlgItemTextW(IDC_EDIT2,ch2,10);这两行中的ch2不能转换成LPTSTR类型,最下面那个ch3也是这样的,我做了强制类型转换后编译没问题,但是运行结果出现乱码,怎么弄?

解决方案 »

  1.   

    编码的问题,你将你的项目的字符集改成多字节试试。在项目属性那里修改.
    用VS编译器经常出现这个问题,为了使你的程序更简单你可以用多字节,为了你的程序通用性更好你应该用unicode.但是如果你用unicode的话,你需要处理很多字符(宽字节转多字符和多字符转宽字节),这是微软搞的鬼.慢慢就习惯了..
      

  2.   

    改为TCHAR ch1[10],ch2[10],ch3[10];
      

  3.   

    atoi和itoa都有相应的ANSI和UNICODE版本,建议你工程使用多字节字符集,涉及到字符的地方都是用TCHAR
      

  4.   

    // unicode和MBCS工程都兼容的话
    // char , wchar 用 TCHAR
    // atoi用 _tstoi
    // 在msdn中,字符串操作函数一般都有 MBCS,Unicode和TCHAR的3个版本。
      

  5.   

    ++楼主看的书,估计是孙鑫里面的
    那本书是vc6,太老了你的编译器 不是 vc6