C++语言学习笔记15:Clean 垃圾清理插件

  • 对话框
  • STET1 图片切换功能
    • 导入位图资源
    • 插入图片控件并修改属性
    • 添加消息处理函数
  • step2 开发思路及类关系图
  • step3 添加控件及MFC类
  • step4 设置各对话框
      • 清扫/显示目录窗口
      • 设置目录窗口
    • 窗口的切换功能
  • step 5 清扫/显示界面的按钮功能编写
    • 添加目录功能
    • 删除目录功能
    • 清空目录功能
  • step 6 右击菜单功能设置
    • 菜单显示
    • 菜单事件处理功能添加
  • step 5 设置目录界面的按钮功能编写
    • 下拉列表
    • “请选择目录”功能实现
    • 选择后确定功能的实现
    • 完成功能(截取后缀名的实现)
    • 清空功能的实现(清空tree里的内容)
  • step 6 显示目录的搜索窗口
    • 搜索窗口显示:展开与收缩
    • 搜索功能的实现
    • 删除功能的实现

对话框

  • 模态对话框》阻塞的
  • 非模态对话框》非阻塞的

已上传资源:点击此行文字可进行下载< Clean 垃圾清理插件 >并直接运行。

STET1 图片切换功能

导入位图资源

    • CCleanDlg::OnInitDialog()函数

插入图片控件并修改属性

添加消息处理函数

  • 自动生成代码:

  • 自动生成代码:

    静态 控件与资源进行绑定:(会自动生成~)

  • 补充代码

step2 开发思路及类关系图

step3 添加控件及MFC类

  • 会自动生成该类的h和cpp文件(不截图啦)

  • 在CleanDlg类中添加该类的对象

  • 绑定

  • 初始化tab及设置宽高

step4 设置各对话框

清扫/显示目录窗口
  • 在CmyTabCtrl类中定义对象

  • 创建+显示

    • 效果
设置目录窗口
  • 添加MFC窗口类: CSetDlg 对话框//不截图啦 和上面的清扫目录是一样的

  • 在父窗口定义对象:同清扫目录~

  • 效果

窗口的切换功能

即点击tab进行相应窗口的显示。

  • 思路:见step 2 开发思路示意图1的部分 ,此为有类的情况,因此进行如下操作。

  • 消息映射表自动生成

  • 类中自动生成

  • 事件处理函数编写

    注意初始状态修改:

step 5 清扫/显示界面的按钮功能编写

添加目录功能
  • 添加事件处理程序

  • 分析:由于添加目录及读取目录的操作在show窗口及set窗口都用到了,为提高代码复用性,可以将其封装成一个方法(封装到应用程序Clean.h中)进行,然后进行调用。

    • 至此成功获取,但还需要将其显示到list框里。

      • list控件添加MFC类

      • showdlg中定义对象,然后和控件进行绑定

      • 要的是列向展示文件路径而不是横向图标,所以改一下控件样式

      • List中显示选中的文件的路径

      • 效果:

      • 勾选就放到删除的部分啦,勾选-》删除~见后文

删除目录功能
  • 勾选 复合样式(拓展风格)函数 放在初始化部分,先在showdlg里加初始化函数

  • 效果:

  • 删除事件处理程序补充~注意i–的部分!

清空目录功能
  • 添加事件处理程序

step 6 右击菜单功能设置

菜单显示

  • 新建菜单资源

  • CMylistCtrl中定义对象

  • 绑定资源,弹出菜单

  • 0 编辑 效果

  • 1 12 效果

菜单事件处理功能添加

step 5 设置目录界面的按钮功能编写

下拉列表

  • 添加对象

  • 选一下初始化~

  • 改一下样式~

“请选择目录”功能实现

  • 分析:点击请选择目录后 下拉列表收缩 弹出选择目录对话框 由此可以分析 以下拉列表收缩为契机 添加事件处理程序

选择后确定功能的实现

  • 添加类,加完以后定义对象

  • 修改样式

  • 确定的功能函数编写

    • 当前效果:

  • 封装一个方法去找路径下的子项

  • 然后再在确定中进行调用就行

    • 效果》展开了一层,里面的文件夹没有展开,期望是点击确定及加号后展开一层,内部文件夹再点加号再展开一层的效果

    • 为完成上述功能,进行如下操作:

      • 效果:
      • 解决方法:加一个判断,如果子项已经存在,就不用再重复添加拉~具体代码如下:

完成功能(截取后缀名的实现)

  • 效果:

清空功能的实现(清空tree里的内容)

step 6 显示目录的搜索窗口

搜索窗口显示:展开与收缩

  • 效果:

  • 默认展开,需要变更成默认为收缩的状态 点击显示目录再展开 再次点击时收缩

    • 在主窗口的初始化函数CCleanDlg::OnInitDialog()里面进行编写,但是GetwindowRect获取的并不是准确的坐标值,这部分代码放在重绘CCleanDlg::OnPaint()里比较好~

  • 点击进行状态修改~

    • 由于isExpend和m_expend的目的是一样的,因此可以只用其中一个,代码做如下修改:

搜索功能的实现

  • 修改样式

  • void CCleanDlg::OnBnClickedButton1()    //搜索按钮功能事件
    {// TODO: 在此添加控件通知处理程序代码queue<CString> que;for (int i = 0; i < m_mytab.m_showdialog.m_showlist.GetItemCount(); i++) //遍历{if (m_mytab.m_showdialog.m_showlist.GetCheck(i))   //判断是否为选中状态{CString strPath = m_mytab.m_showdialog.m_showlist.GetItemText(i, 0);   //获取勾选的文本que.push(strPath);}    }m_searchList.DeleteAllItems(); //搜索前先清空 避免重复搜索添加~while (que.size() > 0){CString strPath = que.front(); //取出节点里的值if (strPath.Right(1) != L"\\") {strPath += L"\\";}CFileFind fileF;BOOL b = fileF.FindFile(strPath + L"*.*");while (b){b = fileF.FindNextFile();if (fileF.IsDots())     //过滤.  ..{continue;}CString fileName = fileF.GetFileName();if (fileF.IsDirectory())    //判断是文件还是目录{    //目录    //继续找内部文件que.push(strPath + fileName);}else{   //文件    //获取后缀名int index = fileName.ReverseFind(L'.');if (index != -1)  //找到了{CString suffix = fileName.Right(fileName.GetLength() - index);//后缀名匹配if (m_mytab.m_setdlg.m_suffix.count(suffix))    //存在 匹配上了{//将拼接完的路径插入到搜索结果中m_searchList.InsertItem(m_searchList.GetItemCount(), strPath + fileName);}}}}que.pop();     //删除节点}
    }
    
  • 效果:

删除功能的实现

  • 加勾选框样式

  • 效果:

  • 删除功能实现

C++语言学习笔记15:Clean 垃圾清理插件相关推荐

  1. C语言学习笔记(15)——结构体程序设计

    前言 C语言的基本数据类型有整数型.实数型及字符型,使用这些基本数据类型可以构造数组类型,并且可以定义相关数据类型的指针.本节介绍的结构体类型区别于以上任何数据类型,它还能把各种不同类型的数据组合成一 ...

  2. 【Go语言 · 学习笔记】

    文章目录 Go语言 · 学习笔记 一.Go包管理 1. 什么是Go语言中的包 2. 包的命名 3. main包 4. 导入包 5. 远程包导入 6. 命名导入 7. 包的init函数 二.Go开发工具 ...

  3. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

  4. (一)Go语言学习笔记

    Go语言学习笔记 1 前言 2 写Go语言需要注意的地方 2.1 Go语言编译执行和直接run的区别 2.2 Go语言的特点 2.3 Linux下配置Go环境变量 2.4 随记 3 go_code 3 ...

  5. c语言中void arrout,c语言学习笔记(数组、函数

    <c语言学习笔记(数组.函数>由会员分享,可在线阅读,更多相关<c语言学习笔记(数组.函数(53页珍藏版)>请在人人文库网上搜索. 1.数组2010-3-29 22:40一维数 ...

  6. c语言float二进制输出代码_C语言学习笔记——学前知识概述

    将我大一学习C语言时做的笔记拿来与大家分享,内容比较浅显,比较适合初学者,如有错误还请见谅,提出改正,谢谢! 前言:此C语言笔记是本人在自学时记录的一些重点或初学者常犯的错误,希望我的这本笔记能够对大 ...

  7. go get 拉取指定版本_go语言学习笔记-基础知识-3

    相关文档 go语言学习笔记-目录 1.简介 1.1 什么是GO Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易.Go是从2007年末由Robert Griesemer, Rob ...

  8. R语言学习笔记(1~3)

    R语言学习笔记(1~3) 一.R语言介绍 x <- rnorm(5) 创建了一个名为x的向量对象,它包含5个来自标准正态分布的随机偏差. 1.1 注释 由符号#开头. #函数c()以向量的形式输 ...

  9. C语言学习笔记第五天_项目训练

    C语言学习笔记第五天_项目训练 添加自定义的一个函数库文件 <getch.h> 步骤: 1.在windows中把getch.h放入共享文件夹(文件我放在文末,自取) 2.在Ubuntu终端 ...

最新文章

  1. EDIUS新建项目工程设置
  2. 【noi 2.5_7834】分成互质组(dfs)
  3. 【算法】动图展示八大常用排序算法,一次看个够!
  4. eclipse自动补全的设置
  5. Pandas - 查看DataFrame信息
  6. res_config_mysql和chan_sip模块的加载分析
  7. All Roads Lead to Rome (30)
  8. opencv-api boxPoints
  9. vista下推荐大家用foobar2000播放器
  10. android10设置led指示灯,Android8.0在Setting中添加Led指示灯闪烁开关
  11. 2018年第九届蓝桥杯真题C/C++B组
  12. 男神女神投票源码 v5.5.21 投票源码
  13. “老赖”罗永浩:“首席忽悠官”,发布黑科技鲨纹技术
  14. 使用Rancher搭建K8S环境的准备工作
  15. 我的世界java爱冰雪女王_我的世界美丽而又高冷 冰雪女王介绍
  16. [微信小程序]手机系统默认字体的设置
  17. 腾讯副总裁邱岳鹏:云的发展要迈过三道关
  18. Linux添加系统用户
  19. json对象(json对象和json数组)
  20. z420开机无法进入BIOS,出现A9和光标

热门文章

  1. 企业数字化转型-从企业IT部门和CIO的数字化思想开始
  2. 供货肯德基与必胜客,千味央厨上市全靠“抱大腿”?
  3. 羡慕华为人年薪110万?先看看华为员工的16项标准!
  4. 应用数学考研跨考计算机,数学专业考研三大方向_跨考网
  5. 最强国产开源电子表格-Luckysheet,强势登顶Github trending第一名!
  6. Android中EditText隐藏/自动弹出输入法的问题
  7. AWS入门 – 开通海外账户及巧用免费套餐
  8. JS黄金分割法实现随机漂亮颜色!
  9. ImageLoader加载圆形图片
  10. Elasticsearch:创建 Ingest pipeline