// 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(文件句柄);
}
不能保存添加的信息,为什么?