CEdit :: GetLine()Windows 7

| 我有以下代码段,其中“ 0”是CEdit控件:
TCHAR lpsz[MAX_PATH+1];

// get the edit box text
m_edit.GetLine(0,lpsz, MAX_PATH); 
这在运行Windows XP或更早版本的计算机上完美运行。我尚未在Vista中进行测试,但是在Windows 7上,lpsz会在其中插入垃圾unicode字符(有时还会插入实际文本)。对这里发生的事情有任何想法吗?     
已邀请:
既然您使用的是MFC,为什么不利用它的
CString
类呢?这是许多程序员被MFC吸引的原因之一,因为它使处理字符串变得非常容易。 例如,您可以简单地编写:
int len = m_edit.LineLength(m_edit.LineIndex(0));
CString path;
LPTSTR p = path.GetBuffer(len);
m_edit.GetLine(0, p, len);
path.ReleaseBuffer();
(上面的代码经过了测试,可以在Windows 7上正常工作。) 请注意,复制的行不包含空终止符(请参见文档中的“注释”部分)。这可以解释您在更高版本的Windows中看到的无用字符。     
它不是以null终止的。您需要这样做:
int count = m_edit.GetLine(0, lpsz, MAX_PATH);
lpsz[count] = 0;
    

要回复问题请先登录注册