一、滑块控件
1、控件使用
(1)相关类
CSliderCtrl类,父类为CWnd,封装了关于滑块控件的各种操作
(2)常见操作
设置范围
CSliderCtrl::SetRange
设置位置
CSliderCtrl::SetPos
获取位置
CSliderCtrl::GetPos
(3)消息
当滑块的位置改变之后
滑块控件发出WM_COMMAND消息(通知码 NM_CUSTOMDRAW)
(4)在工具箱中名称为:Slider Control
1、在项目中使用滑块控件
(1)使用类向导添加滑块控件绑定的控件类对象
(2)在对话框初始化函数设置滑块范围与位置
- BOOL CMFCCtrl1Dlg::OnInitDialog()
- {
- CDialogEx::OnInitDialog();
-
- // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
- // 执行此操作
- SetIcon(m_hIcon, TRUE); // 设置大图标
- SetIcon(m_hIcon, FALSE); // 设置小图标
-
- ShowWindow(SW_MINIMIZE);
-
- // TODO: 在此添加额外的初始化代码
- m_slider.SetRange(0, 100);
- m_slider.SetPos(30);
-
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }
(3)添加滑块消息处理函数,在处理函数中获取滑块位置
- void CMFCCtrl1Dlg::OnCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
- {
- LPNMCUSTOMDRAW pNMCD = reinterpret_cast
(pNMHDR); - // TODO: 在此添加控件通知处理程序代码
- int nPos = m_slider.GetPos();
- CString str;
- str.Format("滑块位置:%d", nPos);
-
- this->SetWindowText(str); //设置对话框标题
-
- *pResult = 0;
- }
二、进度条控件
1、控件介绍
(1)相关类
CProgressCtrl类,父类为CWnd,封装了关于进度条控件的操作
(2)常见操作
设置范围
CProgressCtrl::SetRange
设置位置
CProgressCtrl::SetPos
获取位置
CProgressCtrl::GetPos
(3)工具箱控件名称:Progress Control
2、在项目中使用
(1)使用类向导添加控件绑定控件类对象
(2)在对话框处理函数中设置进度条范围与位置
- BOOL CMFCCtrl1Dlg::OnInitDialog()
- {
- CDialogEx::OnInitDialog();
-
- // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
- // 执行此操作
- SetIcon(m_hIcon, TRUE); // 设置大图标
- SetIcon(m_hIcon, FALSE); // 设置小图标
-
- ShowWindow(SW_MINIMIZE);
-
- // TODO: 在此添加额外的初始化代码
- m_slider.SetRange(0, 100);
- m_slider.SetPos(30);
-
- m_pro.SetRange(0, 100);
- m_pro.SetPos(50);
-
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }
三、文件搜索类
1、文件搜索类介绍
(1)相关类
CFileFind类,封装了关于文件遍历的操作
(2)常见操作
开启文件查找(判断路径是否正确),成功返回TRUE,失败返回FALSE
CFileFind::FindFile
找到当前文件,返回下一个文件是否存在
CFileFind::FindNextFind
调用一些列GetXXX函数获取文件信息
CFileFind::GetFileName / CFileFind::GetFilePath
调用一系列IsXXX函数判断文件属性
CFileFind::IsDorectory / CFileFind::IsDots(. / ..)
关闭查找
CFileFind::Close
2、创建项目调用文件搜索操作
(1)创建(Win32控制台)项目(MFCFileFind)
(2)编写程序
- #include
- #include
- using namespace std;
-
- void Find(CString path)
- {
- CString strPath = path;
- strPath+="/*.*";
- CFileFind find; //文件搜索类对象
- BOOL bGoFind = find.FindFile(strPath);
- while (bGoFind)
- {
- bGoFind = find.FindNextFile(); //找到当前文件,将文件信息保存到find私有成员变量,使用成员函数可以访问
- if (find.IsDirectory())
- {
- cout<<"["<
GetFileName()<<"]"< - if (! find.IsDots()) //不是 .或..
- {
- Find(find.GetFilePath()); //递归遍历
- }
- }
- else
- {
- cout<<"Name: "<
GetFileName()< - }
- }
- find.Close();
- }
-
- int main()
- {
- Find("C:");
- return 0;
- }
四、列表控件
1、控件介绍
(1)相关类
CListCtrl类,父类为CWnd,封装了关于列表控件的操作
(2)风格
图标(LVS_ICON),相当于文件夹中等图标
小图标(LVS_SMALLICON),相当于文件夹小图标
列表(LVS_LIST),相当于文件夹列表
报表(LVS_REPORT),相当于文件夹详细信息
修改风格
CWnd::ModifStyle
(3)常见操作
添加选项
CListCtrl::InsertItem
删除选项
CListCtrl::CListCtrl::DeleteItem / CListCtrl::DeleteAllItem
添加列
CListCtrl::InsertColumn
设置文本内容
CListCtrl::SetItemText
设置图像
CListCtrl::SetImageList
设置附加数据
CListCtrl::SetItemData
获取附加数据
CListCtrl::GetItemData
(4)消息
当列表被双击
发出WM_COMMAND消息(通知码 NM_DBCLCK)
(5)在工具箱名称:List Condtrol
2、在项目中使用
(1)创建对话框项目(MFCList)
(2)添加列表控件(从工具箱中拖拽 List Condtrol控件)
(3)添加下拉列表控件(Combo Box),设置为Drop List,用于选择列表控件的风格
(4)分别给列表和下拉列表添加绑定控件类对象
(5)在对话框初始化函数给下拉列表添加选项
- m_dropList.AddString("图标");
- m_dropList.AddString("小图标");
- m_dropList.AddString("列表");
- m_dropList.AddString("报表");
- m_dropList.SetCurSel(0); //设置默认选项
(6)在下拉列表消息处理函数,修改列表风格
- void CMFCListDlg::OnSelchangeCombo1()
- {
- // TODO: 在此添加控件通知处理程序代码
- switch (m_dropList.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_SMALLICON|LVS_ICON|LVS_REPORT, LVS_LIST);
- }
- break;
- case 3:
- { //报表
- m_list.ModifyStyle(LVS_SMALLICON|LVS_LIST|LVS_ICON, LVS_REPORT);
- }
- break;
- }
- }

(7)在对话框初始化函数添加选项,设置列表的报表风格的列
- //报表风格的列
- m_list.InsertColumn(0, "名称", LVCFMT_LEFT, 150); //150为列宽
- m_list.InsertColumn(1, "修改日期", LVCFMT_LEFT, 150);
- m_list.InsertColumn(2, "类型", LVCFMT_LEFT, 150);
- m_list.InsertColumn(3, "大小", LVCFMT_LEFT, 150);
- //报表风格的经纬线
- m_list.SetExtendedStyle(LVS_EX_GRIDLINES); //经纬线
-
- m_list.InsertItem(0, "目录", 0);
- m_list.InsertItem(1, "文件", 0);
(8)添加文本内容(报表风格,其他列的文本内容)
- //报表风格的列
- m_list.InsertColumn(0, "名称", LVCFMT_LEFT, 150); //150为列宽
- m_list.InsertColumn(1, "修改日期", LVCFMT_LEFT, 150);
- m_list.InsertColumn(2, "类型", LVCFMT_LEFT, 150);
- m_list.InsertColumn(3, "大小", LVCFMT_LEFT, 150);
- //报表风格的经纬线
- m_list.SetExtendedStyle(LVS_EX_GRIDLINES); //经纬线
-
- m_list.InsertItem(0, "目录", 0);
- m_list.SetItemText(0, 1, "2022.1.1");
- m_list.SetItemText(0, 2, "Dir");
- m_list.SetItemText(0, 3, "3M");
-
- m_list.InsertItem(1, "文件", 0);
- m_list.SetItemText(1, 1, "2022.2.2");
- m_list.SetItemText(1, 2, "FILE");
- m_list.SetItemText(1, 3, "13M");

(9)添加bmp图片,给列表设置图像

- m_dropList.AddString("图标");
- m_dropList.AddString("小图标");
- m_dropList.AddString("列表");
- m_dropList.AddString("报表");
- m_dropList.SetCurSel(0); //设置默认选项
-
- //报表风格的列
- m_list.InsertColumn(0, "名称", LVCFMT_LEFT, 150); //150为列宽
- m_list.InsertColumn(1, "修改日期", LVCFMT_LEFT, 150);
- m_list.InsertColumn(2, "类型", LVCFMT_LEFT, 150);
- m_list.InsertColumn(3, "大小", LVCFMT_LEFT, 150);
- //报表风格的经纬线
- m_list.SetExtendedStyle(LVS_EX_GRIDLINES); //经纬线
-
- CImageList* pImageList = new CImageList;
- pImageList->Create(IDB_BITMAP1, 24, 1, RGB(255,255,255)); //将IDB_BITMAP1以24列宽裁剪一个图片,去底色RGB(255,255,255)
-
- m_list.SetImageList(pImageList, LVSIL_NORMAL); //图像链表应用在列表空间的图标风格
- m_list.SetImageList(pImageList, LVSIL_SMALL); //图像链表应用在列表空间的其他风格
-
- m_list.InsertItem(0, "目录", 0); //最后一个参数为pImageList的第几个元素
- m_list.SetItemText(0, 1, "2022.1.1");
- m_list.SetItemText(0, 2, "Dir");
- m_list.SetItemText(0, 3, "3M");
-
- m_list.InsertItem(1, "文件", 1); //最后一个参数为pImageList的第几个元素
- m_list.SetItemText(1, 1, "2022.2.2");
- m_list.SetItemText(1, 2, "FILE");
- m_list.SetItemText(1, 3, "13M");


(10)使用文件搜索类,实现列表添加文件
- void CMFCListDlg::ShowFile(CString str)
- {
- CString strPath = str;
- strPath+="/*.*";
- CFileFind find; //文件搜索类对象
- BOOL bGoFind = find.FindFile(strPath);
- int n=0;
- while (bGoFind)
- {
- bGoFind = find.FindNextFile(); //找到当前文件,将文件信息保存到find私有成员变量,使用成员函数可以访问
- if (find.IsDirectory() && !find.IsDots())
- {
- m_list.InsertItem(n, find.GetFileName(), 0);
- }
- else
- {
- m_list.InsertItem(n, find.GetFileName(), 1);
- }
- n++;
- }
- find.Close();
- }

(11)使用类向导添加列表消息处理函数
- void CMFCListDlg::OnDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
- {
- LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast
(pNMHDR); - // TODO: 在此添加控件通知处理程序代码
- CString* pStrPath = (CString*)m_list.GetItemData(pNMItemActivate->iItem);
- if (pStrPath->GetLength() > 0)
- {
- ShowFile(*pStrPath);
- }
- *pResult = 0;
- }
- void CMFCListDlg::ShowFile(CString str)
- {
-
- for (int i=0;i
- {
- CString* pStrPath = (CString*)m_list.GetItemData(i);
- if (NULL != pStrPath)
- {
- delete pStrPath;
- }
- }
- m_list.DeleteAllItems();
-
- CString strPath = str;
- strPath+="/*.*";
- CFileFind find; //文件搜索类对象
- BOOL bGoFind = find.FindFile(strPath);
- int n=0;
- while (bGoFind)
- {
- bGoFind = find.FindNextFile(); //找到当前文件,将文件信息保存到find私有成员变量,使用成员函数可以访问
- if (find.IsDirectory() && !find.IsDots())
- {
- m_list.InsertItem(n, find.GetFileName(), 0);
- CString *pStrPath = new CString;
- *pStrPath = (find.GetFilePath());
- m_list.SetItemData(n, (DWORD)pStrPath);
- }
- else if(!find.IsDots())
- {
- m_list.InsertItem(n, find.GetFileName(), 1);
- CString *pStrPath = new CString;
- m_list.SetItemData(n, (DWORD)pStrPath);
- }
- n++;
- }
- find.Close();
- }
五、树控件
1、控件介绍
(1)相关类
CTreeCtrl类,父类为CWnd,封装了关于树控件的各种操作
(2)常见操作
添加选项
CTreeCtrl::InsertItem
删除选项
CTreeCtrl::DeleteItem / DeleteAllItem
获取选择项
CTreeCtrl::GetSelectedItem
获取选项的文本内容
CTreeCtrl::GetItemText
设置选项的高度
CTreeCtrl::
设置选项的图像
CTreeCtrl::SetImageList
(3)在工具箱中名称为Tree Control
2、在项目中使用控件
(1)添加对话框项目(MFCTree)
(2)添加树控件(从工具栏拖拽 Tree Control)
(3)使用类向导添加绑定控件类对象
(4)在对话框初始化函数添加选项
- HTREEITEM nRoot = m_tree.InsertItem("树控件1", 0, 0, NULL);
- m_tree.InsertItem("树控件1-1", 0, 0, nRoot);
- m_tree.InsertItem("树控件1-2", 0, 0, nRoot);
- m_tree.InsertItem("树控件1-3", 0, 0, nRoot);
- m_tree.InsertItem("树控件1-4", 0, 0, nRoot);

(5)通过按钮删除选项
- void CMFCTreeDlg::OnBnClickedButton1()
- {
- // TODO: 在此添加控件通知处理程序代码
- m_tree.DeleteItem(m_tree.GetSelectedItem());
- }
(6)通过按钮获取文本内容
- void CMFCTreeDlg::OnBnClickedButton2()
- {
- // TODO: 在此添加控件通知处理程序代码
- AfxMessageBox( m_tree.GetItemText(m_tree.GetSelectedItem()));
- }
(7)添加bmp资源,设置图标
- BOOL CMFCTreeDlg::OnInitDialog()
- {
- CDialogEx::OnInitDialog();
-
- // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
- // 执行此操作
- SetIcon(m_hIcon, TRUE); // 设置大图标
- SetIcon(m_hIcon, FALSE); // 设置小图标
-
- // TODO: 在此添加额外的初始化代码
- CImageList* pImageList = new CImageList;
- pImageList->Create(IDB_BITMAP1, 12, 1, RGB(255, 255, 255));
- m_tree.SetImageList(pImageList, LVSIL_NORMAL);
-
- HTREEITEM nRoot = m_tree.InsertItem("树控件1", 1, 2, NULL); //被选中设置为2,没有选中为1
- m_tree.InsertItem("树控件1-1", 2, 3, nRoot);
- m_tree.InsertItem("树控件1-2", 2, 3, nRoot);
- m_tree.InsertItem("树控件1-3", 2, 3, nRoot);
- m_tree.InsertItem("树控件1-4", 2, 3, nRoot);
- m_tree.SetItemHeight(50); //设置选择项高度
-
-
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }

-
相关阅读:
抓取网页的含义和URL基本构成
css 文字溢出问题
Elasticsearch
UE5 各种moveto
又一家芯片新势力杀入车载领域
java计算机毕业设计航空机票预订系统源码+mysql数据库+系统+LW文档+部署
git - 拉取远程代码并且不覆盖本地修改的代码
人工智能 | ShowMeAI资讯日报 #2022.06.30
面试题:深拷贝、浅拷贝、引用拷贝的区别
【回归预测】MATLAB 实现基于BP神经网络的多变量回归预测
-
原文地址:https://blog.csdn.net/liutit/article/details/126190843