2011-08-24 37 views
0

這是我的代碼:差異MSVC6和2008年的MSVC的

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和2008年MSVC(這一項最近,當然) 但

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

input of both =MSVC 

有什麼不對? 爲什麼我有2個不同的答案,以及如何解決它在MSVC2008?

回答

0

不要做強制類型轉換。刪除全部LPTSTR,LPCTSTR,(wchar_t*)類型化。聲明cName爲:

TCHAR cName[20] = {0}; 

這將確保cNameWCHAR爲Unicode版本和GetDlgItemTextW被調用Unicode版本,並cNamechar爲MBCS構建和GetDlgItemTextA被調用。