MFC Unicode编程中MSVC6和MSVC 2008的区别

时间:2011-08-24 05:01:52

标签: visual-c++ unicode mfc

这是我的代码:

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

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

1 个答案:

答案 0 :(得分:0)

不要做强有力的类型转换。删除所有LPTSTRLPCTSTR(wchar_t*)类型转换。将cName声明为:

TCHAR cName[20] = {0};

这将确保cNameWCHAR用于Unicode构建,GetDlgItemTextW用于Unicode构建,cNamechar用于MBCS构建和GetDlgItemTextA {1}}被调用。