Eri*_*ier 3 c++ windows mfc visual-c++ windows-7
我有以下代码段,其中m_edit
是 CEdit 控件:
TCHAR lpsz[MAX_PATH+1];
// get the edit box text
m_edit.GetLine(0,lpsz, MAX_PATH);
Run Code Online (Sandbox Code Playgroud)
这在运行 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();
Run Code Online (Sandbox Code Playgroud)
(以上代码经测试在 Windows 7 上运行良好。)
请注意,复制的行不包含空终止字符(请参阅文档中的“备注”部分)。这可以解释您在更高版本的 Windows 中看到的无意义字符。
归档时间: |
|
查看次数: |
3394 次 |
最近记录: |