MFC clistctrl如何复制一行或者多行数据
列表里的显示的是多行媒体文件,要右键“另存为”,弹出“另存为”对话框,把一行或者多行的数据保存到新建文件夹,最好能把第一列作为保存文件名,请高手解答。...
列表里的显示的是多行媒体文件,要右键“另存为”,弹出“另存为”对话框,把一行或者多行的数据保存到新建文件夹,最好能把第一列作为保存文件名,请高手解答。
展开
展开全部
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的数据,保存?
追答
如果不是多列,没有图标,最好使用ListBox而不是ListCtrl,代码上要复杂不少,两个不通用。
菜单怎么弹出无关,关键是菜单响应函数要在对话框类中。
断点那个,先用如下代码试试,可能是你的第一行作为文件名有问题。
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();
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询