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;
}
目录
相关文章
|
2月前
MFC控件间介绍(二)
MFC控件间介绍(二)
13 0
|
2月前
MFC控件介绍(一)
MFC控件介绍(一)
18 0
|
BI
MFC控件介绍(三)
MFC控件介绍(三)
115 0
MFC控件介绍(三)
|
C++
基于MFC实现选项卡控件练习
基于MFC实现选项卡控件练习
53 0
基于MFC实现选项卡控件练习
|
索引
MFC中组合框CComboBox的使用
假如添加三行数据,其中当选择前两行时,提示自定义提示框信息,选择第三行时,提示当前字符串的内容,实现如下: void Cuse_demo_dllDlg::OnCbnSelchangeCombo1(){ int pos=m_combo.
1072 0
MFC设置窗体大小SetWindowPos
SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE);     表示不考虑(0,0),仅仅将大小改为200x300,位置不变    SetWindowPos(NULL,0,0,200,300,SWP_NOMOVE);    表示不考虑200X300,只是把位置挪到(0,0).
4053 0
|
索引
VC MFC工具栏(CToolBar)控件
一、工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建,如CButton按钮类,现举一个用代码创建按钮控件并显示在窗口里的例子。
2452 0