MFC查找文件

输入D:


// MFCApplication9Dlg.cpp : 实现文件
//

#include "stdafx.h"
#include "MFCApplication9.h"
#include "MFCApplication9Dlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CMFCApplication9Dlg 对话框



CMFCApplication9Dlg::CMFCApplication9Dlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(IDD_MFCAPPLICATION9_DIALOG, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMFCApplication9Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMFCApplication9Dlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDOK, &CMFCApplication9Dlg::OnBnClickedOk)
END_MESSAGE_MAP()


// CMFCApplication9Dlg 消息处理程序

BOOL CMFCApplication9Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码

	CListCtrl *p = (CListCtrl*)GetDlgItem(IDC_LIST1);

	p->InsertColumn(0,_T("名称"),LVCFMT_CENTER,150);
	p->InsertColumn(1, _T("修改时间"), LVCFMT_CENTER, 100);
	p->InsertColumn(2, _T("类型"), LVCFMT_CENTER, 100);
	p->InsertColumn(3, _T("大小"), LVCFMT_CENTER, 100);

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CMFCApplication9Dlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CMFCApplication9Dlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}
#include<AtlBase.h>
#include<io.h>
void CMFCApplication9Dlg::OnBnClickedOk()
{
	struct _finddatai64_t c_file;//定义查找的文件变量

	CString szAdd;
	GetDlgItemText(IDC_EDIT1, szAdd);

	intptr_t hFile;//定义变量
	if ((hFile = _findfirst64(szAdd+"\\*.*", &c_file)) == -1L) { return; }//判断是否查找到文件
	CListCtrl* Plist = (CListCtrl*)GetDlgItem(IDC_LIST1);//创建新list
	Plist->DeleteAllItems();
	int i = 0;
	USES_CONVERSION;
	CString str;
	do
	{
		if (!(c_file.attrib & _A_HIDDEN)) {//判断是否是隐藏文件  不是隐藏文件就打印
			Plist->InsertItem(i, A2W(c_file.name));
			if (_A_SUBDIR & c_file.attrib) //判断是否是文件夹
			{
				Plist->SetItemText(i,2,_T("文件夹"));
			}
			else 
			{
				str = c_file.name;
				int n = str.ReverseFind(_T('.'));
				if (n > 0) { Plist->SetItemText(i, 2, str.Mid(n) + _T("文件")); }//添加后缀
				

			}
			str.Format(_T("%d"), c_file.size);
			Plist->SetItemText(i, 3, str);
			COleDateTime time(c_file.time_write);
			str.Format(_T("%d/%d/%d %d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute());
			Plist->SetItemText(i, 1, str);
			++i;
		}
	} while (_findnext64(hFile, &c_file) == 0);//文件是否查询完毕
	_findclose(hFile);//关闭查询
}

运行显示

在这里插入图片描述

第2种方法

.cpp文件


// MFCApplication9Dlg.cpp : 实现文件
//

#include "stdafx.h"
#include "MFCApplication9.h"
#include "MFCApplication9Dlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CMFCApplication9Dlg 对话框



CMFCApplication9Dlg::CMFCApplication9Dlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(IDD_MFCAPPLICATION9_DIALOG, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMFCApplication9Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMFCApplication9Dlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDOK, &CMFCApplication9Dlg::OnBnClickedOk)
END_MESSAGE_MAP()


// CMFCApplication9Dlg 消息处理程序

BOOL CMFCApplication9Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码

	CListCtrl *p = (CListCtrl*)GetDlgItem(IDC_LIST1);

	p->InsertColumn(0,_T("名称"),LVCFMT_CENTER,150);
	p->InsertColumn(1, _T("修改时间"), LVCFMT_CENTER, 150);
	p->InsertColumn(2, _T("类型"), LVCFMT_CENTER, 100);
	p->InsertColumn(3, _T("大小"), LVCFMT_RIGHT, 100);

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CMFCApplication9Dlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CMFCApplication9Dlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}
#include<AtlBase.h>
#include<io.h>
void CMFCApplication9Dlg::OnBnClickedOk()
{
	WIN32_FIND_DATA c_file;//定义查找的文件变量
	HANDLE hFile;

	CString szAdd;
	GetDlgItemText(IDC_EDIT1, szAdd);
	CListCtrl* Plist = (CListCtrl*)GetDlgItem(IDC_LIST1);//创建新list
	Plist->DeleteAllItems();

	if ((hFile = FindFirstFile(szAdd + "\\*.*", &c_file)) == INVALID_HANDLE_VALUE) { return; }//判断是否查找到文件
	
	int i = 0;
	CString str;
	do
	{
		if (!IsHidden(c_file)) {//判断是否是隐藏文件  不是隐藏文件就打印
			Plist->InsertItem(i, c_file.cFileName);
			if (FILE_ATTRIBUTE_DIRECTORY & c_file.dwFileAttributes) //判断是否是文件夹
			{
				Plist->SetItemText(i, 2, _T("文件夹"));
			}
			else
			{
				str = c_file.cFileName;
				int n = str.ReverseFind(_T('.'));
				if (n > 0) { Plist->SetItemText(i, 2, str.Mid(n) + _T("文件")); }//添加后缀


			}
			str.Format(_T("%d"), c_file.nFileSizeLow);
			Plist->SetItemText(i, 3, str);
			COleDateTime time(c_file.ftLastWriteTime);
			str.Format(_T("%d/%d/%d %d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute());
			Plist->SetItemText(i, 1, str);
			++i;
		}
	} while (FindNextFile(hFile, &c_file));//文件是否查询完毕
	FindClose(hFile);//关闭查询





}

//void CMFCApplication9Dlg::OnBnClickedOk()
//{
//	struct _finddatai64_t c_file;//定义查找的文件变量
//
//	CString szAdd;
//	GetDlgItemText(IDC_EDIT1, szAdd);
//
//	intptr_t hFile;//定义变量
//	if ((hFile = _findfirst64(szAdd+"\\*.*", &c_file)) == -1L) { return; }//判断是否查找到文件
//	CListCtrl* Plist = (CListCtrl*)GetDlgItem(IDC_LIST1);//创建新list
//	Plist->DeleteAllItems();
//	int i = 0;
//	USES_CONVERSION;
//	CString str;
//	do
//	{
//		if (!(c_file.attrib & _A_HIDDEN)) {//判断是否是隐藏文件  不是隐藏文件就打印
//			Plist->InsertItem(i, A2W(c_file.name));
//			if (_A_SUBDIR & c_file.attrib) //判断是否是文件夹
//			{
//				Plist->SetItemText(i,2,_T("文件夹"));
//			}
//			else 
//			{
//				str = c_file.name;
//				int n = str.ReverseFind(_T('.'));
//				if (n > 0) { Plist->SetItemText(i, 2, str.Mid(n) + _T("文件")); }//添加后缀
//				
//
//			}
//			str.Format(_T("%d"), c_file.size);
//			Plist->SetItemText(i, 3, str);
//			COleDateTime time(c_file.time_write);
//			str.Format(_T("%d/%d/%d %d:%d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute());
//			Plist->SetItemText(i, 1, str);
//			++i;
//		}
//	} while (_findnext64(hFile, &c_file) == 0);//文件是否查询完毕
//	_findclose(hFile);//关闭查询
//
//
//
//	
//
//}

.h 头文件


// MFCApplication9Dlg.h : 头文件
//

#pragma once


// CMFCApplication9Dlg 对话框
class CMFCApplication9Dlg : public CDialogEx
{
// 构造
	inline static BOOL IsHidden(const WIN32_FIND_DATA &c_file)
	{
		if (c_file.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) 
		{
			return TRUE;

		}
		if (!_tcscmp(c_file.cFileName,_T(".")))
		{
			return TRUE;
		}
		if (!_tcscmp(c_file.cFileName, _T("..")))
		{
			return TRUE;
		}
		return FALSE;
	}
public:
	CMFCApplication9Dlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_MFCAPPLICATION9_DIALOG };
#endif

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持


// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedOk();
};

运行效果更上面一样
在这里插入图片描述

查找文件最新


// MFCApplication9Dlg.cpp : 实现文件
//

#include "stdafx.h"
#include "MFCApplication9.h"
#include "MFCApplication9Dlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CMFCApplication9Dlg 对话框



CMFCApplication9Dlg::CMFCApplication9Dlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(IDD_MFCAPPLICATION9_DIALOG, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMFCApplication9Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMFCApplication9Dlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDOK, &CMFCApplication9Dlg::OnBnClickedOk)
END_MESSAGE_MAP()


// CMFCApplication9Dlg 消息处理程序

BOOL CMFCApplication9Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码

	CListCtrl *p = (CListCtrl*)GetDlgItem(IDC_LIST1);

	p->InsertColumn(0,_T("名称"),LVCFMT_CENTER,150);
	p->InsertColumn(1, _T("修改时间"), LVCFMT_CENTER, 150);
	p->InsertColumn(2, _T("类型"), LVCFMT_CENTER, 100);
	p->InsertColumn(3, _T("大小"), LVCFMT_RIGHT, 100);

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CMFCApplication9Dlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CMFCApplication9Dlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}
#include<AtlBase.h>
#include<io.h>
void CMFCApplication9Dlg::OnBnClickedOk()
{
	//WIN32_FIND_DATA c_file;

	CFileFind ff;//定义查找的文件变量
	//HANDLE hFile;

	CString szAdd;
	GetDlgItemText(IDC_EDIT1, szAdd);
	CListCtrl* Plist = (CListCtrl*)GetDlgItem(IDC_LIST1);//创建新list
	Plist->DeleteAllItems();

	BOOL b = ff.FindFile(szAdd + "\\*.*");//) { return; }//判断是否查找到文件
	
	int i = 0;
	CString str;

	while(b)
	{
		b=ff.FindNextFile();

		if (!ff.IsHidden() && !ff.IsDots()) {//判断是否是隐藏文件  不是隐藏文件就打印  判断是否有.文件
			Plist->InsertItem(i, ff.GetFileName());
			if (ff.IsDirectory()) //判断是否是文件夹
			{
				Plist->SetItemText(i, 2, _T("文件夹"));
			}
			else
			{
				str = ff.GetFileName();
				int n = str.ReverseFind(_T('.'));
				if (n > 0) { Plist->SetItemText(i, 2, str.Mid(n) + _T("文件")); }//添加后缀


			}

			str.Format(_T("%d"), ff.GetLength());
			Plist->SetItemText(i, 3, str);

			FILETIME ftime;
			ff.GetLastWriteTime(&ftime);
			COleDateTime time(ftime);
			str.Format(_T("%d/%d/%d %d:%02d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute());
			Plist->SetItemText(i, 1, str);
			++i;
		}
	};
	ff.Close();//关闭

}



效果图

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值