我碰到了一个男孩,前几年活泼开朗,现在满身疲惫,两眼无光,我很想安慰他,于是,我伸手碰了碰镜子。。。

----  网易云热评

 

一、列表控件

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");

MFC控件介绍(三)_小图标

14、添加位图

MFC控件介绍(三)_列表控件_02

     

//创建一个链表节点
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);//应用在其他图标

MFC控件介绍(三)_列表控件_03

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();
}

运行结果:

MFC控件介绍(三)_小图标_04

16、点击文件夹进入

先添加事件

MFC控件介绍(三)_MFC控件_05

为选择项添加附加数据

//创建对象,延长使用周期
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;
}

 

欢迎关注公众号:顺便编点程

MFC控件介绍(三)_数据_06