CEdit::GetLine() windows 7
CEdit::GetLine() windows 7
我有以下代码段,其中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上运行良好)
注意,复制的行不包含null终止字符(请参阅文档中的"备注"部分)。这可以解释你在以后版本的Windows中看到的无意义字符。
不是null终止。您需要这样做:
int count = m_edit.GetLine(0, lpsz, MAX_PATH);
lpsz[count] = 0;
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Windows上用C++裁剪HBITMAP
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 在Windows中以.exe的形式运行c++
- 当用户键入分隔符时,停止getline()输入
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 无法在windows控制台中为C++程序提供必要的输入
- 在Windows中查找扬声器输出的当前音量级别
- Windows.h与GLFW.h的接口
- 在Linux和Windows下混合CIN和Getline
- C ++ getline 在 Windows 中读取整个文件
- CEdit::GetLine() windows 7