mfc CFileFind查找类
查找文件
CFileFind类
提取文件图标
显示大图标
显示小图标 一、查找文件
、 CFileFind类
//c:\mydir\myfile.txt
GetFileName
获取文件名 myfile.txt
GetFilePath
获取文件路径c:\mydir\myfile.txt
GetFileTitle
获取文件标题 myfile
Close
关掉搜索请求,释放掉占用资源
FindFile
搜索目录,成功返回非零值,否则返回0
FindNextFile
继FindFile后查找下一个文件,最后一个文件时返回 IsReadOnly
Determines if the found file is read-only.
IsDirectory
Determines if the found file is a directory.
IsCompressed
Determines if the found file is compressed.
IsSystem
Determines if the found file is a system file.
IsHidden
Determines if the found file is hidden.
IsTemporary
Determines if the found file is temporary. 二、提取文件图标
WINSHELLAPI DWORD WINAPI SHGetFileInfo(
LPCTSTR pszPath, //文件路径
DWORD dwFileAttributes, //文件属性 忽略
SHFILEINFO FAR *psfi,//返回文件信息
UINT cbFileInfo, //SHFILEINFO 结构大小
UINT uFlags //文件标志 SHGFI_ICON
);
三、代码测试
CListCtrl* m_list1=(CListCtrl*)GetDlgItem(IDC_LIST1); int indeximage;
imagelistb.Create(,,ILC_COLOR32|ILC_MASK,,);//创建图标列表
//imagelistb.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME)); CFileFind cFindFiles;
WCHAR szFileName[];
WCHAR found[];
swprintf(szFileName,L"%s//*.* ",L"C:\\");
BOOL bFound=cFindFiles.FindFile(L"C:\\//*.*");
//
while(bFound)//这个循环是枚举文件的
{
bFound=(BOOL)cFindFiles.FindNextFile();
if(!cFindFiles.IsDirectory())
{
wcscpy(found,cFindFiles.GetFilePath().GetBuffer());
SHFILEINFO shfi;
memset(&shfi,,sizeof(shfi));
SHGetFileInfo(found,
,
&shfi, sizeof(shfi),
SHGFI_ICON ); //获取文件信息,含图标的
indeximage=imagelistb.Add( shfi.hIcon);//向ImageList里面添加图标shfi.hIcon int nCount=m_list1->GetItemCount();
m_list1->InsertItem(nCount,found,nCount); }
} m_list1->SetImageList(&imagelistb,LVSIL_NORMAL); //设置图标
m_list1->SetImageList(&imagelistb,LVSIL_SMALL); int CDialog_ListCtrl_Test::OnInitDialog(void)
{
//添加项目
CListCtrl* plst_ctl=(CListCtrl*)GetDlgItem(IDC_LIST1);
//添加图标
m_imagelist_b.Create(,,ILC_COLOR32|ILC_MASK ,,);
m_imagelist_s.Create(,,ILC_COLOR32|ILC_MASK ,,);
plst_ctl->SetImageList(&m_imagelist_b,LVSIL_NORMAL );//大图标
plst_ctl->SetImageList(&m_imagelist_s,LVSIL_SMALL ); /*plst_ctl->InsertItem(0,L"0000",0);
plst_ctl->InsertItem(1,L"1111",0);
plst_ctl->InsertItem(2,L"2222");
plst_ctl->InsertItem(3,L"aaaaa");
plst_ctl->SetItemText(3,0,L"33333");*/
CFileFind findfile;
int nfound=findfile.FindFile(L"C:\\Windows\\//*.*");
int i=;
while(nfound)
{
nfound=findfile.FindNextFile();
if (findfile.IsDirectory())
{
continue;
}
SHFILEINFO finfo;
//获取文件信息,主要图标icon
SHGetFileInfo(findfile.GetFilePath(),,&finfo,sizeof(finfo),SHGFI_ICON );
//添加文件项目和图标
m_imagelist_s.Add(finfo.hIcon);//向ImageList里添加图标资源
plst_ctl->InsertItem(i++,findfile.GetFileName(), m_imagelist_b.Add(finfo.hIcon));
}
findfile.Close();//释放资源
return ;
}
mfc CFileFind查找类的更多相关文章
- 列表控件ListBox关联的MFC中的类:CListBox
列表控件ListBox关联的MFC中的类:CListBox ######################################################## 1.在列表的结尾添加一项: ...
- MFC 添加C++类,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数;
MFC 添加C++类,不用定义C++类的对象,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数: 1先在mfc程序中添加普通类CProdata,然后删除头文件Prodata.h里面 ...
- 谢欣伦 - OpenDev原创教程 - 蓝牙设备查找类CxBthRadio & CxBthRadioFind
这是一个精练的蓝牙设备查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxBthRadioFind的使用如下: void CU ...
- 谢欣伦 - OpenDev原创教程 - 蓝牙设备查找类CxBthRemoteDeviceFind
这是一个精练的蓝牙设备查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxBthRemoteDeviceFind的使用如下: ...
- 谢欣伦 - OpenDev原创教程 - 网络设备查找类CxNetworkHostFind & CxNetworkAdapterFind
这是一个精练的网络设备查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxNetworkHostFind的使用如下: void ...
- 谢欣伦 - OpenDev原创教程 - 本地IP查找类CxLocalHostIPAddrFind
这是一个精练的本地IP查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxLocalHostIPAddrFind的使用如下: ...
- 谢欣伦 - OpenDev原创教程 - 设备查找类CxDeviceFind & CxDeviceMapFind
这是一个精练的设备查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxDeviceFind的使用如下: void CUsbSc ...
- 分析Java的类加载器与ClassLoader(二):classpath与查找类字节码的顺序,分析ExtClassLoader与AppClassLoader的源码
先回顾一下classpath classpath的作用: classpath的作用是指定查找类的路径:当使用java命令执行一个类(类中的main方法)时,会从classpath中进行查找这个类. 指 ...
- Linux下的文件查找类命令(转载)
如何快速有效的定位文件系统内所需要查找的文件呢?Linux为我们提供了一些文件查找类的命令,我们需要掌握以下几个命令: http://blog.csdn.net/sailor201211/articl ...
随机推荐
- react native中Unable to load script from assets 'index.android.bundle'解决方案
刚刚朋友问我,说是创建好一个项目,运行后报错:Unable to load script from assets 'index.android.bundle',以前好好的没出现这种现象,于是我找到一个 ...
- 用JS实现控制浏览器F12与右键功能
本文出至:新太潮流网络博客 用JS实现控制浏览器F12与右键功能,防止恶意窃取代码,或其他直接复制进去就好 //禁用右键 document.oncontextmenu = function () { ...
- 在web中如何调整上传过的图片方向 (exif)
前提: 相机中拍的照片放到web上不会自动识别方向,如有些竖向显示的照片放到web上横向显示.这些照片在windows上是正确显示的.但是web不会自动旋转照片到正确方向.下面我们通过两种方法来实现这 ...
- 学习笔记:MySQL Big DELETEs 删除大量数据
原文地址:http://mysql.rjweb.org/doc.php/deletebig Table of Contents The ProblemWhy it is a ProblemInnoDB ...
- crontab 命令使用
什么是crontab? crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. ...
- How to add hyperlink in JLabel
You can do this using a JLabel, but an alternative would be to style a JButton. That way, you don't ...
- 记录一次mysql使用load into命令导入csv格式数据的过程
今天从qwiklab实验获取一组数据,大概有5万条,在qwiklab实验室使用的是pgsql数据库,但是今天想把他插入本地的mysql数据库中. 1.首先是查看一下数据内容: 数据中有的是空值,有的是 ...
- CSS布局(三) 布局模型
布局模型 在网页中,元素有三种布局模型:1.流动模型(Flow) 默认的2.浮动模型 (Float)3.层模型(Layer) 1.流动模型(Flow) 流动(Flow)模型是默认的网页布局模式.也就是 ...
- PyQt5--MessageBox
# -*- coding:utf-8 -*- ''' Created on Sep 13, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...
- [python]关于在python中模块导入问题追加总结
[背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...