📄 pheiftpdlg.cpp
字号:
// pheiFTPDlg.cpp : implementation file
//
#include "stdafx.h"
#include "pheiFTP.h"
#include "pheiFTPDlg.h"
#include <stdlib.h>
#include "Site.h"
#include "DlgSaveSite.h"
#include "ManageSite.h"
#include "string.h"
#include "direct.h"
#include "Dirname.h"
#include "Fname.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define ID_MENU_MAKELOCDIR 6101
#define ID_MENU_DELLOCDIR 6102
#define ID_MENU_DELLOCFILE 6103
#define ID_MENU_RENLOCFILE 6104
#define ID_MENU_MAKEREMDIR 6105
#define ID_MENU_DELREMDIR 6106
#define ID_MENU_DELREMFILE 6107
#define ID_MENU_RENREMFILE 6108
#define ID_MENU_SITE1 5101
#define ID_MENU_SITE2 5102
#define ID_MENU_SITE3 5103
#define ID_MENU_SITE4 5104
#define ID_MENU_SITE5 5105
#define ID_MENU_SITE6 5106
#define ID_MENU_SITE7 5107
#define ID_MENU_SITE8 5108
#define ID_MENU_SITE9 5109
#define ID_MENU_SITE10 5110
#define ID_MENU_SITE11 5111
#define ID_MENU_SITE12 5112
#define ID_MENU_SITE13 5113
#define ID_MENU_SITE14 5114
#define ID_MENU_SITE15 5115
#define ID_MENU_SITE16 5116
#define ID_MENU_SITE17 5117
#define ID_MENU_SITE18 5118
#define ID_MENU_SITE19 5119
#define ID_MENU_SITE20 5120
#define ID_MENU_SITE21 5121
#define ID_MENU_SITE22 5122
#define ID_MENU_SITE23 5123
#define ID_MENU_SITE24 5124
#define ID_MENU_SITE25 5125
#define ID_MENU_SITE26 5126
#define ID_MENU_SITE27 5127
#define ID_MENU_SITE28 5128
#define ID_MENU_SITE29 5129
#define ID_MENU_SITE30 5130
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPheiFTPDlg dialog
CPheiFTPDlg::CPheiFTPDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPheiFTPDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CPheiFTPDlg)
m_password = _T("");
m_port = _T("");
m_server = _T("");
m_status = _T("");
m_user = _T("");
m_remdir = _T("");
m_locdir = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CPheiFTPDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPheiFTPDlg)
DDX_Control(pDX, IDC_COMBO_LOCDIR, m_ctrllocdir);
DDX_Control(pDX, IDC_LIST_REMFILE, m_remfile);
DDX_Control(pDX, IDC_LIST_LOCFILE, m_locfile);
DDX_Control(pDX, IDC_BUTTON_REMPARENT, m_remparent);
DDX_Control(pDX, IDC_BUTTON_LOCPARENT, m_locparent);
DDX_Text(pDX, IDC_EDIT_PASSWORD, m_password);
DDV_MaxChars(pDX, m_password, 19);
DDX_Text(pDX, IDC_EDIT_PORT, m_port);
DDV_MaxChars(pDX, m_port, 9);
DDX_Text(pDX, IDC_EDIT_SERVER, m_server);
DDV_MaxChars(pDX, m_server, 39);
DDX_Text(pDX, IDC_EDIT_STATUS, m_status);
DDX_Text(pDX, IDC_EDIT_USER, m_user);
DDV_MaxChars(pDX, m_user, 19);
DDX_Text(pDX, IDC_EDIT_REMDIR, m_remdir);
DDX_CBString(pDX, IDC_COMBO_LOCDIR, m_locdir);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPheiFTPDlg, CDialog)
//{{AFX_MSG_MAP(CPheiFTPDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_CONNECT, OnButtonConnect)
ON_BN_CLICKED(IDC_BUTTON_DISCONNECT, OnButtonDisconnect)
ON_BN_CLICKED(IDC_BUTTON_DOWNLOAD, OnButtonDownload)
ON_BN_CLICKED(IDC_BUTTON_EXIT, OnButtonExit)
ON_BN_CLICKED(IDC_BUTTON_LOADSITE, OnButtonLoadsite)
ON_BN_CLICKED(IDC_BUTTON_SAVESITE, OnButtonSavesite)
ON_BN_CLICKED(IDC_BUTTON_UPLOAD, OnButtonUpload)
ON_BN_CLICKED(IDC_BUTTON_LOCPARENT, OnButtonLocparent)
ON_BN_CLICKED(IDC_BUTTON_REMPARENT, OnButtonRemparent)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_LOCFILE, OnDblclkListLocfile)
ON_CBN_SELCHANGE(IDC_COMBO_LOCDIR, OnSelchangeComboLocdir)
ON_CBN_KILLFOCUS(IDC_COMBO_LOCDIR, OnKillfocusComboLocdir)
ON_CBN_SETFOCUS(IDC_COMBO_LOCDIR, OnSetfocusComboLocdir)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_REMFILE, OnDblclkListRemfile)
ON_BN_CLICKED(IDC_BUTTON_MANAGESITE, OnButtonManagesite)
ON_WM_CONTEXTMENU()
//}}AFX_MSG_MAP
ON_COMMAND(ID_MENU_MAKELOCDIR, OnMakeLocdir)
ON_COMMAND(ID_MENU_DELLOCDIR, OnDelLocdir)
ON_COMMAND(ID_MENU_DELLOCFILE, OnDelLocfile)
ON_COMMAND(ID_MENU_RENLOCFILE, OnRenLocfile)
ON_COMMAND(ID_MENU_MAKEREMDIR, OnMakeRemdir)
ON_COMMAND(ID_MENU_DELREMDIR, OnDelRemdir)
ON_COMMAND(ID_MENU_DELREMFILE, OnDelRemfile)
ON_COMMAND(ID_MENU_RENREMFILE, OnRenRemfile)
ON_COMMAND(ID_MENU_SITE1, OnSite1)
ON_COMMAND(ID_MENU_SITE2, OnSite2)
ON_COMMAND(ID_MENU_SITE3, OnSite3)
ON_COMMAND(ID_MENU_SITE4, OnSite4)
ON_COMMAND(ID_MENU_SITE5, OnSite5)
ON_COMMAND(ID_MENU_SITE6, OnSite6)
ON_COMMAND(ID_MENU_SITE7, OnSite7)
ON_COMMAND(ID_MENU_SITE8, OnSite8)
ON_COMMAND(ID_MENU_SITE9, OnSite9)
ON_COMMAND(ID_MENU_SITE10, OnSite10)
ON_COMMAND(ID_MENU_SITE11, OnSite11)
ON_COMMAND(ID_MENU_SITE12, OnSite12)
ON_COMMAND(ID_MENU_SITE13, OnSite13)
ON_COMMAND(ID_MENU_SITE14, OnSite14)
ON_COMMAND(ID_MENU_SITE15, OnSite15)
ON_COMMAND(ID_MENU_SITE16, OnSite16)
ON_COMMAND(ID_MENU_SITE17, OnSite17)
ON_COMMAND(ID_MENU_SITE18, OnSite18)
ON_COMMAND(ID_MENU_SITE19, OnSite19)
ON_COMMAND(ID_MENU_SITE20, OnSite20)
ON_COMMAND(ID_MENU_SITE21, OnSite21)
ON_COMMAND(ID_MENU_SITE22, OnSite22)
ON_COMMAND(ID_MENU_SITE23, OnSite23)
ON_COMMAND(ID_MENU_SITE24, OnSite24)
ON_COMMAND(ID_MENU_SITE25, OnSite25)
ON_COMMAND(ID_MENU_SITE26, OnSite26)
ON_COMMAND(ID_MENU_SITE27, OnSite27)
ON_COMMAND(ID_MENU_SITE28, OnSite28)
ON_COMMAND(ID_MENU_SITE29, OnSite29)
ON_COMMAND(ID_MENU_SITE30, OnSite30)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPheiFTPDlg message handlers
BOOL CPheiFTPDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
//set bitmap to button(parent);
bmpparent.LoadBitmap(IDB_BITMAP_PARENT);
HBITMAP hbp=HBITMAP(bmpparent);
m_locparent.SetBitmap(hbp);
m_remparent.SetBitmap(hbp);
//set imagelist for listctrl
crMask=0;
fimage.LoadBitmap(IDB_BITMAP_FILE);
dimage.LoadBitmap(IDB_BITMAP_DIR);
eimage.LoadBitmap(IDB_BITMAP_EXE);
himage.LoadBitmap(IDB_BITMAP_HTM);
fdimage.Create(IDB_BITMAP_MP3,15,1,crMask);
fdimage.Add(&fimage,crMask);
fdimage.Add(&dimage,crMask);
fdimage.Add(&eimage,crMask);
fdimage.Add(&himage,crMask);
m_locfile.SetImageList(&fdimage,LVSIL_SMALL);
m_remfile.SetImageList(&fdimage,LVSIL_SMALL);
//set the status bar
m_status=_T("Status:");
UpdateData(false);
//set the local dir
CString initlocdir;
SetLocDir(initlocdir);
//read from sitemng to fill in the sitearray
strcpy(code,"IampheipheiXueSheng");
sitecount=0;
if(sitefile.Open("sitemng",CFile::modeRead))
{
sitecount=(int)sitefile.GetLength()/100;
sitefile.SeekToBegin();
for(int si=0;si<sitecount;si++)
{
sitefile.Read(sitearray[si].name,10);
sitefile.Read(sitearray[si].server,40);
sitefile.Read(sitearray[si].user,20);
sitefile.Read(sitearray[si].password,20);
sitefile.Read(sitearray[si].port,10);
for(int ic=0;ic<20;ic++)
{
char ccode=code[ic];
char cpassword=sitearray[si].password[ic];
sitearray[si].password[ic]=cpassword - ccode;
}
}
sitefile.Close();
}
//initialize
slope=_T("\\");
flagconnect=false;
return TRUE; // return TRUE unless you set the focus to a control
}
void CPheiFTPDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CPheiFTPDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CPheiFTPDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CPheiFTPDlg::OnButtonConnect()
{
if(flagconnect)
{
m_pFtpConnection->Close();
m_pInetSession->Close();
m_remdir.Empty();
m_remfile.DeleteAllItems();
flagconnect=false;
}
UpdateData(TRUE);
if(m_user.IsEmpty())
m_user=_T("anonymous");
if(m_password.IsEmpty())
m_password=_T("guest@my.net");
if(m_port.IsEmpty())
m_port=_T("21");
char tcarray[10];
strcpy(tcarray,LPCTSTR(m_port));
nPort=atoi(tcarray);
m_pInetSession = new CInternetSession(NULL, 1, INTERNET_OPEN_TYPE_PRECONFIG);
m_pFtpConnection=m_pInetSession->GetFtpConnection(m_server, m_user,m_password, nPort);
if(m_pFtpConnection->GetCurrentDirectory(m_remdir))
{
flagconnect=true;
SetRemDir(m_remdir);
UpdateData(FALSE);
}
}
void CPheiFTPDlg::OnButtonDisconnect()
{
if(flagconnect)
{
m_pFtpConnection->Close();
m_pInetSession->Close();
m_remdir.Empty();
m_remfile.DeleteAllItems();
flagconnect=false;
UpdateData(FALSE);
}
}
void CPheiFTPDlg::OnButtonDownload()
{
if(!flagconnect)
return;
bool flagdir=false;
CListCtrl* pList=&m_remfile;
int nItem;
POSITION pos = pList->GetFirstSelectedItemPosition();
if (pos == NULL)
{
AfxMessageBox("No file selected!");
return;
}
while (pos)
{
nItem = pList->GetNextSelectedItem(pos);
CString selfile;
selfile=pList->GetItemText(nItem,0);
//download selected dir and file
CFtpFileFind ftpFind(m_pFtpConnection);
CString strremdir=m_remdir+_T("/*.*");
BOOL bContinue = ftpFind.FindFile(strremdir);
CString strFileName;
if (!bContinue)
{
ftpFind.Close();
return;
}
while (bContinue)
{
bContinue = ftpFind.FindNextFile();
strFileName = ftpFind.GetFileName();
if(strFileName==selfile)
{
if(ftpFind.IsDirectory())
{
flagdir=true;
break;
}
else
Downloadsf(strFileName);
}
else
continue;
}
ftpFind.Close();
if(flagdir) DownloadDir(strFileName);
}
SetLocDir(m_locdir);
}
void CPheiFTPDlg::OnButtonExit()
{
exit(0);
}
void CPheiFTPDlg::OnButtonLoadsite()
{
CMenu menusite;
if(menusite.CreatePopupMenu())
{
for(int tmi=0;tmi<sitecount;tmi++)
{
menusite.AppendMenu(MF_STRING,5101+tmi,sitearray[tmi].name);
}
CRect rectls;
GetDlgItem(IDC_BUTTON_LOADSITE)->GetWindowRect(rectls);
menusite.TrackPopupMenu(TPM_LEFTALIGN,rectls.left,rectls.bottom,this);
}
}
void CPheiFTPDlg::OnButtonSavesite()
{
if(sitecount>=30)
return;
CDlgSaveSite dlgss;
CString tempcs;
tempcs.Format("site%d",sitecount+1);
dlgss.m_sitename=tempcs;
if(dlgss.DoModal()==IDOK)
{
strcpy(sitearray[sitecount].name,dlgss.m_sitename);
strcpy(sitearray[sitecount].server,m_server);
strcpy(sitearray[sitecount].user,m_user);
strcpy(sitearray[sitecount].password,m_password);
strcpy(sitearray[sitecount].port,m_port);
for(int icmp=0;icmp<sitecount;icmp++)
{
if(!sitearray[sitecount].sitecmp(sitearray[icmp]))
return;
}
sitecount++;
}
if(sitefile.Open("sitemng",CFile::modeCreate | CFile::modeWrite))
{
char codedpassword[20];
for(int si=0;si<sitecount;si++)
{
for(int ic=0;ic<20;ic++)
{
char ccode=code[ic];
char cpassword=sitearray[si].password[ic];
codedpassword[ic]=cpassword + ccode;
}
sitefile.Write(sitearray[si].name,10);
sitefile.Write(sitearray[si].server,40);
sitefile.Write(sitearray[si].user,20);
sitefile.Write(codedpassword,20);
sitefile.Write(sitearray[si].port,10);
}
sitefile.Flush();
sitefile.Close();
}
}
void CPheiFTPDlg::OnButtonUpload()
{
if(!flagconnect)
return;
CListCtrl* pList=&m_locfile;
int nItem;
POSITION pos = pList->GetFirstSelectedItemPosition();
if (pos == NULL)
AfxMessageBox("No file selected!");
else
{
while (pos)
{
nItem = pList->GetNextSelectedItem(pos);
CString selfile;
selfile=pList->GetItemText(nItem,0);
//upload selected dir and file
CFileFind finder;
CString strallfd=m_locdir+_T("\\")+selfile;
CString currfd;
BOOL bWorking = finder.FindFile(strallfd);
if(bWorking)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -