请问VC++6.0中,如何将listcontrol控件中的内容写入到一个文件中?
4个回答
展开全部
那要看你的ListCtrl里面的内容了
如:CListCtrl m_listCtrl;
插入的是你自定义的结构或类内容
假设 typedf struct _DEVICE_INFO
{
int m_nDeviceID;
int m_nDeviceIP;
}DEVICE_INFO;
DEVICE_INFO *device = new DEVICE_INFO;
//设置各个值
//插入到列表
m_listCtrl.InsertItem(0,"text",0);
m_listCtrl.SetItem(0, 1, TVIF_TEXT,device->m_nDeviceID,0,0,0,0)
m_listCtrl.SetItem(0, 2, TVIF_TEXT,device->m_nDeviceIP,0,0,0,0)
m_listCtrl.SetItemData(0,(DWORD)device)//设置类表内容的数据类型(自定义的类或结构)
之后再点击列表相应函数中
{
POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
if(pos == NULL)
return;
int nSel = m_listCtrl.GetNextSelectedItem(pos);
//获得选项的内容,将内容的地址付给结构或类的指针
DEVICE_INFO*pDevice =(DEVICE_INFO*) m_listCtrl.GetItemData(nSel);
//写文件
HANDLE hFile = CreateFile("deviceInfo.dat", GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwNum;
WriteFile(hFile, 1, sizeof(int), &dwNum, NULL);
WriteFile(hFile, pDevice->m_nDeviceID, sizeof(int), &dwNum, NULL);
WriteFile(hFile, pDevice->m_nDeviceIP, sizeof(int), &dwNum, NULL);
CloseHandle(hFile);
/////////以下是直接写入结构方式
WritePrivateProfileStruct("Device", "DeviceInfo" , pDevice,sizeof(DEVICE_INFO),"device.ini" );
}
写文件的方式很多,最关键是列表插入的内容,最好是采用 CTypedPtrList<CPtrList, DEVICE_INFO*> m_ptrDeviceList; 方式把插入到ListCtrl的内容也插入到你自定义的数据列表中,之后通过循环一次性的保存文件或读取文件
如:CListCtrl m_listCtrl;
插入的是你自定义的结构或类内容
假设 typedf struct _DEVICE_INFO
{
int m_nDeviceID;
int m_nDeviceIP;
}DEVICE_INFO;
DEVICE_INFO *device = new DEVICE_INFO;
//设置各个值
//插入到列表
m_listCtrl.InsertItem(0,"text",0);
m_listCtrl.SetItem(0, 1, TVIF_TEXT,device->m_nDeviceID,0,0,0,0)
m_listCtrl.SetItem(0, 2, TVIF_TEXT,device->m_nDeviceIP,0,0,0,0)
m_listCtrl.SetItemData(0,(DWORD)device)//设置类表内容的数据类型(自定义的类或结构)
之后再点击列表相应函数中
{
POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
if(pos == NULL)
return;
int nSel = m_listCtrl.GetNextSelectedItem(pos);
//获得选项的内容,将内容的地址付给结构或类的指针
DEVICE_INFO*pDevice =(DEVICE_INFO*) m_listCtrl.GetItemData(nSel);
//写文件
HANDLE hFile = CreateFile("deviceInfo.dat", GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwNum;
WriteFile(hFile, 1, sizeof(int), &dwNum, NULL);
WriteFile(hFile, pDevice->m_nDeviceID, sizeof(int), &dwNum, NULL);
WriteFile(hFile, pDevice->m_nDeviceIP, sizeof(int), &dwNum, NULL);
CloseHandle(hFile);
/////////以下是直接写入结构方式
WritePrivateProfileStruct("Device", "DeviceInfo" , pDevice,sizeof(DEVICE_INFO),"device.ini" );
}
写文件的方式很多,最关键是列表插入的内容,最好是采用 CTypedPtrList<CPtrList, DEVICE_INFO*> m_ptrDeviceList; 方式把插入到ListCtrl的内容也插入到你自定义的数据列表中,之后通过循环一次性的保存文件或读取文件
展开全部
我是这么实现的:
第一,把数据库打开从表中读取相应的数据
第二,把读取的数据分别转成字符串,并写入list控件中即可.
控件中的每个单元格都是要写的,可用循环实现.
第一,把数据库打开从表中读取相应的数据
第二,把读取的数据分别转成字符串,并写入list控件中即可.
控件中的每个单元格都是要写的,可用循环实现.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前提:知道你列表控件的列数,因为一般设置列表控件都是报表型的,已经设置好有几列
比如说2列
CFile file;
CString str = "";
int count = m_ListCtrl.GetItemCount();
for(int i=0; i<count; i++)
{
str += m_ListCtrl.GetItemText(i,0) + " ";
str += m_ListCtrl.GetItemText(i,1) + "\r\n";
}
file.Open("....."; CFile::modeCreate|CFile::modeWrite);
file.SeekToBegin();
file.Write(str, str.GetLength());
file.Close();
PS:以上答案,仅凭空写出,未经VC测试,仅供参考..
比如说2列
CFile file;
CString str = "";
int count = m_ListCtrl.GetItemCount();
for(int i=0; i<count; i++)
{
str += m_ListCtrl.GetItemText(i,0) + " ";
str += m_ListCtrl.GetItemText(i,1) + "\r\n";
}
file.Open("....."; CFile::modeCreate|CFile::modeWrite);
file.SeekToBegin();
file.Write(str, str.GetLength());
file.Close();
PS:以上答案,仅凭空写出,未经VC测试,仅供参考..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
例如:
CString szData;
int row,column;
...
szData = m_ctrlList.GetItemText(row, column);
CFile fp;
if (fp.Open("test.txt", CFile::modeCreate|CFile::modeWrite))
{
fp.Write((LPCTSTR)szData, szData.GetLength());
fp.Close();
}
CString szData;
int row,column;
...
szData = m_ctrlList.GetItemText(row, column);
CFile fp;
if (fp.Open("test.txt", CFile::modeCreate|CFile::modeWrite))
{
fp.Write((LPCTSTR)szData, szData.GetLength());
fp.Close();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询