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

📄 autotransferdlg.cpp

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CAutoTransferDlg dialog


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


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


BEGIN_MESSAGE_MAP(CAutoTransferDlg, CDialog)
	//{{AFX_MSG_MAP(CAutoTransferDlg)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAutoTransferDlg message handlers

BOOL CAutoTransferDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_pApp = (CRMToolApp*)AfxGetApp();
	m_nTotalServerCount = m_pDlg->m_nSelectedCount;	//墨乔 疙飞阑 郴妨具且 醚 辑滚 肮荐 
	
	SetProgressMode();

	SetDlgItemText(IDC_STATIC_TOTAL,"Ready...");
	SetDlgItemText(IDC_STATIC_EXE,"Ready...");
	SetTimer(1, 50, NULL);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CAutoTransferDlg::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,2);	//立加苞 墨乔 滴 窜拌肺 窍磊..
	c_TotalProg.SetRange((short)(0), (short)m_nTotalServerCount);
}

void CAutoTransferDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	switch(nIDEvent)
	{
	case 1:
		{

		KillTimer(1);
		
		char szIp[16];	
		WORD wPort;
		CString szFileName,szMessage;
		CString szTemp, szTemp2;
		BYTE bType;

		for(int i=0; i<m_pDlg->m_nSelectedCount; i++)
		{
			if(m_bCancel)	return;

			memcpy(szIp, m_pDlg->m_SelectedBuffer[ i ].szIp, sizeof(szIp));
			szMessage.Format("%s Listener Connecting And Message Sending...",szIp); 
			SetDlgItemText(IDC_STATIC_TOTAL, szMessage);

			if(!g_pFt->Connect(szIp, RMTOOL_CONNECT_PORT))		//阿 府胶呈肺
			{
				CString str;
				str.Format("Fail to Connect! Ip:%s",szIp);
				MessageBox(str);
			}

			SetDlgItemText(IDC_STATIC_TOTAL, szMessage);
			
			for(int j=0; j< m_pDlg->m_SelectedBuffer[i].wPortArray.GetSize(); j++)
			{
				if(m_bCancel)	return;

				if(j == 0)
					c_ExeProg.SetRange(0, (short)(m_pDlg->m_SelectedBuffer[i].wPortArray.GetSize()) );
				
				wPort = m_pDlg->m_SelectedBuffer[ i ].wPortArray.GetAt(j);
				bType = m_pDlg->m_SelectedBuffer[ i ].bServerType.GetAt(j);
				szFileName = GetExeFile(bType);

				char *szServer = new char[MAX_PATH];

				switch(bType)
				{
				case SERVER_TYPE_PROXY:		szServer = "Proxy";		break;
				case SERVER_TYPE_AGENT:		szServer = "Agent";		break;
				case SERVER_TYPE_DBDEMON:	szServer = "DBDemon";	break;
				case SERVER_TYPE_MAP:		szServer = "Map";		break;
				}
				
				szMessage.Format("Port:%d, %sServer Copying Executed File...",wPort,szServer); 
				SetDlgItemText(IDC_STATIC_EXE, szMessage);

				if(szFileName == "")
				{
					CString str;
					str.Format("No ServerFile a Selected. Port:%d, Type:%d",wPort,bType);
					MessageBox(str);
					continue;
				}
								
				//颇老 墨乔 皋技瘤 
				PACKET_FILE_COPY packet(bType, wPort, (BYTE)m_nExecute, szFileName.GetBuffer( szFileName.GetLength() ));
				g_pFt->Send((char*)&packet, (unsigned short)packet.GetPacketSize());

				c_ExeProg.SetPos(j+1);
				Invalidate();
				
				PumpMessage();
				Sleep(200);
			}
			//促款肺靛 版肺 嘎苗林绊..
			szTemp = m_pApp->m_szDownloadPath[ m_pView->m_nCurServerSet ];
			szTemp2 = szTemp.Mid(3);

			PACKET_SET_DOWNLOAD_PATH packet_d(szTemp.GetAt(0), szTemp2.GetBuffer( szTemp2.GetLength() ));
			g_pFt->Send((char*)&packet_d, (unsigned short)packet_d.GetPacketSize());
			//
			Sleep(200);
			g_pFt->CloseClientSocket();
			c_TotalProg.SetPos(i+1);
		}

		}
		break;
	}
	CDialog::OnTimer(nIDEvent);
	EndDialog(IDOK);
}

CString CAutoTransferDlg::GetExeFile(int nServerType)
{

	POSITION pos;
	int nCount; nCount=0;
	char key[ 0xff ];	memset(key,0,0xff);
	char app[ 0xff ];	memset(app,0,0xff);
	int nFile; nFile = m_ExeList.GetCount();

	char path[ MAX_PATH ];
	//sprintf(instpath,"%s\\Setup.ini",m_pApp->GetInstalledPath());
	__PATH
	//sprintf(instpath,"%s", g_szSetupPath);


	CString szPath,exeName;
	pos = m_ExeList.GetHeadPosition();
	while(pos)
	{
		szPath = m_ExeList.GetNext(pos);
		exeName = szPath.Right(szPath.GetLength() - szPath.ReverseFind('\\') - 1);
		
		switch(nServerType)
		{
		case SERVER_TYPE_PROXY:
			{
				if(!exeName.Left(5).CompareNoCase("Proxy"))
				{
					m_pApp->m_szServerFile[ m_pView->m_nCurServerSet ][0] = szPath;
					//Recent File 历厘 
					sprintf(app,"RecentFile%d",m_pView->m_nCurServerSet + 1);
					sprintf(key,"File%d", 1);
					WritePrivateProfileString(app,key,m_pApp->m_szServerFile[ m_pView->m_nCurServerSet ][0],path);
					
					return exeName;
				}
			}
			break;
		
		case SERVER_TYPE_AGENT:
			{
				if(!exeName.Left(5).CompareNoCase("Agent"))
				{
					m_pApp->m_szServerFile[ m_pView->m_nCurServerSet ][1] = szPath;
					//Recent File 历厘 
					sprintf(app,"RecentFile%d",m_pView->m_nCurServerSet + 1);
					sprintf(key,"File%d", 2);
					WritePrivateProfileString(app,key,m_pApp->m_szServerFile[ m_pView->m_nCurServerSet ][1],path);
					
					return exeName;
				}
			}
			break;

		case SERVER_TYPE_DBDEMON:
			{
				if(!exeName.Left(7).CompareNoCase("DBDemon"))
				{
					m_pApp->m_szServerFile[ m_pView->m_nCurServerSet ][2] = szPath;
					//Recent File 历厘 
					sprintf(app,"RecentFile%d",m_pView->m_nCurServerSet + 1);
					sprintf(key,"File%d", 3);
					WritePrivateProfileString(app,key,m_pApp->m_szServerFile[ m_pView->m_nCurServerSet ][2],path);
					
					return exeName;
				}
			}
			break;

		case SERVER_TYPE_MAP:
			{
				if(!exeName.Left(3).CompareNoCase("Map"))
				{
					m_pApp->m_szServerFile[ m_pView->m_nCurServerSet ][3] = szPath;
					//Recent File 历厘 
					sprintf(app,"RecentFile%d",m_pView->m_nCurServerSet + 1);
					sprintf(key,"File%d", 4);
					WritePrivateProfileString(app,key,m_pApp->m_szServerFile[ m_pView->m_nCurServerSet ][3],path);
					
					return exeName;
				}
			}
			break;
		}//switch

	}//while

	return "";
}

void CAutoTransferDlg::PumpMessage()
{
	ASSERT(m_hWnd!=NULL);

	MSG msg;
    			
	while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
	{
	  if(!IsDialogMessage(&msg))
	  {
		TranslateMessage(&msg);
		DispatchMessage(&msg);  
	  }
	}
}



void CAutoTransferDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	m_bCancel = TRUE;
	CDialog::OnCancel();
}

⌨️ 快捷键说明

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