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

📄 taskmanager.cpp

📁 FTP上传工具,FTP上传的小例子,包括定制时间上传功能
💻 CPP
字号:
// TaskManager.cpp : implementation file
//

#include "stdafx.h"
#include "FtpServer.h"
#include "TaskManager.h"
#include "UpdateDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CTaskManager dialog

CTaskManager::CTaskManager(CWnd* pParent /*=NULL*/)
	: CDialog(CTaskManager::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTaskManager)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CTaskManager::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTaskManager)
	DDX_Control(pDX, IDC_LIST1, m_list);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTaskManager, CDialog)
	//{{AFX_MSG_MAP(CTaskManager)
	ON_BN_CLICKED(IDC_BUTTONADD, OnButtonadd)
	ON_BN_CLICKED(IDC_BUTTONDEL, OnButtondel)
	ON_BN_CLICKED(IDC_BUTTONDELALL, OnButtondelall)
	ON_BN_CLICKED(IDC_BUTTONUPDATE, OnButtonupdate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTaskManager message handlers

BOOL CTaskManager::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
/*	m_list.SetBkColor(RGB(100,100,128));
	m_list.SetTextBkColor(RGB(0,128,128));
	m_list.SetTextColor(RGB(255,255,0));*/

	m_list.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP );
	TCHAR szBuf[20];
	LV_COLUMN lvc;
	
	int i;
	for ( i = 0; i < 11; i++ )
	{
		//lvc.cx       = 48+14*i;
		switch(i)
		{
			case 0:
				wsprintf(szBuf, _T("FTP地址"));
				lvc.cx = 100;
				break;
			case 1:
				wsprintf(szBuf, _T("FTP用户名") );
				lvc.cx = 100;
				break;
			case 2:
				wsprintf(szBuf, _T("FTP密码") );
				lvc.cx = 100;
				break;
			case 3:
				wsprintf(szBuf, _T("监控文件") );
				lvc.cx = 300;
				break;
			case 4:
				wsprintf(szBuf, _T("间隔小时") );
				lvc.cx = 70;
				break;
			case 5:
				wsprintf(szBuf, _T("间隔分钟") );
				lvc.cx = 70;
				break;
			case 6:
				wsprintf(szBuf, _T("上传后改名") );
				lvc.cx = 80;
				break;
			case 7:
				wsprintf(szBuf, _T("上传后删除") );
				lvc.cx = 80;
			    break;
			case 8:
				wsprintf(szBuf, _T("上传路径") );
				lvc.cx = 80;
			    break;
			case 9:
				wsprintf(szBuf, _T("开始时间") );
				lvc.cx = 120;
			    break;
			case 10:
				wsprintf(szBuf, _T("终止时间") );
				lvc.cx = 120;
			    break;

		}
		lvc.mask     = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
		lvc.fmt      = LVCFMT_LEFT;
		lvc.pszText  =szBuf;
		lvc.iSubItem = i;         
		//lvc.cx       = 48+14*i;
		m_list.InsertColumn( i, &lvc );
	}
	UpWindows();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


void CTaskManager::OnButtonadd() 
{
	// TODO: Add your control notification handler code here
	CFtpServerApp *pApp = (CFtpServerApp *)AfxGetApp();
	CMyTask *pTask = new CMyTask;
    CMyTask *pTaskTmp = new CMyTask;
	
	CUpdateDlg dlg;
	if (pApp->m_diaryList.GetCount()>0)
	{
       	pTaskTmp=pApp->m_diaryList.GetTail();
		dlg.m_ftpname=pTaskTmp->m_FtpUserName;
		dlg.m_ftppsw=pTaskTmp->m_FtpUserPsw;
		dlg.m_ftpserver=pTaskTmp->m_FtpServer;
	}
	CTime tmp;
	dlg.m_dateTmp=( tmp.GetCurrentTime()+CTimeSpan( 365, 1, 0, 0 ));
	dlg.m_date=tmp.GetCurrentTime();
	if(IDOK == dlg.DoModal())
	{
		pTask->m_SurveillantPath = dlg.m_filenametemp;
		pTask->m_FtpUserName = dlg.m_ftpname;
		pTask->m_FtpUserPsw = dlg.m_ftppsw;
		pTask->m_FtpServer = dlg.m_ftpserver;
		pTask->m_IntervalMinute = dlg.m_intervalminute;
		pTask->m_IntervalHour = dlg.m_intervalhour;
		pTask->m_RemoteFilePath = dlg.m_remotepath;
		pTask->m_UploadDelete = dlg.m_del;
		pTask->m_UploadRename = dlg.m_rename;
        pTask->m_starthour = dlg.m_starthour;
	//	pTask->m_endhour = dlg.m_endhour;
		pTask->m_TstartDate = dlg.m_date;
        pTask->m_TendDate = dlg.m_dateTmp; 
		pApp->m_diaryList.AddTail(pTask);
		pApp->onSave();
	}
	
	UpWindows();
}

void CTaskManager::OnButtondel() 
{
	// TODO: Add your control notification handler code here
	int nSel;
	POSITION pos;
	CFtpServerApp *pApp = (CFtpServerApp *)AfxGetApp();
	if(FindMyDiary(nSel, pos))
	{
        pApp->m_diaryList.RemoveAt(pos);
		m_list.DeleteItem(nSel);
		pApp->onSave();
	}
	else
	{
		//MessageBox("错误","错误", MB_OK);
	}
}

int CTaskManager::FindMyDiary(int& nSel, POSITION& pos)
{
    CFtpServerApp *pApp = (CFtpServerApp *)AfxGetApp();
	POSITION pos1 = m_list.GetFirstSelectedItemPosition();
	{
	   nSel = m_list.GetNextSelectedItem(pos1);
	}
	pos = pApp->m_diaryList.FindIndex(nSel);
//	ASSERT(pos != NULL);
	if ((pos == NULL) || (nSel == -1))
		return 0;
	return 1;
}

