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 ...
随机推荐
- 如何为APK签名?
1.用来生成应用签名的文件 ①默认: debug.keystore > debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名.> 不同电脑使用此 ...
- 测试笔试单选题(持续更新ing)
1.在GB/T17544中,软件包质量要求包括三部分,即产品描述要求._____.程 序和数据要求.( A ) A.用户文档要求 B.系统功能要求 C.设计要求说明 D.软件配置要求 2.软件的六大质 ...
- 简单了解Tomcat与OSGi的类加载器架构
前言: 本次博客主要是对Tomcat与OSGi的类加载器架构,所以就需要对tomcat.OSGi以及类加载机制有所了解 类加载可以在http://www.cnblogs.com/ghoster/p/7 ...
- Resource View Window of Visual Studio
https://msdn.microsoft.com/en-us/library/d4cfawwc.aspx For the latest documentation on Visual Studio ...
- fatal: cannot create directoryxxxx': Invalid argument
问题:fatal: cannot create directoryxxxx': Invalid argument 环境:git 拉取远程仓库的代码后 原因:同事是mac,这个文件夹命名规则在苹果上没有 ...
- Matlab feval函数(转)
http://zhidao.baidu.com/link?url=7CusQYQXhCDB8sUtolMEhI1ctnpblbYrpSnU0fhIh5LvDZuhsBuozQusS6Kb1McTp7x ...
- yum安装某个包出现冲突的情况
yum安装是非常方便的,可以自动解决依赖问题,但是有时候我们安装包会出现冲突,这个时候我们就要查找是哪些包与哪些包出现冲突,然后再针对性的解决问题. 一般来说起冲突的包会报出来,主要为两点 1.包与包 ...
- arcgis pro2.3教程与问题集持续更新(一)
Arcgis pro 2.3是64位的不支持mdb 数据库,因为微软没有开放Access64的接口,所以不能支持个人地理数据库.mdb(Microsoft Database). arcgis pro ...
- MySQL5.7通过压缩包方式安装与配置
首先下载MySQL5.7的压缩包:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 1.解压缩到目标文件夹,解压后有许多文件,介绍一下用 ...
- 邮局加强版:四边形不等式优化DP
题目描述 一些村庄建在一条笔直的高速公路边上,我们用一条坐标轴来描述这条公路,每个村庄的坐标都是整数,没有两个村庄的坐标相同.两个村庄的距离定义为坐标之差的绝对值.我们需要在某些村庄建立邮局.使每个村 ...