MFC中GetItemText

来源:百度知道 编辑:UC知道 时间:2024/06/18 13:52:20
我想读出一个列表里的所有信息然后存放进一个CString变量中.再把它输出到一个TXT文件中.....我用的列表控件的成员函数GetItemText.但是保存进变量里的值却是一个不完整的值,比如只保存进了前几位..请高人指点....
CString buffer="";
buffer+=m_list.GetItemText(0,1);
比如我的第一行是"123456"
保存进buffer里的却是1234
我查了下原来是WriteFile的参数问题....
::WriteFile(hFile,buffer,4,&dwWritenSize,NULL);
该怎么改

你这个应该没什么问题。问题可能出在别处了,把代码贴出来1下。

我用下面的代码测试是正常的。

m_list.InsertColumn(0,"商品编号",LVCFMT_LEFT,130,0);
m_list.InsertColumn(1,"商品名称",LVCFMT_LEFT,220,1);
m_list.InsertColumn(2,"销售数量",LVCFMT_LEFT,130,2);

m_list.InsertItem(0,"");
m_list.SetItemText(0,0,"0123456");
m_list.SetItemText(0,1,"0223456");
m_list.SetItemText(0,2,"0323456");

m_list.InsertItem(1,"");
m_list.SetItemText(1,0,"1123456");
m_list.SetItemText(1,1,"1223456");
m_list.SetItemText(1,2,"1323456");

CString buffer="";
buffer+=m_list.GetItemText(0,1);
MessageBox(buffer);

结果没问题。

问题出在WriteFile(hFile,buffer,4,&dwWritenSize,NULL);
第3个参数不能写4.
第3个参数表示你的buffer里总共的字节数,你写4就只能写入1234了、
所以
你可以这样
CString num;
将4换为buffer.GetLength()

你可以用下面的代码测试