?? transferprogdlg.cpp
字號:
// TransferProgDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RMTool.h"
#include "TransferProgDlg.h"
#include "Packet.h"
#include "ServerView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTransferProgDlg dialog
CTransferProgDlg::CTransferProgDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTransferProgDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTransferProgDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pApp = (CRMToolApp*)AfxGetApp();
m_bCancel = FALSE;
}
void CTransferProgDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTransferProgDlg)
DDX_Control(pDX, IDC_PROGRESS_TOTAL, c_TotalProg);
DDX_Control(pDX, IDC_PROGRESS_SERVER, c_ServerProg);
DDX_Control(pDX, IDC_PROGRESS_FILE, c_FileProg);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTransferProgDlg, CDialog)
//{{AFX_MSG_MAP(CTransferProgDlg)
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
ON_MESSAGE(UM_START_TRANSFER_NEWFILE, CTransferProgDlg::OnStartTransferNewFile)
ON_MESSAGE(UM_SUCCESS_TRANSFER_FILE, CTransferProgDlg::OnSuccessTransferFile)
ON_MESSAGE(UM_TRANSFERING, CTransferProgDlg::OnTransfering)
ON_MESSAGE(UM_ALL_TRANSFER_COMPLETE, CTransferProgDlg::OnAllTransferComplete)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTransferProgDlg message handlers
BOOL CTransferProgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetProgressMode();
memset(m_szConIp,0,sizeof(m_szConIp));
g_pFt->SetProgressingHandle( m_hWnd ); //DLL俊 Dialog狼 勤甸藹闌 悸潑秦 霖促.
m_nCurFolderFileNum = 0;
m_nSendedFolderFileCount = 0; //泅犁 割俺狼 頗老鱉瘤 焊陳唱 貨綽 墨款飄
m_nSendedServerCount = 0; //泅犁 割俺狼 輯滾俊 頗老 焊陳唱 貨綽 墨款飄
// TransferExeFile();
if(ConnectAndStartTransfer() == NULL)
return FALSE;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CTransferProgDlg::AddFolder(CString szPath)
{
char file[ _MAX_PATH ];
char temp[ _MAX_PATH ]; memset(temp,0,_MAX_PATH);
//ConnectionInfo result; memset(&result,0,sizeof(result));
CString ext;
CString base = szPath;
szPath += "\\*.*";
CFileFind finder;
BOOL bWorking = finder.FindFile(szPath);
while(bWorking)
{
bWorking = finder.FindNextFile();
if(finder.IsDots()) continue;
memset(file,0, _MAX_PATH);
sprintf(file, "%s", finder.GetFileName());
if(finder.IsDirectory()) //叼泛配府 撈擱
{
sprintf(temp,"%s\\%s",base,file);
if(!g_pFt->AddFile(temp, TRUE))
{
return FALSE;
}
if(!AddFolder(temp)) //犁蓖 齲免
{
return FALSE;
}
}
else //頗老撈擱
{
ext = GetFileExt(file);
ext.MakeLower();
sprintf(temp,"%s\\%s",base,file);
if(ext == "ini")
{
::GetPrivateProfileString("server_info","own_server_ip_for_server","",
m_szConIp, sizeof(m_szConIp),temp );
//result.dwPort = ::GetPrivateProfileInt("server_info","own_server_port_for_server",0,temp);
}
/* else if(ext == "exe")
{
int k=0;
}*/
//棄歹救狼 傈價秦具且 頗老狼 骯薦啊 割俺牢啊 烙矯肺 扁撅竅霸 秦滴磊..
m_nCurFolderFileNum++;
if(!g_pFt->AddFile(temp, FALSE))
{
return FALSE;
}
}
}
finder.Close();
return TRUE;
}
CString CTransferProgDlg::GetFileExt(CString szPath)
{
return szPath.Right(szPath.GetLength() - szPath.ReverseFind('.') - 1);
}
//貨肺款 頗老 傈價闌 矯累茄促綽 皋技瘤甫 DLL俊輯 罐酒 齲免登綽 勤甸礬撈促..
void CTransferProgDlg::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 files...", m_szCurTransferingFile.Right(40));
else
str.Format("%s Sending files...",m_szCurTransferingFile);
SetDlgItemText(IDC_STATIC_FILE,str);
}
//頗老 竅唱啊 己傍利欄肺 葛滴 Send 燈闌錠狼 皋技瘤甫 罐酒 齲免登綽 勤甸礬撈促..
void CTransferProgDlg::OnSuccessTransferFile(WPARAM wParam, LPARAM lParam)
{
wParam;lParam;
if(m_bCancel) return;
//exe頗老撈 傈價 肯豐等 版快 阿輯滾寸 exe頗老籃 竅唱父 傈價登骨肺..
//弊錠狼 exe頗老闌 烙矯 歷厘秦滴菌促啊.. 秦寸 輯滾俊 措茄 頗老傈價撈 場唱擱
//傈價罐籃 阿 棄歹肺 Copy竅扼綽 菩哦闌 朝妨霖促.
if(GetFileExt(m_szCurTransferingFile) == "exe")
{
CString temp;
CString temp2 = m_szCurTransferingFile.Right( m_szCurTransferingFile.GetLength() - m_szCurTransferingFile.ReverseFind('\\') - 1 );
for(int i=0; i<4 ; i++)
{
temp = m_pApp->m_szServerFile[ m_nCurServerSet ][i];
temp = temp.Right( temp.GetLength() - temp.ReverseFind('\\') -1 );
if(!temp2.CompareNoCase(temp))
{
m_szCopyFile = temp;
}
}
}
m_szCurTransferingFile = "";
m_nSendedFolderFileCount++; //泅犁 割俺鱉瘤 罐疽唱 墨款飄 劉啊
CString str;
str.Format("All %dFiles Now %dFiles Transfer Complete.", m_nCurFolderFileNum , m_nSendedFolderFileCount);
SetDlgItemText(IDC_STATIC_TOTAL,str);
c_TotalProg.SetPos(m_nSendedFolderFileCount); //橇肺弊飯膠官 悸潑
}
//頗老 傈價吝老錠 泅犁 頗老傈價 柳青 惑炔 皋技瘤甫 罐酒 齲免登綽 勤甸礬撈促..
void CTransferProgDlg::OnTransfering(WPARAM wParam, LPARAM lParam)
{
if(m_bCancel) return;
//wParam俊綽 醚 頗老 葷撈令啊.. lParam俊綽 泅犁鱉瘤 焊辰 頗老 葷撈令(byte)啊 朝酒柯促.
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);
}
float percentage = (float)((lParam*1.0 / wParam*1.0) * 100.);
c_FileProg.SetPos((int)percentage);
SetDlgItemText(IDC_STATIC_FILE_BYTE,str);
}
//茄 輯滾俊 措茄 頗老傈價 場車闌錠.. (DLL 郴何 鈕俊 頗老撈 歹撈惑 巢酒樂瘤 臼闌錠.) 皋技瘤甫 罐酒 齲免登綽 勤甸礬..
void CTransferProgDlg::OnAllTransferComplete(WPARAM wParam, LPARAM lParam)
{
wParam;lParam;
if(m_bCancel) return;
//g_pFt->CloseClientSocket();
m_nSendedServerCount++;
c_ServerProg.SetPos(m_nSendedServerCount);
CString name[4];
for(int i=0; i<4; i++)
{
//CString ExeFile = m_pDoc->m_szServerFile[ type ].Right( m_pDoc->m_szServerFile[ type ].GetLength() - m_pDoc->m_szServerFile[ type ].ReverseFind('\\') - 1);
name[i] = m_pApp->m_szServerFile[ m_nCurServerSet ][i].Right( m_pApp->m_szServerFile[ m_nCurServerSet ][i].GetLength()
- m_pApp->m_szServerFile[ m_nCurServerSet ][i].ReverseFind('\\') - 1);
}
char packet[1024];
int offset = 3;
packet[0] = PTCL_RM;
packet[1] = MSG_RM_COPY_FILE;
packet[2] = (char)name[0].GetLength();
memcpy(packet + offset, name[0], name[0].GetLength());
offset += name[0].GetLength();
packet[ offset ] = (char)name[1].GetLength(); offset += 1;
memcpy(packet + offset, name[1], name[1].GetLength());
offset += name[1].GetLength();
packet[ offset ] = (char)name[2].GetLength(); offset += 1;
memcpy(packet + offset, name[2], name[2].GetLength());
offset += name[2].GetLength();
packet[ offset ] = (char)name[3].GetLength(); offset += 1;
memcpy(packet + offset, name[3], name[3].GetLength());
offset += name[3].GetLength();
//瘤陛 頗老闌 罐籃 Listener俊霸 exe頗老闌 阿 棄歹肺 Copy竅扼綽 皋技瘤甫 朝妨霖促.
//PACKET_FILE_COPY packet( m_szCopyFile.GetBuffer( m_szCopyFile.GetLength() ) );
//g_pFt->Send((char*)&packet, packet.GetPacketSize());
g_pFt->Send((char*)packet, (BYTE)offset);
if(m_nDropFileCount == m_nSendedServerCount) //葛電 輯滾俊 促 焊陳闌 版快
{
CString str;
str.Format("All %dFile Transfer To Server! (%d/%d)",m_nDropFileCount,m_nSendedServerCount, m_nDropFileCount);
SetDlgItemText(IDC_STATIC_SERVER,str);
MessageBox("Complete to File Transfer","Transfer Completed");
#ifdef RM_LOG_MODE //ddd
// CServerView* pView = (CServerView*)GetParent();
str.Format("ServerPatch :: [by INI]01. Transfer Ini Files and Folder!(Applied: %d server)",m_nSendedServerCount);
m_pApp->LogServer(m_nCurServerSet,str);
str.Format("ServerPatch :: [by INI]02. Send File Copy Message!(%s, %s, %s, %s)",name[0],name[1],name[2],name[3]);
m_pApp->LogServer(m_nCurServerSet,str);
#endif
CloseDialog();
}
else
{
g_pFt->CloseClientSocket();
ConnectAndStartTransfer();
}
}
void CTransferProgDlg::SetProgressMode(int mode)
{
mode;
//歸弊扼款靛 禍彬 瘤瀝..
c_ServerProg.SetBkColor(RGB(228,228,228));
c_TotalProg.SetBkColor(RGB(228,228,228));
c_FileProg.SetBkColor(RGB(228,228,228));
c_ServerProg.SetGradientColors(RGB(0,109,255),RGB(0,0,62)/*RGB(128,0,255)*/);
c_TotalProg.SetGradientColors(RGB(0,109,255),RGB(0,0,62)/*RGB(128,0,255)*/);
c_FileProg.SetGradientColors(RGB(0,109,255),RGB(0,0,62)/*RGB(128,0,255)*/);
//Progress Bar 焊歹 咯歸 煉輛
CRect rect(1,1,1,1);
c_TotalProg.SetBorders(&rect);
c_FileProg.SetBorders(&rect);
c_ServerProg.SetBorders(&rect);
//Percentage Mode 悸潑
c_FileProg.SetShowPercent(TRUE);
c_TotalProg.SetShowPercent(TRUE);
c_ServerProg.SetShowPercent(TRUE);
c_FileProg.SetRange(0,100);
}
void CTransferProgDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y));
CDialog::OnLButtonDown(nFlags, point);
}
BOOL CTransferProgDlg::ConnectAndStartTransfer()
{
//InitDialog俊輯 霉鍋擄 棄歹疙闌 罐酒客 弊 救俊 樂綽 頗老甸闌 葛滴促 Add 矯虐絆..
//頗老 傈價 膠鷗飄甫 矯難 焊磊..
POSITION pos = m_PathList.GetHeadPosition();
if(pos == NULL)
return FALSE; //List is Empty!!
CString path = m_PathList.GetAt(pos); //府膠飄狼 霉鍋擄俊 樂綽 菩膠甫 罐酒坷絆..
//ReadRoot 悸潑
g_pFt->SetReadRoot(path.GetBuffer(path.GetLength()));
//棄歹 郴俊 樂綽 頗老甸闌 Add竅絆 ini頗老 俊輯 佬絹靛赴 IP客 器飄鍋齲啊 糕滾 函薦俊 悸潑等促.
if(!AddFolder(path))
{
AfxMessageBox("Can not add folder!");
CloseDialog();
return FALSE;
}
c_TotalProg.SetRange(0, (short)m_nCurFolderFileNum); //頗老 骯薦 唱鷗郴綽 橇肺弊飯膠官狼 MAX藹 汲瀝
c_ServerProg.SetRange(0, (short)m_nDropFileCount); //醚 割俺狼 輯滾俊 頗老闌 焊塵巴牢瘤甫 悸潑
//棄歹救狼 ini 頗老俊 樂帶 林家肺 立加..
if(!g_pFt->Connect(m_szConIp, RMTOOL_CONNECT_PORT ))
{
CString str;
str.Format("Can not connect server! IP: %s",m_szConIp);
AfxMessageBox(str);
CloseDialog();
return FALSE;
}
CString str;
str.Format("(%s) Server Sending Files... (%d/%d)",m_szConIp ,m_nSendedServerCount, m_nDropFileCount);
SetDlgItemText(IDC_STATIC_SERVER,str);
m_PathList.RemoveAt(pos); //竅唱 佬絹甸看欄擱 瘤況具瘤.. 付摹 鈕貿煩 葷儈竅扁 困茄..
//促款肺靛 版肺 嘎苗林絆..
CString szTemp, szTemp2;
szTemp = m_pApp->m_szDownloadPath[ m_nCurServerSet ];
szTemp2 = szTemp.Mid(3);
PACKET_SET_DOWNLOAD_PATH packet(szTemp.GetAt(0), szTemp2.GetBuffer( szTemp2.GetLength() ));
g_pFt->Send((char*)&packet, (unsigned short)packet.GetPacketSize());
//
g_pFt->StartTransfer(); //竅唱狼 輯滾俊 措茄 頗老 傈價 Start
return TRUE;
}
void CTransferProgDlg::CloseDialog()
{
g_pFt->ClearFileQueue();
g_pFt->CloseClientSocket();
EndDialog(IDOK);
}
void CTransferProgDlg::OnOK()
{
// TODO: Add extra validation here
CloseDialog();
m_bCancel = TRUE;
//CDialog::OnOK();
}
BOOL CTransferProgDlg::IsFile(CString path)
{
CFileFind finder;
BOOL bWorking = finder.FindFile(path);
if(bWorking)
{
finder.FindNextFile();
if(!finder.IsDirectory() && !finder.IsDots()) //角青頗老 老錠
{
return TRUE;
}
finder.Close();
}
return FALSE;
}
BOOL CTransferProgDlg::TransferExeFile()
{
//g_pFt->SetReadRoot("D:\\ini");
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); //府膠飄狼 霉鍋擄俊 樂綽 菩膠甫 罐酒坷絆..
g_pFt->AddFile(path.GetBuffer( path.GetLength() ),FALSE);
m_ExeList.RemoveAt(pos);
}
//秦寸 府膠呈俊 立加茄促.
if(!g_pFt->Connect(szIP, RMTOOL_CONNECT_PORT )) //立加
{
CString str;
str.Format("Can not connect server! IP: %s",szIP);
AfxMessageBox(str);
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() ));
g_pNet->Send(m_pApp->m_nCI[ m_nCurServerSet ], (char*)&packet, packet.GetPacketSize());
// PACKET_SET_TEMP_DOWNLOAD_PATH packet('D',"ServerExec");
// g_pFt->Send((char*)&packet, packet.GetPacketSize());
g_pFt->StartTransfer();
return TRUE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -