首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CEdit::GetLine() windows 7

CEdit::GetLine() windows 7
EN

Stack Overflow用户
提问于 2011-04-12 22:46:01
回答 2查看 3.1K关注 0票数 3

我有下面这段代码,其中m_edit是一个CEdit控件:

代码语言:javascript
复制
TCHAR lpsz[MAX_PATH+1];

// get the edit box text
m_edit.GetLine(0,lpsz, MAX_PATH); 

这在运行Windows XP和更早版本的计算机上非常有效。我没有在Vista中测试过这一点,但在Windows7上,lpsz会插入无用的unicode字符(有时也会插入实际的文本)。你知道这是怎么回事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-12 22:59:41

既然你在使用MFC,为什么不利用它的CString类呢?这是许多程序员被MFC吸引的原因之一,因为它使处理字符串变得容易得多。

例如,您可以简单地编写:

代码语言:javascript
复制
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中看到的那些无意义的字符。

票数 4
EN

Stack Overflow用户

发布于 2011-05-19 05:37:19

它不是null终止的。您需要这样做:

代码语言:javascript
复制
int count = m_edit.GetLine(0, lpsz, MAX_PATH);
lpsz[count] = 0;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5637153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档