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 ...
随机推荐
- 70部MAYA灯光材质渲染教程合集
MAYA灯光材质渲染教程合集 教程格式:MP4和flv 两种格式 使用版本:教程不是一年出的教程,各个版本都有 (教程软件为英文版) 清晰度:可以看清软件上的文字 语言:部分中文字幕,其他英文(通过看 ...
- ASP.NET Core 依赖注入最佳实践——提示与技巧
在这篇文章,我将分享一些在ASP.NET Core程序中使用依赖注入的个人经验和建议.这些原则背后的动机如下: 高效地设计服务和它们的依赖. 预防多线程问题. 预防内存泄漏. 预防潜在的BUG. 这篇 ...
- PXE 和 计算机网络启动
1. 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网 ...
- 解决myeclipse项目中,多出的WebContent文件夹
由于通过svn导入项目,导致项目中多出WebContent文件夹,而在此之前正常的是WebRoot文件夹.这个WebContent删了之后还会自己冒出来. 直到我发现篇博客:http://blog.s ...
- Docker容器学习与分享10
Docker容器向外提供服务 用分享04中的Nginx服务来试一下. 不过这次我直接用Nginx镜像创建容器,先下载Nginx镜像. [root@promote ~]# docker search n ...
- October 29th, 2017 Week 44th Sunday
There was another life that I might have had, but I am having this one. 我明明可以过另一种生活,但我却选择了这一种. Be re ...
- Python csv.md
csv csv模块可以用于处理从电子表格和数据库导出的数据到带有字段和记录格式的文本文件,通常称为逗号分隔值(csv)格式,因为逗号通常用于分隔记录中的字段. Reading csv.reader(c ...
- MetaMask/provider-engine-3-test
通过看其test的代码去好好看看它是怎么使用的 1. provider-engine/test/basic.js const test = require('tape') const Provider ...
- Android开发——Android中常见的4种线程池(保证你能看懂并理解)
0.前言 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52415337 使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用 ...
- [转]Bing Maps Tile System 学习
原文链接:Bing Maps Tile System 学习