MFC编程 -- 保存和读取列表框内容

简介: MFC编程 -- 保存和读取列表框内容

一、新建一个结构体


在pch.h新建一个结构体,将列表里面的一行内容当做一个结构进行保存

struct 列表结构
{
  TCHAR 专辑[20];
  TCHAR 主打歌[20];
  int 年份;
  TCHAR 时长[20];
};

二、将列表的内容保存到文件

HANDLE 文件句柄 = CreateFile(_T("./aiyou.txt"), GENERIC_WRITE,FILE_SHARE_READ,NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,NULL);
  //1、保存的文件名字;2、访问模式(GENERIC_READ);3、共享模式;4、指向安全属性的指针
  //5、如何创建文件,覆盖前面的文件(CREATE_ALWAYS )6、文件属性,默认;7、用于复制文件句柄
  CListCtrl* 列表句柄 = (CListCtrl*)GetDlgItem(IDC_LIST3);
  int i = -1;
  int 行号 = 列表句柄->GetItemCount();
  列表结构 列表;
  while (++i<行号)
  {
    _tcscpy(列表.专辑, 列表句柄->GetItemText(i, 0));
    _tcscpy(列表.主打歌, 列表句柄->GetItemText(i, 1));
    列表.年份 = _tstoi(列表句柄->GetItemText(i,2));
    _tcscpy(列表.时长, 列表句柄->GetItemText(i, 1));
    WriteFile(文件句柄,&列表,sizeof(列表),NULL,NULL);
    //1、文件句柄;2、写入的缓冲区;3要写入的大小;
  }
  CloseHandle(文件句柄);


三、读取列表的内容


1、在头文件声明一下加载函数


class C管理系统Dlg : public CDialogEx
{
// 构造
  void 读取信息();
public:
  C管理系统Dlg(CWnd* pParent = nullptr);  // 标准构造函数

2、编写读取信息的代码

HANDLE 文件句柄 = CreateFile(_T("./aiyou.txt"), GENERIC_READ, FILE_SHARE_READ, NULL,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  CListCtrl* 列表句柄 = (CListCtrl*)GetDlgItem(IDC_LIST3);
  列表句柄->DeleteAllItems();//清空列表
  列表结构 列表;
  DWORD 实际传入字节数;
  int 行号= 列表句柄->GetItemCount();
  CString 格式化内容;
  while (ReadFile(文件句柄,&列表,sizeof(列表), &实际传入字节数,NULL)  && 实际传入字节数 == sizeof(列表))
    //当实际传入的字节数为0时退出
  {
    列表句柄->InsertItem(行号, 列表.专辑);
    列表句柄->SetItemText(行号, 1,列表.专辑);
    格式化内容.Format(_T("%d"), 列表.年份);
    列表句柄->SetItemText(行号, 2, 格式化内容);
    列表句柄->SetItemText(行号, 3, 列表.时长);
    ++行号;
  }
  CloseHandle(文件句柄);


四、运行效果


0a2653c851af460fa595bd959398a8f1.png

目录
相关文章
|
2月前
|
前端开发
Antd中Table列表行默认包含修改及删除功能的封装
Antd中Table列表行默认包含修改及删除功能的封装
74 0
|
12月前
|
JavaScript 前端开发 应用服务中间件
【前端项目笔记】原生js上传文件及文件转换成base64、blob类型
项目中经常会用到上传图片上传视频等功能,由于后端nginx限制,经常要进行文件转化才能上传,大文件可能还要进行切片上传处理。
538 1
input file 设置文件选择类型
使用 accept 属性,accept 属性的值是一个包含一个或多个(用逗号分隔)这种唯一文件类型说明符的字符串。每个唯一文件类型说明符可以采用下列形式之一。
661 0
input file 设置文件选择类型
|
10天前
|
SQL 关系型数据库 MySQL
文本----Navicat的快捷键,Navicate如何快速添加资料,选中整体一行,复制,文本排序可以在添加数据时,用一个qingge01简写就行
文本----Navicat的快捷键,Navicate如何快速添加资料,选中整体一行,复制,文本排序可以在添加数据时,用一个qingge01简写就行
|
2月前
|
存储 数据库
如何使用代码修改 attachment 实例的 CHANGED_BY 字段
如何使用代码修改 attachment 实例的 CHANGED_BY 字段
|
2月前
|
移动开发 前端开发 Windows
前端H5怎么简单的实现复制text内容的操作
前端H5怎么简单的实现复制text内容的操作
36 0
前端H5怎么简单的实现复制text内容的操作
【Element-ui】每个类只有一个默认设置选项
【Element-ui】每个类只有一个默认设置选项
【Element-ui】每个类只有一个默认设置选项
element close事件关闭表单,数据替换掉原始列表的数据bug解决
element close事件关闭表单,数据替换掉原始列表的数据bug解决
51 0
MFC编程 -- 保存和读取列表框内容
MFC编程 -- 保存和读取列表框内容
163 0
MFC编程 -- 保存和读取列表框内容
【Excel自动化办公Part3】:工作表的创建、删除、复制和修改名称,冻结窗格,添加筛选
【Excel自动化办公Part3】:工作表的创建、删除、复制和修改名称,冻结窗格,添加筛选
132 0
【Excel自动化办公Part3】:工作表的创建、删除、复制和修改名称,冻结窗格,添加筛选