Разница MSVC6 и MSVC 2008 в программировании MFC Unicode - PullRequest
0 голосов
/ 24 августа 2011

Это мой код:

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?

1 Ответ

0 голосов
/ 24 августа 2011

Не делайте принудительное приведение типов. Удалить все LPTSTR, LPCTSTR, (wchar_t*) Typecasting. Объявить cName как:

TCHAR cName[20] = {0};

Это обеспечит cName равным WCHAR для сборок Unicode и GetDlgItemTextW для сборок Unicode, cName будет char для сборок MBCS и GetDlgItemTextA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...