c++ - CEdit::GetLine() Windows 7

标签 c++ windows visual-c++ windows-7 mfc

我有以下代码段,其中 m_edit 是一个 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 上运行良好。)

请注意,复制的行不包含空终止字符(请参阅 documentation 中的“备注”部分)。这可以解释您在更高版本的 Windows 中看到的无意义字符。

关于c++ - CEdit::GetLine() Windows 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5637153/

相关文章:

任何基数的 C++ 乘法

c++ - 一种确保系统托盘图标被删除的方法......保证

c# - 如何在计算机锁定时按键盘键

c++ - 在 Visual Studio 2012 中以管理员身份调试 Visual C++ 应用程序

C++ 'class' 类型重定义错误

c++ - 使 Xerces 解析字符串而不是文件

c++ - 使用 Crypto++ 加密 RSA 私钥并将其写入文件

c++ - 在调用函数的地方获取文件和函数名称

Windows:ReportEvent 函数

c++ - 枚举类的关系运算符重载