【问题标题】:CEdit::GetLine (MFC, VC++6) returns extra characters in Windows 7CEdit::GetLine (MFC, VC++6) 在 Windows 7 中返回额外字符
【发布时间】:2012-05-18 00:17:56
【问题描述】:

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 静态链接。提供的任何见解将不胜感激。

【问题讨论】:

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


【解决方案1】:

像这样更改您的代码:

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

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

【讨论】:

  • 是的,确保 strText 仅包含输入到编辑框中的字符是我们决定做的,因为我无法在少数 (Win7) 机器上重现问题或远程调试它它发生。也许在 Windows 的深处,有些东西覆盖了我在 atchBuffer 中的 0。谢谢。
猜你喜欢
  • 2011-08-03
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
  • 2016-05-13
  • 2010-12-05
  • 1970-01-01
  • 2011-04-02
相关资源
最近更新 更多