2012-05-18 5 views
1

m_editText имеет тип CEdit (от MFC). Это прекрасно работает в течение многих лет с сотнями пользователей в WinXP (32 бит), но когда один и тот же исполняемый файл находится на Win7 (64 бит), некоторые пользователи получают (в strText) лишние странные (т. Е. Расширенные, то есть мусор) символы, добавленные к тексту что они набрали элемент управления поле редактирования (m_editText). Я не могу воспроизвести проблему. Я проверил, что GetLine скопировал только символы, введенные в поле редактирования (по крайней мере, на моей машине).CEdit :: GetLine (MFC, VC++ 6) возвращает дополнительные символы в Windows 7

TCHAR atchBuffer[256] = {0}; // initialize to all nulls 
int nChrCount = m_editText.GetLine(0, atchBuffer, 255); 
CString strText; 
if (nChrCount!=0) 
    strText = CString(atchBuffer); 

Это компилируется (отладочную сборку) в Visual C++ 6 на WinXP (32bit), MFC 5 статически связаны между собой. Будем очень благодарны за предоставленную информацию.

+1

Возможный дубликат: http://stackoverflow.com/questions/5637153/ceditgetline-windows-7 – Jeeva

ответ

1

Изменить код так:

if (nChrCount!=0) 
    strText = CString(atchBuffer, nChrCount); 

, чтобы убедиться, что любой мусор/неинициализированным данные не добавляются в CString, только символы, которые находятся в управлении.

+0

Да, сделав вдвойне уверенным, что strText содержит только введенный в поле ввода символ, который мы решили сделать, t воспроизводить проблему или удалять ее на нескольких (Win7) машинах, на которых она происходит. Возможно, глубоко внутри Windows что-то переписало мои 0 в atchBuffer. Благодарю. – Bruce