一只废狗狗狗狗狗狗狗狗狗 2023-12-17 17:40 采纳率: 50%
浏览 4
已结题

mfc列表数据保存失败


// InfoDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "文件列表添加.h"
#include "InfoDlg.h"
#include "afxdialogex.h"


// InfoDlg 对话框

IMPLEMENT_DYNAMIC(InfoDlg, CDialogEx)

InfoDlg::InfoDlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(InfoDlg::IDD, pParent)
{

}

InfoDlg::~InfoDlg()
{
}

void InfoDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_LIST1, m_list);
}


BEGIN_MESSAGE_MAP(InfoDlg, CDialogEx)
    ON_BN_CLICKED(IDC_BUTTON1, &InfoDlg::OnBnClickedButton1)
    ON_BN_CLICKED(IDC_BUTTON2, &InfoDlg::OnBnClickedButton2)
END_MESSAGE_MAP()


// InfoDlg 消息处理程序
void InfoDlg::读取信息(){
    HANDLE 文件句柄=CreateFile(_T("./student.txt"),GENERIC_READ, FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    CListCtrl*列表句柄=(CListCtrl*)GetDlgItem(IDC_LIST1);
    列表句柄->DeleteAllItems();//清空列表
    列表结构 列表;
    DWORD 实际传入字节数;
    int 行号=列表句柄->GetItemCount();
    CString 格式化内容;
    while(ReadFile(文件句柄,&列表,sizeof(列表),&实际传入字节数,NULL)&&实际传入字节数==sizeof(列表))
    {
    列表句柄->InsertItem(行号,列表.Sno);
    列表句柄->SetItemText(行号,1,列表.Name);
     列表句柄->SetItemText(行号,2,列表.Sex);
     格式化内容.Format(_T("%d"),列表.age);
     列表句柄->SetItemText(行号,3,格式化内容);
     ++行号;

    }
    CloseHandle(文件句柄);
}

BOOL InfoDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();
    SetList();
    //ShowData();
    // TODO:  在此添加额外的初始化
    //AfxMessageBox("HAHA");
    return TRUE;  // return TRUE unless you set the focus to a control
    // 异常: OCX 属性页应返回 FALSE
}
//自定义函数实现
void InfoDlg::SetList()
{CListCtrl*列表句柄=(CListCtrl*)GetDlgItem(IDC_LIST1);
列表句柄->SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
列表句柄->InsertColumn(0,_T("学号"),0,100);//0为左对齐,2为居中对齐
列表句柄->InsertColumn(1,_T("姓名"),0,100);
列表句柄->InsertColumn(2,_T("性别"),0,100);
列表句柄->InsertColumn(3,_T("年龄"),2,100);
读取信息();
}
void InfoDlg::ShowData()
{m_list.InsertItem(0,"22001");//第一个不用标注列
m_list.SetItemText(0,1,"张宇");
m_list.SetItemText(0,2,"男");
m_list.SetItemText(0,3,"19");
m_list.InsertItem(1,"22002");//第一个不用标注列
m_list.SetItemText(1,1,"王小慧");
m_list.SetItemText(1,2,"女");
m_list.SetItemText(1,3,"18");
    
}

void InfoDlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    CListCtrl*jubing=(CListCtrl*)GetDlgItem(IDC_LIST1);
    int n=jubing->GetItemCount();//返回列表目前存在的行数,为下一次插入提供指定位置
    CString str;
    GetDlgItemText(IDC_EDIT1,str);//获取编辑框内容
    jubing->InsertItem(n,str);//第一个插入用insert
    GetDlgItemText(IDC_EDIT2,str);
    jubing->SetItemText(n,1,str);//之后都用set
    GetDlgItemText(IDC_EDIT3,str);
    jubing->SetItemText(n,2,str);
    GetDlgItemText(IDC_EDIT4,str);
    jubing->SetItemText(n,3,str);

}


void InfoDlg::OnBnClickedButton2()
{
    // TODO: 在此添加控件通知处理程序代码
    HANDLE 文件句柄=CreateFile(_T("./student.txt"),GENERIC_WRITE, FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    CListCtrl*列表句柄=(CListCtrl*)GetDlgItem(IDC_LIST1);
    int i=-1;
    int 行号=列表句柄->GetItemCount();
    列表结构 列表;
    while(++i<行号)
    {
        _tcscpy(列表.Sno,列表句柄->GetItemText(i,0));
        _tcscpy(列表.Name,列表句柄->GetItemText(i,1));
        _tcscpy(列表.Sex,列表句柄->GetItemText(i,1));
        列表.age=_tstoi(列表句柄->GetItemText(i,2));
        WriteFile(文件句柄,&列表,sizeof(列表),NULL,NULL);
        //文件句柄    写入的缓冲区  要写入的大小
    }
    CloseHandle(文件句柄);
}


不能保存添加的信息,为什么?
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月25日
    • 创建了问题 12月17日

    悬赏问题

    • ¥15 Windows X86 远线程注入问题解惑
    • ¥15 Vs2022安装时黑框闪退无反应
    • ¥15 嵌入式设备网口down后再up时不能link?
    • ¥15 关于区块链和边缘计算
    • ¥15 做一个简单项目,用Python分析共享单车的数据
    • ¥20 在使用CESM2.2.0模型进行case.submit过程中出现如下错误(关键词-Map)
    • ¥15 有办法改变通过wifi进入的网站的设置吗
    • ¥15 label_studio
    • ¥15 请教如何phython发邮件
    • ¥15 linux系统安装问题