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

📄 ftp4view.cpp

📁 《Visual C++ Bible》或者说是《Visual C++ 宝典》的对应的源码文件
💻 CPP
字号:
// FTP4View.cpp : implementation of the CFTP4View class
//

#include "stdafx.h"
#include "FTP4.h"

#include "FTP4Doc.h"
#include "FTP4View.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFTP4View

IMPLEMENT_DYNCREATE(CFTP4View, CView)

BEGIN_MESSAGE_MAP(CFTP4View, CView)
	//{{AFX_MSG_MAP(CFTP4View)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFTP4View construction/destruction

CFTP4View::CFTP4View()
{

	m_bConnectAttempted = FALSE;

}

CFTP4View::~CFTP4View()
{
}

BOOL CFTP4View::PreCreateWindow(CREATESTRUCT& cs)
{
	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CFTP4View drawing

void CFTP4View::OnDraw(CDC* pDC)
{
	CFTP4Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	if( !m_bConnectAttempted ){
		m_bConnectAttempted = TRUE;
		AfxBeginThread( (AFX_THREADPROC) CFtpThread::PutFile,
			&m_nFileStatus );
		}

}

/////////////////////////////////////////////////////////////////////////////
// CFTP4View diagnostics

#ifdef _DEBUG
void CFTP4View::AssertValid() const
{
	CView::AssertValid();
}

void CFTP4View::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CFTP4Doc* CFTP4View::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFTP4Doc)));
	return (CFTP4Doc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CFTP4View 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::PutFile( 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;
	pFtpConnection->Remove( "test.txt" );
	if( !pFtpConnection->PutFile( "test.txt",
		"test.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 + -