www.pudn.com > 完整的FTP客户端ftpwanderersrc.zip > FTPWanderer.cpp


/****************************************************************/ 
/*																*/ 
/*  FtpWanderer.cpp												*/ 
/*																*/ 
/*  Defines the class behaviors for the application.			*/ 
/*																*/ 
/*  Programmed by Pablo van der Meer							*/ 
/*  Copyright Pablo Software Solutions 2002						*/ 
/*	http://www.pablovandermeer.nl								*/ 
/*																*/ 
/*  Last updated: 15 may 2002									*/ 
/*																*/ 
/****************************************************************/ 
 
 
#include "stdafx.h" 
#include "FtpWanderer.h" 
#include  
#include "MainFrm.h" 
#include "FtpWandererDoc.h" 
#include "FtpTreeView.h" 
#include "AboutDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
 
BEGIN_MESSAGE_MAP(CFtpWandererApp, CWinApp) 
	//{{AFX_MSG_MAP(CFtpWandererApp) 
	ON_COMMAND(ID_APP_ABOUT, OnAppAbout) 
	ON_COMMAND(ID_HELP_INDEX, OnHelpIndex) 
	//}}AFX_MSG_MAP 
	// Standard file based document commands 
	ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew) 
	ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CFtpWandererApp construction 
 
CFtpWandererApp::CFtpWandererApp() 
{ 
	// TODO: add construction code here, 
	// Place all significant initialization in InitInstance 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// The one and only CFtpWandererApp object 
 
CFtpWandererApp theApp; 
 
 
/********************************************************************/ 
/*																	*/ 
/* Function name : InitInstance										*/ 
/* Description   : CFtpWandererApp initialization.					*/ 
/*																	*/ 
/********************************************************************/ 
BOOL CFtpWandererApp::InitInstance() 
{ 
	if (!AfxSocketInit()) 
	{ 
		AfxMessageBox(IDP_SOCKETS_INIT_FAILED); 
		return FALSE; 
	} 
 
	// Standard initialization 
	// If you are not using these features and wish to reduce the size 
	//  of your final executable, you should remove from the following 
	//  the specific initialization routines you do not need. 
 
#ifdef _AFXDLL 
	Enable3dControls();			// Call this when using MFC in a shared DLL 
#else 
	Enable3dControlsStatic();	// Call this when linking to MFC statically 
#endif 
 
	InitCommonControls(); 
 
	// Change the registry key under which our settings are stored. 
	// TODO: You should modify this string to be something appropriate 
	// such as the name of your company or organization. 
	SetRegistryKey(_T("Pablo Software Solutions")); 
 
	LoadStdProfileSettings();  // Load standard INI file options (including MRU) 
	FixList(); 
	// Register the application's document templates.  Document templates 
	//  serve as the connection between documents, frame windows and views. 
 
	CSingleDocTemplate* pDocTemplate; 
	pDocTemplate = new CSingleDocTemplate( 
		IDR_MAINFRAME, 
		RUNTIME_CLASS(CFtpWandererDoc), 
		RUNTIME_CLASS(CMainFrame),       // main SDI frame window 
		RUNTIME_CLASS(CFtpTreeView)); 
	AddDocTemplate(pDocTemplate); 
 
	// Parse command line for standard shell commands, DDE, file open 
	CCommandLineInfo cmdInfo; 
	ParseCommandLine(cmdInfo); 
 
	// Dispatch commands specified on the command line 
	if (!ProcessShellCommand(cmdInfo)) 
		return FALSE; 
 
	// The one and only window has been initialized, so show and update it. 
	m_pMainWnd->ShowWindow(SW_SHOW); 
	m_pMainWnd->UpdateWindow(); 
 
	return TRUE; 
} 
 
 
/********************************************************************/ 
/*																	*/ 
/* Function name : OnAppAbout										*/ 
/* Description   : App command to run the dialog.					*/ 
/*																	*/ 
/********************************************************************/ 
void CFtpWandererApp::OnAppAbout() 
{ 
	CAboutDlg dlg; 
	dlg.DoModal(); 
} 
 
 
/********************************************************************/ 
/*																	*/ 
/* Function name : FixList											*/ 
/* Description   : Make sure no path names are shown.				*/ 
/*																	*/ 
/********************************************************************/ 
void CFtpWandererApp::FixList() 
{ 
	ASSERT(m_pRecentFileList->m_arrNames != NULL); 
	for (int iMRU = 0; iMRU < m_pRecentFileList->m_nSize; iMRU++) 
	{ 
		int nPos = m_pRecentFileList->m_arrNames[iMRU].ReverseFind('\\'); 
		if (nPos != -1) 
		{ 
			m_pRecentFileList->m_arrNames[iMRU] = m_pRecentFileList->m_arrNames[iMRU].Mid(nPos+1); 
		} 
	} 
} 
 
 
/********************************************************************/ 
/*																	*/ 
/* Function name : AddToRecentFileList								*/ 
/* Description   : Virtual override which strips path form string.	*/ 
/*																	*/ 
/********************************************************************/ 
void CFtpWandererApp::AddToRecentFileList(LPCTSTR lpszPathName)  
{ 
	ASSERT_VALID(this); 
	ASSERT(lpszPathName != NULL); 
	ASSERT(AfxIsValidString(lpszPathName)); 
 
	CString strPathName = lpszPathName; 
 
	// strip 'bogus' path 
	int nPos = strPathName.ReverseFind('\\'); 
	if (nPos != -1) 
		strPathName = strPathName.Mid(nPos + 1); 
 
	if (m_pRecentFileList != NULL) 
	{ 
		ASSERT(m_pRecentFileList->m_arrNames != NULL); 
 
		// update the MRU list, if an existing MRU string matches file name 
		for (int iMRU = 0; iMRU < m_pRecentFileList->m_nSize-1; iMRU++) 
		{ 
			if (m_pRecentFileList->m_arrNames[iMRU].CompareNoCase(strPathName) == 0) 
				break;      // iMRU will point to matching entry 
		} 
		// move MRU strings before this one down 
		for (; iMRU > 0; iMRU--) 
		{ 
			ASSERT(iMRU > 0); 
			ASSERT(iMRU < m_pRecentFileList->m_nSize); 
			m_pRecentFileList->m_arrNames[iMRU] = m_pRecentFileList->m_arrNames[iMRU-1]; 
		} 
		// place this one at the beginning 
		m_pRecentFileList->m_arrNames[0] = strPathName; 
	} 
} 
 
 
/********************************************************************/ 
/*																	*/ 
/* Function name : OnHelpIndex										*/ 
/* Description   : Command to show help file.						*/ 
/*																	*/ 
/********************************************************************/ 
void CFtpWandererApp::OnHelpIndex()  
{ 
	// launch help 
	::WinHelp(AfxGetMainWnd()->m_hWnd, AfxGetApp()->m_pszHelpFilePath, HELP_CONTENTS, 0L);	 
}