- 对话框
- STET1 图片切换功能
- 导入位图资源
- 插入图片控件并修改属性
- 添加消息处理函数
- step2 开发思路及类关系图
- step3 添加控件及MFC类
- step4 设置各对话框
- 清扫/显示目录窗口
- 设置目录窗口
- 窗口的切换功能
- step 5 清扫/显示界面的按钮功能编写
- 添加目录功能
- 删除目录功能
- 清空目录功能
- step 6 右击菜单功能设置
- 菜单显示
- 菜单事件处理功能添加
- step 5 设置目录界面的按钮功能编写
- 下拉列表
- “请选择目录”功能实现
- 选择后确定功能的实现
- 完成功能(截取后缀名的实现)
- 清空功能的实现(清空tree里的内容)
- step 6 显示目录的搜索窗口
- 搜索窗口显示:展开与收缩
- 搜索功能的实现
- 删除功能的实现
- 模态对话框》阻塞的
- 非模态对话框》非阻塞的
STET1 图片切换功能 导入位图资源已上传资源:点击此行文字可进行下载< Clean 垃圾清理插件 >并直接运行。
-
-
CCleanDlg::OnInitDialog()函数
-
-
自动生成代码:
-
自动生成代码:
静态 控件与资源进行绑定:(会自动生成~)
-
补充代码
-
会自动生成该类的h和cpp文件(不截图啦)
-
在CleanDlg类中添加该类的对象
-
绑定
-
初始化tab及设置宽高
-
在CmyTabCtrl类中定义对象
-
创建+显示
- 效果
- 效果
-
添加MFC窗口类: CSetDlg 对话框//不截图啦 和上面的清扫目录是一样的
-
在父窗口定义对象:同清扫目录~
-
效果
即点击tab进行相应窗口的显示。
-
思路:见step 2 开发思路示意图1的部分 ,此为有类的情况,因此进行如下 *** 作。
-
消息映射表自动生成
-
类中自动生成
-
事件处理函数编写
注意初始状态修改:
-
添加事件处理程序
-
分析:由于添加目录及读取目录的 *** 作在show窗口及set窗口都用到了,为提高代码复用性,可以将其封装成一个方法(封装到应用程序Clean.h中)进行,然后进行调用。
-
至此成功获取,但还需要将其显示到list框里。
-
list控件添加MFC类
-
showdlg中定义对象,然后和控件进行绑定
-
要的是列向展示文件路径而不是横向图标,所以改一下控件样式
-
List中显示选中的文件的路径
-
效果:
-
勾选就放到删除的部分啦,勾选-》删除~见后文
-
-
勾选 复合样式(拓展风格)函数 放在初始化部分,先在showdlg里加初始化函数
-
效果:
-
删除事件处理程序补充~注意i–的部分!
-
添加事件处理程序
-
新建菜单资源
-
CMylistCtrl中定义对象
-
绑定资源,d出菜单
-
0 编辑 效果
-
1 12 效果
-
添加对象
-
选一下初始化~
- 改一下样式~
-
分析:点击请选择目录后 下拉列表收缩 d出选择目录对话框 由此可以分析 以下拉列表收缩为契机 添加事件处理程序
-
添加类,加完以后定义对象
-
修改样式
-
确定的功能函数编写
-
当前效果:
-
-
封装一个方法去找路径下的子项
-
然后再在确定中进行调用就行
-
效果》展开了一层,里面的文件夹没有展开,期望是点击确定及加号后展开一层,内部文件夹再点加号再展开一层的效果
-
为完成上述功能,进行如下 *** 作:
- 效果:
- 解决方法:加一个判断,如果子项已经存在,就不用再重复添加拉~具体代码如下:
-
- 效果:
-
效果:
-
默认展开,需要变更成默认为收缩的状态 点击显示目录再展开 再次点击时收缩
-
在主窗口的初始化函数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(); //删除节点 } }
-
效果:
-
加勾选框样式
-
效果:
-
删除功能实现
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)