MFC clistctrl如何复制一行或者多行数据

列表里的显示的是多行媒体文件,要右键“另存为”,弹出“另存为”对话框,把一行或者多行的数据保存到新建文件夹,最好能把第一列作为保存文件名,请高手解答。... 列表里的显示的是多行媒体文件,要右键“另存为”,弹出“另存为”对话框,把一行或者多行的数据保存到新建文件夹,最好能把第一列作为保存文件名,请高手解答。 展开
 我来答
bhtzu
推荐于2016-04-18 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4224万
展开全部
	CListBox* pl = (CListBox*)GetDlgItem(IDC_LIST1);
TCHAR tc[200];
CFile f;
int num = pl->GetCount();
for(int i=0;i<num;i++)
{
pl->GetText(i,tc);
if(i==0)
f.Open(tc,CFile::modeReadWrite);
f.Write(tc,strlen(tc)*sizeof(TCHAR));
f.Write(_T("\n\r"),2*sizeof(TCHAR));
}
f.Close();
}
更多追问追答
追问
你好,请问CListBox可以使用吗?另外程序运行,当我点击另存为时触发一个断点:ASSERT(m_hFile != INVALID_HANDLE_VALUE);
还有这个功能是要写两个事件吗?一个右键事件弹出另存为菜单?另一个另存为菜单的事件是写弹出另存为对话框,获取list的数据,保存?
追答
  1. 如果不是多列,没有图标,最好使用ListBox而不是ListCtrl,代码上要复杂不少,两个不通用。

  2. 菜单怎么弹出无关,关键是菜单响应函数要在对话框类中。

  3. 断点那个,先用如下代码试试,可能是你的第一行作为文件名有问题。

	CListBox* pl = (CListBox*)GetDlgItem(IDC_LIST1);
TCHAR tc[200];
CFile f;
f.Open(_T("a.txt"),CFile::modeReadWrite);
int num = pl->GetCount();
for(int i=0;i<num;i++)
{
pl->GetText(i,tc);
f.Write(tc,strlen(tc)*sizeof(TCHAR));
f.Write(_T("\n\r"),2*sizeof(TCHAR));
}
f.Close();
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式