📄 savefileview.cpp
字号:
// SaveFileView.cpp : implementation of the CSaveFileView class
//
#include "stdafx.h"
#include "SaveFile.h"
#include "SaveFileDoc.h"
#include "SaveFileView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSaveFileView
IMPLEMENT_DYNCREATE(CSaveFileView, CScrollView)
BEGIN_MESSAGE_MAP(CSaveFileView, CScrollView)
//{{AFX_MSG_MAP(CSaveFileView)
ON_COMMAND(ID_FindPdf, OnFindPdf)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSaveFileView construction/destruction
CSaveFileView::CSaveFileView()
{
vPos=0;
sizeTotal.cx=30000;
sizeTotal.cy=60000;
nYline=80;
nYclient=400;
}
CSaveFileView::~CSaveFileView()
{
}
BOOL CSaveFileView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CScrollView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CSaveFileView drawing
void CSaveFileView::OnDraw(CDC* pDC)
{
CSaveFileDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
TEXTMETRIC tm;
pDC->GetTextMetrics(&tm);
CString out,namebuffer,pathbuffer;
namebuffer=pDoc->m_pdfWorker.m_strName;
pathbuffer=pDoc->m_pdfWorker.m_strPath;
while((!namebuffer.IsEmpty())&&(!pathbuffer.IsEmpty()))
{
{
int ndex=namebuffer.Find(" ",0);
out="";
out=namebuffer.Left(ndex);
namebuffer=namebuffer.Right(namebuffer.GetLength()-ndex-2);
int hPos=(ndex)*tm.tmMaxCharWidth;
ndex=pathbuffer.Find(" ",0);
pDC->TextOut(0,vPos,out+" "+pathbuffer.Left(ndex));
pathbuffer=pathbuffer.Right(pathbuffer.GetLength()-ndex-2);
}
vPos-=(tm.tmHeight + tm.tmExternalLeading);
}
vPos=0;
}
void CSaveFileView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
/////////////////////////////////////////
CSize sizePage(sizeTotal.cx /2 , sizeTotal.cy / nYclient);
CSize sizeLine(sizeTotal.cx / 80, sizeTotal.cy / nYline);
SetScrollSizes(MM_HIMETRIC, sizeTotal, sizePage, sizeLine);
/////////////////////////////////////////
}
/////////////////////////////////////////////////////////////////////////////
// CSaveFileView diagnostics
#ifdef _DEBUG
void CSaveFileView::AssertValid() const
{
CScrollView::AssertValid();
}
void CSaveFileView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CSaveFileDoc* CSaveFileView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSaveFileDoc)));
return (CSaveFileDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CSaveFileView message handlers
void CSaveFileView::deepfind(CString path, CSaveFileDoc* pDoc)
{
CFileFind finder;
path += _T("\\*.*");
BOOL bWorking = finder.FindFile(path);
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDots())
continue;
if (finder.IsDirectory())
{
CString str = finder.GetFilePath();
deepfind(str, pDoc);
}
else if (finder.GetFileName().Right(4)==".pdf")
{
pDoc->m_pdfWorker.m_strPath+=(finder.GetFilePath()+" ");
pDoc->m_pdfWorker.m_strName+=(finder.GetFileTitle()+" ");
}
}
finder.Close();
}
void CSaveFileView::OnFindPdf()
{
CString dir;
//从对话框打开文件
CFileDialog dlg(TRUE, NULL, "*.*");
if (dlg.DoModal() == IDOK)
{
dir=dlg.GetPathName();
}
//获得该文件所在的文件夹路径
while (dir.GetAt(dir.GetLength()-1)!='\\')
{
dir.Delete(dir.GetLength()-1);
}
CSaveFileDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CClientDC dc(this);
OnPrepareDC(&dc);
deepfind(dir, pDoc);
CRect rectClient;
GetClientRect(rectClient);
nYclient=rectClient.Height();
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
sizeTotal.cx=tm.tmMaxCharWidth*80;
sizeTotal.cy=((pDoc->m_pdfWorker.m_strName.GetLength()+
pDoc->m_pdfWorker.m_strPath.GetLength())*(tm.tmHeight+tm.tmExternalLeading) / 2) /20;
OnInitialUpdate();
InvalidateRect(rectClient);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -