📄 ftp3view.cpp
字号:
// FTP3View.cpp : implementation of the CFTP3View class
//
#include "stdafx.h"
#include "FTP3.h"
#include "FTP3Doc.h"
#include "FTP3View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFTP3View
IMPLEMENT_DYNCREATE(CFTP3View, CView)
BEGIN_MESSAGE_MAP(CFTP3View, CView)
//{{AFX_MSG_MAP(CFTP3View)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFTP3View construction/destruction
CFTP3View::CFTP3View()
{
m_bConnectAttempted = FALSE;
}
CFTP3View::~CFTP3View()
{
}
BOOL CFTP3View::PreCreateWindow(CREATESTRUCT& cs)
{
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CFTP3View drawing
void CFTP3View::OnDraw(CDC* pDC)
{
CFTP3Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if( !m_bConnectAttempted ){
m_bConnectAttempted = TRUE;
AfxBeginThread( (AFX_THREADPROC) CFTPThread::GetFile,
&m_nFileStatus );
}
}
/////////////////////////////////////////////////////////////////////////////
// CFTP3View diagnostics
#ifdef _DEBUG
void CFTP3View::AssertValid() const
{
CView::AssertValid();
}
void CFTP3View::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CFTP3Doc* CFTP3View::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFTP3Doc)));
return (CFTP3Doc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CFTP3View message handlers
/////////////////////////////////////////////////////////////////////////////
// CFTPThread
IMPLEMENT_DYNCREATE(CFTPThread, CWinThread)
CFTPThread::CFTPThread()
{
}
CFTPThread::~CFTPThread()
{
}
BOOL CFTPThread::InitInstance()
{
// TODO: perform and per-thread initialization here
return TRUE;
}
int CFTPThread::ExitInstance()
{
// TODO: perform any per-thread cleanup here
return CWinThread::ExitInstance();
}
UINT CFTPThread::GetFile( LPVOID Status )
{
int *pnFileStatus;
CInternetSession *pInetSession;
CFtpConnection *pFtpConnection = NULL;
pnFileStatus = (int *) Status;
*pnFileStatus = 0;
pInetSession =
new CInternetSession( AfxGetAppName(),
1, PRE_CONFIG_INTERNET_ACCESS );
try{
pFtpConnection =
pInetSession->GetFtpConnection( "ftp.microsoft.com");
}
catch( CInternetException *pEx ){
pEx->Delete();
pFtpConnection = NULL;
*pnFileStatus = -1;
goto BailOut;
}
*pnFileStatus = 1;
remove( "disclaimer.txt" );
if( !pFtpConnection->GetFile( "disclaimer.txt",
"disclaimer.txt" ) )
*pnFileStatus = -2;
else
*pnFileStatus = 2;
BailOut:
if( pFtpConnection != NULL ){
pFtpConnection->Close();
delete pFtpConnection;
}
delete pInetSession;
AfxEndThread( 0 );
return( FALSE );
}
BEGIN_MESSAGE_MAP(CFTPThread, CWinThread)
//{{AFX_MSG_MAP(CFTPThread)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFTPThread message handlers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -