📄 fileexplorerview.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 + -