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

📄 exetransferdlg.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 CPP
字号:
// ExeTransferDlg.cpp : implementation file
//

#include "stdafx.h"
#include "rmtool.h"
#include "ExeTransferDlg.h"
#include "packet.h"

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

/////////////////////////////////////////////////////////////////////////////
// CExeTransferDlg dialog


CExeTransferDlg::CExeTransferDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CExeTransferDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CExeTransferDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_nCurFileCount = 0;
	m_bCancel = 0;
	m_pApp = (CRMToolApp*)AfxGetApp();
	m_bAuto = 0;	//磊悼 靛贰弊 菩摹 牢 版快 1
}


void CExeTransferDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CExeTransferDlg)
	DDX_Control(pDX, IDC_PROGRESS_TOTAL, c_TotalProg);
	DDX_Control(pDX, IDC_PROGRESS_EXE, c_ExeProg);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CExeTransferDlg, CDialog)
	//{{AFX_MSG_MAP(CExeTransferDlg)
	//}}AFX_MSG_MAP
	ON_MESSAGE(UM_START_TRANSFER_NEWFILE, CExeTransferDlg::OnStartTransferNewFile)
	ON_MESSAGE(UM_SUCCESS_TRANSFER_FILE, CExeTransferDlg::OnSuccessTransferFile)
	ON_MESSAGE(UM_TRANSFERING, CExeTransferDlg::OnTransfering)	
	ON_MESSAGE(UM_ALL_TRANSFER_COMPLETE, CExeTransferDlg::OnAllTransferComplete)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CExeTransferDlg message handlers

void CExeTransferDlg::SetProgressMode()
{
	//归弊扼款靛 祸彬 瘤沥..
	c_TotalProg.SetBkColor(RGB(228,228,228));
	c_ExeProg.SetBkColor(RGB(228,228,228));
	
	c_TotalProg.SetGradientColors(RGB(0,109,255),RGB(0,0,62));
	c_ExeProg.SetGradientColors(RGB(0,109,255),RGB(0,0,62));

	//Progress Bar 焊歹 咯归 炼辆 
	CRect rect(1,1,1,1);
	c_TotalProg.SetBorders(&rect);
	c_ExeProg.SetBorders(&rect);
	
	//Percentage Mode 悸泼 
	c_TotalProg.SetShowPercent(TRUE);
	c_ExeProg.SetShowPercent(TRUE);

	c_ExeProg.SetRange(0,100);
	c_TotalProg.SetRange(0, (short)m_nTotalFileCount);
}

BOOL CExeTransferDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_nTotalFileCount = m_ExeList.GetCount();
	g_pFt->SetProgressingHandle( m_hWnd );		//DLL俊 Dialog狼 勤甸蔼阑 悸泼秦 霖促. 
	SetProgressMode();

	TransferExeFile();
//	CloseDialog();
	return TRUE;  // return TRUE unles you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CExeTransferDlg::TransferExeFile()
{
	//g_pFt->SetReadRoot("D:\\ini");
	//ini甫 捞侩茄 Patch老 版快俊绰 ini 积己 版肺肺 Root甫 嘎苗霖促. 
//	if(!m_bAuto)
//		g_pFt->SetReadRoot( m_pApp->m_szIniMakePath.GetBuffer( m_pApp->m_szIniMakePath.GetLength() ));

	char szIP[ 16 ];
	sprintf(szIP, "%s",m_pApp->m_szGameServerDataIp);

	POSITION pos;

	while(1)
	{
		pos = m_ExeList.GetHeadPosition();

		if(pos == NULL)
			break;		//List is Empty!!

		CString path = m_ExeList.GetAt(pos);			//府胶飘狼 霉锅掳俊 乐绰 菩胶甫 罐酒坷绊..
		
		//ReadRoot 瘤沥 
		int nIndex = path.ReverseFind('\\');
		CString szFolder = path.Left(nIndex);
		g_pFt->SetReadRoot( szFolder.GetBuffer( szFolder.GetLength() ));

		g_pFt->AddFile(path.GetBuffer( path.GetLength() ),FALSE);
		m_ExeList.RemoveAt(pos);
	}

	g_pFt->CloseClientSocket(); //kyo 趣矫 牢掺呈历绰啊 犬牢窍扁 困秦..
	if(!g_pFt->Connect(szIP,RMTOOL_CONNECT_PORT))			//立加 
	{
		AfxMessageBox("Can not connect server!");
		CloseDialog();
		return FALSE;
	}

	CString szTemp, szTemp2;
	szTemp = m_pApp->m_szUploadPath;
	szTemp2 = szTemp.Mid(3);


	PACKET_SET_DOWNLOAD_PATH packet(szTemp.GetAt(0), szTemp2.GetBuffer( szTemp2.GetLength() ));


	//dll肺 颇老阑 焊郴搁.. 
	DWORD res; res = g_pFt->Send((char*)&packet, (WORD)packet.GetPacketSize());//020303 lsw
	

	g_pFt->StartTransfer();

	return TRUE;
}

void CExeTransferDlg::OnStartTransferNewFile(WPARAM wParam, LPARAM lParam)
{
	lParam;
	if(m_bCancel) return;
	//wParam俊绰 傈价阑 矫累窍绰 颇老疙 CString* 啊 逞绢柯促. LPARAM俊绰 配呕 轿捞令 
	m_szCurTransferingFile = *((CString*)wParam);
	
	CString str;
	if(m_szCurTransferingFile.GetLength() > 40)
		str.Format("..%s Sending File...", m_szCurTransferingFile.Right(40));
	else
		str.Format("%s Sending Files...",m_szCurTransferingFile);

	SetDlgItemText(IDC_STATIC_EXE,str);

	str.Format("Total %dFiles  Now %dFiles Complete", m_nTotalFileCount , m_nCurFileCount);
	SetDlgItemText(IDC_STATIC_TOTAL,str);
}

void CExeTransferDlg::OnSuccessTransferFile(WPARAM wParam, LPARAM lParam)
{
	wParam;lParam;

	if(m_bCancel) return;
	m_szCurTransferingFile = "";
	m_nCurFileCount++;			//泅犁 割俺鳖瘤 罐疽唱 墨款飘 刘啊 

	CString str;
	str.Format("Total %dFiles  Now %dFiles Complete", m_nTotalFileCount , m_nCurFileCount);
	SetDlgItemText(IDC_STATIC_TOTAL,str);

	c_TotalProg.SetPos(m_nCurFileCount);	//橇肺弊饭胶官 悸泼 


	//if( m_nTotalFileCount == m_nCurFileCount )
	//	CloseDialog();//kyo
}

void CExeTransferDlg::OnTransfering(WPARAM wParam, LPARAM lParam)
{
	//wParam俊绰 醚 颇老 荤捞令啊..  lParam俊绰 泅犁鳖瘤 焊辰 颇老 荤捞令(byte)啊 朝酒柯促.
	if(m_bCancel) return;

	CString str;
	DWORD	dwKB;
	if(wParam > 1024)
	{
		dwKB = wParam / 1024;
		str.Format("(%ldKB/%ldKB)",lParam/1024, wParam/1024);
	}
	else
	{
		dwKB = wParam;
		str.Format("(%ldbytes/%ldbytes)", lParam, wParam);
	}
	
	double percentage = (lParam*1.0 / wParam*1.0) * 100.;
	c_ExeProg.SetPos((int)percentage);

	SetDlgItemText(IDC_STATIC_FILE_BYTE,str);
}

void CExeTransferDlg::OnAllTransferComplete(WPARAM wParam, LPARAM lParam)
{
	wParam;lParam;
	CloseDialog();
}

void CExeTransferDlg::CloseDialog()
{
	g_pFt->ClearFileQueue();
	g_pFt->CloseClientSocket();
	EndDialog(IDOK);
}

void CExeTransferDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	m_bCancel = TRUE;
	g_pFt->ClearFileQueue();
	g_pFt->CloseClientSocket();
	CDialog::OnCancel();
}


⌨️ 快捷键说明

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