1.新建对话框工程Test,在对话框上放上ListCtrl控件IDC_LIST1,连接变量名m_list,增加代码:
2.新建对话框IDD_EDIT, 用来做修改、删除、添加记录等,添加2个编辑框,分别连接变量m_StudentID和m_StudentName,为它创建新的类CEditDlg,基类是CDialog;
3.为了使用上面的CEditDlg类 ,在TestDlg.cpp里的 #endif 之后加入#include "EditDlg.h";然后在主对话框上加入4个按钮修改(IDC_CHANGE)、删除(IDC_DELETE)、添加(IDC_ADD)、保存(IDC_SAVE),然后添加他们的响应函数如下:
好了,现在就编译运行吧~你看到的结果应该是(现在上传不了图,暂时,以后会贴上来的)
BOOL CTestDlg::OnInitDialog()
{
//
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_list.SetBkColor(RGB(240,255,240));
m_list.SetTextColor(RGB(0,0,255));
//---------------------------------------------
//插入列字段
m_list.InsertColumn(0,"学号",LVCFMT_LEFT,100);
m_list.InsertColumn(1,"姓名",LVCFMT_LEFT,100);
//插入行项目
m_list.InsertItem(0,"20010540519");
m_list.InsertItem(1,"20010540520");
m_list.InsertItem(2,"20010540521");
//插入行内容
m_list.SetItemText(0,1,"宫奇");
m_list.SetItemText(1,1,"杨建敏");
m_list.SetItemText(2,1,"张威");
return TRUE;
}
{
//
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_list.SetBkColor(RGB(240,255,240));
m_list.SetTextColor(RGB(0,0,255));
//---------------------------------------------
//插入列字段
m_list.InsertColumn(0,"学号",LVCFMT_LEFT,100);
m_list.InsertColumn(1,"姓名",LVCFMT_LEFT,100);
//插入行项目
m_list.InsertItem(0,"20010540519");
m_list.InsertItem(1,"20010540520");
m_list.InsertItem(2,"20010540521");
//插入行内容
m_list.SetItemText(0,1,"宫奇");
m_list.SetItemText(1,1,"杨建敏");
m_list.SetItemText(2,1,"张威");
return TRUE;
}
3.为了使用上面的CEditDlg类 ,在TestDlg.cpp里的 #endif 之后加入#include "EditDlg.h";然后在主对话框上加入4个按钮修改(IDC_CHANGE)、删除(IDC_DELETE)、添加(IDC_ADD)、保存(IDC_SAVE),然后添加他们的响应函数如下:
void CTestDlg::OnChange()
{ //得到选择项的索引值
POSITION pos=m_list.GetFirstSelectedItemPosition();
m_nIndex=m_list.GetNextSelectedItem(pos);
if(m_nIndex==-1)
{
MessageBox("请选择一项再修改!","提示",MB_ICONINFORMATION);
return;
}
CEditDlg edlg;
edlg.m_StudentID=m_list.GetItemText(m_nIndex,0);
edlg.m_StudentName=m_list.GetItemText(m_nIndex,1);
if(edlg.DoModal()==IDOK)
{
m_list.SetItemText(m_nIndex,0,edlg.m_StudentID);
m_list.SetItemText(m_nIndex,1,edlg.m_StudentName);
}
}
void CTestDlg::OnDelete()
{
POSITION pos=m_list.GetFirstSelectedItemPosition();
m_nIndex=m_list.GetNextSelectedItem(pos);
if(m_nIndex==-1)
{
MessageBox("请选择一项!","提示",MB_ICONINFORMATION);
return;
}
m_list.DeleteItem(m_nIndex);
//下面这2句的作用是刷新当前所指记录位置,以便连续删除
// UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
// m_list.SetItemState(m_nIndex-1, flag, flag);
}
void CTestDlg::OnAdd()
{
CEditDlg edlg;
if(edlg.DoModal()==IDOK)
{
if(edlg.m_StudentID=="")
return;
m_nIndex=m_list.GetItemCount();
m_list.InsertItem(m_nIndex,edlg.m_StudentID);
m_list.SetItemText(m_nIndex,1,edlg.m_StudentName);
}
}
void CTestDlg::OnSave()
{
CStdioFile sf;
if(sf.Open("资料.txt",CFile::modeCreate | CFile::modeWrite))
{
CString strOut;
strOut="学号\t\t姓名\r\n";
sf.WriteString(strOut);
for(int i=0;i<m_list.GetItemCount();i++)
{
strOut=m_list.GetItemText(i,0) + "\t"+m_list.GetItemText(i,1)+"\r\n";
sf.WriteString(strOut);
}
sf.Close();
MessageBox("保存成功!","提示",MB_ICONINFORMATION);
}
else
MessageBox("保存失败!","提示",MB_ICONINFORMATION);
}
{ //得到选择项的索引值
POSITION pos=m_list.GetFirstSelectedItemPosition();
m_nIndex=m_list.GetNextSelectedItem(pos);
if(m_nIndex==-1)
{
MessageBox("请选择一项再修改!","提示",MB_ICONINFORMATION);
return;
}
CEditDlg edlg;
edlg.m_StudentID=m_list.GetItemText(m_nIndex,0);
edlg.m_StudentName=m_list.GetItemText(m_nIndex,1);
if(edlg.DoModal()==IDOK)
{
m_list.SetItemText(m_nIndex,0,edlg.m_StudentID);
m_list.SetItemText(m_nIndex,1,edlg.m_StudentName);
}
}
void CTestDlg::OnDelete()
{
POSITION pos=m_list.GetFirstSelectedItemPosition();
m_nIndex=m_list.GetNextSelectedItem(pos);
if(m_nIndex==-1)
{
MessageBox("请选择一项!","提示",MB_ICONINFORMATION);
return;
}
m_list.DeleteItem(m_nIndex);
//下面这2句的作用是刷新当前所指记录位置,以便连续删除
// UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
// m_list.SetItemState(m_nIndex-1, flag, flag);
}
void CTestDlg::OnAdd()
{
CEditDlg edlg;
if(edlg.DoModal()==IDOK)
{
if(edlg.m_StudentID=="")
return;
m_nIndex=m_list.GetItemCount();
m_list.InsertItem(m_nIndex,edlg.m_StudentID);
m_list.SetItemText(m_nIndex,1,edlg.m_StudentName);
}
}
void CTestDlg::OnSave()
{
CStdioFile sf;
if(sf.Open("资料.txt",CFile::modeCreate | CFile::modeWrite))
{
CString strOut;
strOut="学号\t\t姓名\r\n";
sf.WriteString(strOut);
for(int i=0;i<m_list.GetItemCount();i++)
{
strOut=m_list.GetItemText(i,0) + "\t"+m_list.GetItemText(i,1)+"\r\n";
sf.WriteString(strOut);
}
sf.Close();
MessageBox("保存成功!","提示",MB_ICONINFORMATION);
}
else
MessageBox("保存失败!","提示",MB_ICONINFORMATION);
}
好了,现在就编译运行吧~你看到的结果应该是(现在上传不了图,暂时,以后会贴上来的)