【问题标题】:Difference of MSVC6 and MSVC 2008 in MFC Unicode programmingMFC Unicode 编程中 MSVC6 和 MSVC 2008 的区别
【发布时间】:2011-08-24 05:01:51
【问题描述】:

这是我的代码:

char cName[20] = {0};
int iSum = 0;
int k=0;

k=GetDlgItemText(IDC_EName,LPTSTR(cName),11);

k=_tcslen((wchar_t*)cName);
for(unsigned int i=0;i<=k;i++)
    iSum+=cName[i]-1;

m_sSerial.Format(_T("%i"), iSum);
SetDlgItemText(IDC_ESerial, (LPCTSTR)m_sSerial);

我在 MSVC 6 和 MSVC 2008 中都试过了(当然是最近的这个) 但是

MSVC 6 reult = 308
and MSVC 2008 result =241.

input of both =MSVC

怎么了? 为什么我有 2 个不同的答案以及如何在 MSVC2008 中修复它?

【问题讨论】:

    标签: visual-c++ unicode mfc


    【解决方案1】:

    不要进行强制类型转换。删除所有LPTSTRLPCTSTR(wchar_t*) 类型转换。将cName 声明为:

    TCHAR cName[20] = {0};
    

    这将确保 cName 对于 Unicode 构建是 WCHAR,对于 Unicode 构建调用 GetDlgItemTextW,对于 MBCS 构建,cName 将是 char,并且调用 GetDlgItemTextA

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 2014-01-06
      • 1970-01-01
      • 2017-12-01
      相关资源
      最近更新 更多