⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileexplorerview.cpp

📁 《Visual C++.NET MFC类库应用详解》程序实例
💻 CPP
字号:
// FileExplorerView.cpp : CFileExplorerView 类的实现
//

#include "stdafx.h"
#include "FileExplorer.h"

#include "FileExplorerDoc.h"
#include "FileExplorerView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CFileExplorerView

IMPLEMENT_DYNCREATE(CFileExplorerView, CListView)

BEGIN_MESSAGE_MAP(CFileExplorerView, CListView)
	ON_WM_STYLECHANGED()
END_MESSAGE_MAP()

// CFileExplorerView 构造/销毁

CFileExplorerView::CFileExplorerView()
{
	// TODO: 在此处添加构造代码

}

CFileExplorerView::~CFileExplorerView()
{
}

BOOL CFileExplorerView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
	// 样式
    cs.style |= LVS_REPORT;
	return CListView::PreCreateWindow(cs);
}

void CFileExplorerView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();

	// TODO: 调用 GetListCtrl() 直接访问 ListView 的列表控件,
	// 从而可以用项填充 ListView。
	GetDocument()->m_pListView = this;
	CListCtrl& ctlList = GetListCtrl();

	LV_COLUMN lvc;
	lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	lvc.fmt = LVCFMT_LEFT;
	lvc.iSubItem = 0;
	lvc.pszText = (LPTSTR)_T("名称     ");
	lvc.cx = ctlList.GetStringWidth(lvc.pszText) + 80;
	ctlList.InsertColumn(0,&lvc);
	lvc.iSubItem = 1;
	lvc.pszText = (LPTSTR)_T("大小     ");
	lvc.cx = ctlList.GetStringWidth(lvc.pszText) + 80;
	ctlList.InsertColumn(1,&lvc);
	lvc.iSubItem = 2;
	lvc.pszText = (LPTSTR)_T("日期          ");
	lvc.cx = ctlList.GetStringWidth(lvc.pszText) + 80;
	ctlList.InsertColumn(2,&lvc);

	ExploreFile("C:\\");
}


// CFileExplorerView 诊断

#ifdef _DEBUG
void CFileExplorerView::AssertValid() const
{
	CListView::AssertValid();
}

void CFileExplorerView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CFileExplorerDoc* CFileExplorerView::GetDocument() const // 非调试版本是内联的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFileExplorerDoc)));
	return (CFileExplorerDoc*)m_pDocument;
}
#endif //_DEBUG


// CFileExplorerView 消息处理程序
void CFileExplorerView::OnStyleChanged(int /*nStyleType*/, LPSTYLESTRUCT /*lpStyleStruct*/)
{
	//TODO: 添加代码以响应用户对窗口视图样式的更改
}

void CFileExplorerView::ExploreFile(const CString& strDir)
{
	CListCtrl& ctlList = GetListCtrl();

	ctlList.DeleteAllItems();

	int nItem = 0;
    CFileFind fFind;
    CString strDirNew;
	if(strDir.Right(1)!="\\")
		strDirNew = strDir + "\\*.*";
	else
		strDirNew = strDir + "*.*";
	BOOL bContinue=fFind.FindFile(strDirNew);
	while(bContinue)
	{
		bContinue=fFind.FindNextFile();
        CString FileName,strSize,strDateTime;
		FileName=fFind.GetFileName();
		int Size=fFind.GetLength()/1024+1;
		strSize.Format("%d KB",Size);
		CTime time;fFind.GetLastWriteTime(time);
		strDateTime.Format(_T("%4.4hd-%2.2hd-%2.2hd %2.2hd:%2.2hd:%2.2hd"),time.GetYear(),
			time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond());

		if(fFind.IsDots())continue;
		if(!fFind.IsDirectory())
		{
            LV_ITEM lvItem;
	        lvItem.mask = LVIF_TEXT;
	        lvItem.iImage = 0;
	        lvItem.iItem = nItem;

	        lvItem.iSubItem = 0;  //插入文件名
	        lvItem.pszText = (LPTSTR)(LPCTSTR) FileName;
	        ctlList.InsertItem(&lvItem);
	
	        lvItem.iSubItem = 1;  //插入文件大小
	        lvItem.pszText = (LPTSTR)(LPCTSTR) strSize;
	        ctlList.SetItem(&lvItem);

	        lvItem.iSubItem = 2;  //插入文件日期
	        lvItem.pszText = (LPTSTR)(LPCTSTR) strDateTime;
	        ctlList.SetItem(&lvItem);
		}
	}
	fFind.Close();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -