1.初始化代码:
CRect rect;
// 获取编程语言列表视图控件的位置和大小
m_List.GetClientRect(&rect);
// 为列表视图控件添加全行选中和栅格风格
m_List.SetExtendedStyle(m_List.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
// 为列表视图控件添加三列
m_List.InsertColumn(0, _T("语言"), LVCFMT_CENTER, rect.Width() / 3, 0);
m_List.InsertColumn(1, _T("2019.02排名"), LVCFMT_CENTER, rect.Width() / 3, 1);
m_List.InsertColumn(2, _T("2018.02排名"), LVCFMT_CENTER, rect.Width() / 3, 2);
// 在列表视图控件中插入列表项,并设置列表子项文本
m_List.InsertItem(0, _T("Java"));
m_List.SetItemText(0, 1, _T("1"));
m_List.SetItemText(0, 2, _T("1"));
2.每点击一次button,数据加1写入下一行,edit中的数据取出放入列表第二列,每次新加的行,第二列都为该数据:
count++;
i++;
CString a;
a.Format(_T("%d"),count);//cstring和int类型转化
m_list1.InsertItem(i,a);//插入一行
CString b;
m_edit1.GetWindowTextW(b);
m_list1.SetItemText(i-1,1,b);//插入一行内容
3.删除list1选中的某一行:
CUIntArray arDelItem;
int CurSel=m_list1.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED);
while(CurSel>=0)
{
arDelItem.Add(CurSel);
CurSel=m_list1.GetNextItem(CurSel,LVNI_ALL|LVNI_SELECTED);
}
for(int i=arDelItem.GetUpperBound();i>=0;i--)
{
int iSel=arDelItem[i];
m_list1.DeleteItem(iSel);
}
a--;
3.1保存list1控件内容到自定义位置:
CString t_id,t_name,t_chinese,t_math,t_foreign;
myfile.Open(_T("./score.text"),CFile::typeText|CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite|CFile::shareDenyNone);
for (int i=0;i<a;i++)
{
t_id=m_list1.GetItemText(i,0);
t_name=m_list1.GetItemText(i,0);
t_chinese=m_list1.GetItemText(i,0);
t_math=m_list1.GetItemText(i,0);
t_foreign=m_list1.GetItemText(i,0);
myfile.WriteString(t_id+"\n");
myfile.WriteString(t_name+"\n");
myfile.WriteString(t_chinese+"\n");
myfile.WriteString(t_math+"\n");
myfile.WriteString(t_foreign+"\n");
}
myfile.Close();
3.2清空list1所有行:
((CListCtrl*)GetDlgItem(IDC_LIST1))->DeleteAllItems();
3.3将之前保存的内容读取到list1中来:
myfile.Open(_T("./score.text"),CFile::typeText|CFile::modeRead|CFile::shareDenyNone);
CString t_id,t_name,t_chinese,t_math,t_foreign;
for (int i=0;i<a;i++)
{
myfile.ReadString(t_id);
myfile.ReadString(t_name);
myfile.ReadString(t_chinese);
myfile.ReadString(t_math);
myfile.ReadString(t_foreign);
m_list1.InsertItem(i,0);
m_list1.SetItemText(i,0,t_id);
m_list1.SetItemText(i,1,t_name);
m_list1.SetItemText(i,2,t_chinese);
m_list1.SetItemText(i,3,t_math);
m_list1.SetItemText(i,4,t_foreign);
}
myfile.Close();
4.保存的模组内容以文件夹的格式存在:
a++;
CDlgshow dlg;
dlg.DoModal():
name=_T("D:\\Mozu\\")+dlg.str;
CreateDirectory(name,NULL);
m_list1.InsertItem(a-1,0);
m_list1.SetItemText(a-1,0,dlg.str);
m_list1.SetItemText(a-1,1,dlg.str);
4.1在初始化函数中:
CRect rect;
m_list1.GetClientRect(&rect);
m_list1.SetExtendedStyle(m_list1.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list1.InsertColumn(0,_T("模组名"),LVCFMT_CENTER,rect.Width()/2,0);
m_list1.InsertColumn(1,_T("编号"),LVCFMT_CENTER,rect.Width()/2,1);
WIN32_FIND_DATA fd;
HANDLE hFind=::FindFirstFile(_T("D:\\Mozu\\*"),&fd);
if(hFind!=INVALID_HANDLE_VALUE)
{
do
{
if(fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
CString str1=fd.cFileName;
if(str1!=_T(".")&&str1!=_T(".."))
{
m_list1.InsertItem(b,0);
m_list1.SetItemText(b,0,fd.cFileName);
m_list1.SetItemText(b,0,fd.cFileName);
b++;
}
}
}while(::FindNextFile(hFind,&fd));
::FindClose(hFind);
}
4.2删除模组内容:
int b=0;
b=m_list1.GetSelectionMark();
if(b+1)
{
RemoveDirectory(_T("D:\\Mozu\\")+m_list1.GetItemText(b,0));//删除文件夹中模组名对应的文件夹
m_list1.DeleteItem(b);//删除list中对应的行
b=-1;
a--;
}
5.自动写入内容到list1中:
SetTimer(1,1000,NULL);
在OnTimer函数中添加:
CTime time;
CString str;
str.Format(_T("%d"),item+1);
time=CTime::GetCurrentTime();
CString date=time.Format("%Y-%m-%d %M:%S");
m_list1.InsertItem(item,0);
m_list1.SetItemText(item,0,str);
m_list1.SetItemText(item,1,_T("name"));
m_list1.SetItemText(item,2,_T("备注"));
m_list1.SetItemText(item,3,_T("on"));
m_list1.SetItemText(item,4,date);
item++;