CEdit :: GetLine(MFC,VC ++ 6)在Windows 7中返回额外的字符

时间:2012-05-18 00:17:56

标签: visual-c++ windows-7 mfc getline cedit

m_editText的类型为CEdit(来自MFC)。这在WinXP(32位)中有数百个用户已经运行了好几年,但是当Win7(64位)上的相同可执行文件时,一些用户(在strText中)获得了附加到文本的额外奇怪(即扩展,即垃圾)字符他们在编辑框控件(m_editText)中键入。我无法重现问题。我确认GetLine只复制了输入编辑框的字符(至少在我的机器上)。

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

这是在WinXP(32位)上的Visual C ++ 6中编译(调试版本),MFC 5静态链接。我们将非常感谢您提供的任何见解。

1 个答案:

答案 0 :(得分:1)

更改您的代码:

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

确保没有任何垃圾/未初始化的数据被添加到CString中,只有控件中的字符添加。