一、列表控件
1、显式方式
图标:LVS_ICON
小图标:LVS_SMALLICON
列表:LVS_LIST
详细信息:LVS_REPORT
2、相关类 CListCtrl
3、更改列表控件的显式方式:ModifyStyle
4、添加选项:InsertItem
5、添加列:InsertColumn
6、设置选项的附加数据:SetItemData
7、获取选项的附加数据:GetItemData
8、清空选项:DeleteAllItems
9、设置文本内容:SetItemText
10、设置图像:SetImageList
11、添加一个下拉组合框,绑定对象
m_combo.AddString("图标"); m_combo.AddString("小图标"); m_combo.AddString("列表"); m_combo.AddString("报表"); m_combo.SetCurSel(0);
12、添加一个列表控件,绑定对象并设置事件
void CMFCListDlg::OnSelchangeCombo1() { // TODO: 在此添加控件通知处理程序代码 switch (m_combo.GetCurSel()) { case 0://图标 m_list.ModifyStyle(LVS_SMALLICON | LVS_LIST | LVS_REPORT, LVS_ICON); break; case 1://小图标 m_list.ModifyStyle(LVS_ICON | LVS_LIST | LVS_REPORT, LVS_SMALLICON); break; case 2://列表 m_list.ModifyStyle(LVS_ICON | LVS_SMALLICON | LVS_REPORT, LVS_LIST); break; case 3://报表 m_list.ModifyStyle(LVS_ICON | LVS_SMALLICON | LVS_LIST, LVS_REPORT); break; } }
13、设置报表相关信息
//添加列信息 m_list.InsertColumn(0, "name", LVCFMT_LEFT, 100); m_list.InsertColumn(0, "date", LVCFMT_LEFT, 100); m_list.InsertColumn(0, "type", LVCFMT_LEFT, 100); m_list.InsertColumn(0, "size", LVCFMT_LEFT, 100); //第一个选项索引,第二个选项文件名,第三个选项图片 m_list.InsertItem(0, "哎呦", 0); m_list.InsertItem(1, "不错", 0); //设置文件的信息内容 m_list.SetItemText(0, 1, "2021.1.11"); m_list.SetItemText(0, 2, "dir"); m_list.SetItemText(0, 3, "1M"); m_list.SetItemText(1, 1, "2021.1.12"); m_list.SetItemText(1, 2, "file"); m_list.SetItemText(1, 3, "12K");
14、添加位图
//创建一个链表节点 CImageList* pImgLst = new CImageList; //第一个参数位图,第二参数24宽截一个节点,第三个参数链表不够,第四个屏蔽什么样色 pImgLst->Create(IDB_BITMAP2, 24, 1, RGB(255, 255, 255)); //设置图标 m_list.SetImageList(pImgLst, LVSIL_NORMAL);//应用在图标风格 m_list.SetImageList(pImgLst, LVSIL_SMALL);//应用在其他图标
15、遍历C盘目录的文件和文件夹
随便找个头文件,声明函数
void InitList(CString path);
重写函数
void CMFCListDlg::InitList(CString path) { CFileFind find; BOOL GoFind= find.FindFile(path+"/*.*"); int i = 0; while (GoFind) { GoFind = find.FindNextFile();//返回下一个文件是否存在 CString filename = find.GetFileName(); if (find.IsDirectory()) { m_list.InsertItem(i, filename, 0); } else { m_list.InsertItem(i, filename, 1); } i++; } find.Close(); }
运行结果:
16、点击文件夹进入
先添加事件
为选择项添加附加数据
//创建对象,延长使用周期 CString* filepath = new CString; *filepath = find.GetFilePath(); if (find.IsDirectory()) { m_list.InsertItem(i, filename, 0); //添加附加数据 m_list.SetItemData(i, (DWORD)filepath); }
代码实现上面添加的事件
void CMFCListDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); // TODO: 在此添加控件通知处理程序代码 //获取选择项 POSITION pos= m_list.GetFirstSelectedItemPosition(); //获取选择项索引 int nSel=m_list.GetNextSelectedItem(pos); //获取附加数据 CString* filepath = (CString*)m_list.GetItemData(nSel); InitList(*filepath); *pResult = 0; }