void CTaskManager::OnButtondelall() 
{
	// TODO: Add your control notification handler code here
	CFtpServerApp *pApp = (CFtpServerApp *)AfxGetApp();
    pApp->m_diaryList.RemoveAll();
	m_list.DeleteAllItems();
	pApp->onSave();
}

void CTaskManager::OnButtonupdate() 
{
	// TODO: Add your control notification handler code here
	int nSel;
	POSITION pos;
	CFtpServerApp *pApp = (CFtpServerApp *)AfxGetApp();
	if(FindMyDiary(nSel, pos))
	{
        CMyTask* pMyDiary=pApp->m_diaryList.GetAt(pos);
		CUpdateDlg dlg;
		dlg.m_filepath=pMyDiary->m_SurveillantPath;
		dlg.m_ftpname=pMyDiary->m_FtpUserName;
		dlg.m_ftppsw=pMyDiary->m_FtpUserPsw;
		dlg.m_ftpserver=pMyDiary->m_FtpServer;
		dlg.m_intervalminute=pMyDiary->m_IntervalMinute;
		dlg.m_intervalhour=pMyDiary->m_IntervalHour;
		dlg.m_remotepath=pMyDiary->m_RemoteFilePath;
		dlg.m_del=pMyDiary->m_UploadDelete;
     	dlg.m_rename=pMyDiary->m_UploadRename;
		dlg.m_starthour=pMyDiary->m_starthour;
		dlg.m_date=	pMyDiary->m_TstartDate ;
        dlg.m_dateTmp= pMyDiary->m_TendDate; 
	//	dlg.m_endhour=pMyDiary->m_endhour;
		if(IDOK == dlg.DoModal())
		{
			pMyDiary->m_SurveillantPath = dlg.m_filepath;
			pMyDiary->m_FtpUserName = dlg.m_ftpname;
			pMyDiary->m_FtpUserPsw = dlg.m_ftppsw;
		    pMyDiary->m_FtpServer = dlg.m_ftpserver;
		    pMyDiary->m_IntervalMinute = dlg.m_intervalminute;
			pMyDiary->m_IntervalHour = dlg.m_intervalhour;
		    pMyDiary->m_RemoteFilePath = dlg.m_remotepath;
		    pMyDiary->m_UploadDelete = dlg.m_del;
     	    pMyDiary->m_UploadRename = dlg.m_rename;
            pMyDiary->m_starthour = dlg.m_starthour;
            pMyDiary->m_TstartDate = dlg.m_date;
            pMyDiary->m_TendDate = dlg.m_dateTmp; 
	 // pMyDiary->m_endhour = dlg.m_endhour;

            pApp->onSave();
			UpWindows();
			
		}
	}
	else
	{
	    //MessageBox("错误","错误", MB_OK);
	}

}

void CTaskManager::UpWindows() 
{
	CFtpServerApp *pApp = (CFtpServerApp *)AfxGetApp();
	m_list.DeleteAllItems();
	WORD nCount;
	POSITION pos;
	CString my_date;
	
	nCount = (WORD)pApp->m_diaryList.GetCount();
	pos = pApp->m_diaryList.GetHeadPosition();
	for(int k = 0; k < nCount && pos != NULL; k++)
	{
		CMyTask* pTask = pApp->m_diaryList.GetNext(pos);
		m_list.InsertItem(k,LPSTR_TEXTCALLBACK);
		//my_date = pApp->TimetoCString(pMyDiary->m_TDate);
		//m_list.SetItemText(k, 0, my_date);
		m_list.SetItemText(k, 0, pTask->m_FtpServer);
		m_list.SetItemText(k, 1, pTask->m_FtpUserName);
		m_list.SetItemText(k, 2, pTask->m_FtpUserPsw);
		m_list.SetItemText(k, 3, pTask->m_SurveillantPath);
		CString my_temp;
		my_temp.Format("%d",pTask->m_IntervalHour);
		m_list.SetItemText(k, 4, my_temp);
        my_temp.Format("%d",pTask->m_IntervalMinute);
		m_list.SetItemText(k, 5, my_temp);
		if (pTask->m_UploadRename)
		    my_temp.Format("%s","是");
		else
            my_temp.Format("%s","否");
		m_list.SetItemText(k, 6, my_temp);
		if (pTask->m_UploadDelete)
		    my_temp.Format("%s","是");
		else
            my_temp.Format("%s","否");
		m_list.SetItemText(k, 7, my_temp);
		m_list.SetItemText(k, 8, pTask->m_RemoteFilePath);
		my_temp.Format("%s %d时",TimetoCString(pTask->m_TstartDate),pTask->m_starthour);
		m_list.SetItemText(k, 9, my_temp);
        my_temp.Format("%s",TimetoCString(pTask->m_TendDate));
		m_list.SetItemText(k, 10, my_temp);
	}
}

CString CTaskManager::TimetoCString(CTime& m_Ttime)
{
	int m_nyear, m_nmonth, m_nday;
	CString m_date;;
	char m_chyear[9], m_chmonth[5], m_chday[5];
	m_nyear = m_Ttime.GetYear();
	m_nmonth = m_Ttime.GetMonth();
	m_nday = m_Ttime.GetDay();
	_gcvt((double)m_nyear, 4, m_chyear);
	_gcvt((double)m_nmonth, 2, m_chmonth);
	_gcvt((double)m_nday, 2, m_chday);
	m_date = (CString)m_chyear + "年" + (CString)m_chmonth + "月" + (CString)m_chday + "日";
	return m_date;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -