MFC控件介绍(三)

简介: MFC控件介绍(三)

一、列表控件


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

0a2653c851af460fa595bd959398a8f1.png

14、添加位图


0eacb84100b54626af849e6b562bf92a.png

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

2d65d23f6d4748949b924e4057485923.png


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


运行结果:


0a2653c851af460fa595bd959398a8f1.png


16、点击文件夹进入


先添加事件


0eacb84100b54626af849e6b562bf92a.png


为选择项添加附加数据


//创建对象,延长使用周期
              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控件间介绍(二)
MFC控件间介绍(二)
90 0
|
XML 数据格式 Windows
WIX 安装部署教程(六) 为你收集的七个知识点
原文:WIX 安装部署教程(六) 为你收集的七个知识点  前段时间整理5篇WIX(Windows Installer XML)的安装教程,但还不够完善,这里继续整理了七个知识点分享给大家。WIX最新版本3.
1957 0
|
存储 安全 Linux
|
存储 C语言
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
799 1
|
消息中间件 程序员 Windows
Windows消息机制《MFC深度详解》
Windows消息机制《MFC深度详解》
262 1
|
XML JSON JavaScript
推荐一个比较好用的c++版本http协议库-cpp-httplib
推荐一个比较好用的c++版本http协议库-cpp-httplib
796 1
|
C++ 计算机视觉 Python
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
375 0
【Py调用C++】使用使用python调用C++生成dll处理图像(OPENCV)
|
存储 算法 C++
【FFmpeg 视频播放】深入理解多媒体播放:同步策略、缓冲技术与性能优化(二)
【FFmpeg 视频播放】深入理解多媒体播放:同步策略、缓冲技术与性能优化
411 0
|
安全 编译器 C语言
C++零基础教程(C++中的打印)
C++零基础教程(C++中的打印)
654 0