DragonNest/Server/ServiceManagerEx/PreparePatchDlg.cpp

125 lines
2.4 KiB
C++
Raw Permalink Normal View History

// PatchDlg.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//
#include "stdafx.h"
#include "ServiceManagerEx.h"
#include "PreparePatchDlg.h"
#include "ServiceManager.h"
extern CServiceManager* g_pServiceManager;
extern TServiceManagerConfig g_Config;
IMPLEMENT_DYNAMIC(CPreparePatchDlg, CDialog)
CPreparePatchDlg::CPreparePatchDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPreparePatchDlg::IDD, pParent)
{
}
CPreparePatchDlg::~CPreparePatchDlg()
{
}
BEGIN_MESSAGE_MAP(CPreparePatchDlg, CDialog)
ON_BN_CLICKED(IDOK, &CPreparePatchDlg::OnBnClickedOk)
ON_LBN_DBLCLK(IDC_LIST_PREPARE_PATCH_LIST, &CPreparePatchDlg::OnLbnDblclkListPatchList)
END_MESSAGE_MAP()
BOOL CPreparePatchDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: <20><><EFBFBD><20>߰<EFBFBD> <20>ʱ<EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
InitPatchList();
return TRUE; // return TRUE unless you set the focus to a control
// <20><><EFBFBD><EFBFBD>: OCX <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FALSE<53><45> <20><>ȯ<EFBFBD>ؾ<EFBFBD> <20>մϴ<D5B4>.
}
void CPreparePatchDlg::OnBnClickedOk()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
if (!PatchURL())
return;
OnOK();
}
void CPreparePatchDlg::OnLbnDblclkListPatchList()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
if (!PatchURL())
return;
OnOK();
}
void CPreparePatchDlg::InitPatchList()
{
WIN32_FIND_DATA wfd;
HANDLE handle;
wchar_t dir[MAX_PATH];
::wsprintf(dir, L"%s\\*.*", g_Config.wszPatchDir);
handle = ::FindFirstFile(dir, &wfd);
if (handle == INVALID_HANDLE_VALUE)
{
wchar_t msg[256];
::wsprintf(msg, L"%s is not found.", g_Config.wszPatchDir);
AfxMessageBox(msg, MB_ICONERROR);
OnCancel();
return;
}
CListBox* pList = (CListBox*)GetDlgItem(IDC_LIST_PREPARE_PATCH_LIST);
ASSERT(pList);
do
{
if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
if (lstrlen(wfd.cFileName) > 2)
{
pList->AddString(wfd.cFileName);
}
}
}
while (::FindNextFile(handle, &wfd));
::FindClose(handle);
}
bool CPreparePatchDlg::PatchURL()
{
CListBox* pList = (CListBox*)GetDlgItem(IDC_LIST_PREPARE_PATCH_LIST);
ASSERT(pList);
int sel = pList->GetCurSel();
if (sel < 0)
{
AfxMessageBox(L"Please select patch folder", MB_ICONASTERISK);
return false;
}
CString src;
pList->GetText(sel, src);
char url[256];
::WideCharToMultiByte(CP_ACP, 0, src.GetBuffer(), src.GetLength() + 1, url, 256, NULL, NULL);
char cmd[256];
::sprintf_s(cmd, "patchurl|%s", url);
try
{
g_pServiceManager->ParseCommand(cmd);
}
catch (...)
{
::AfxMessageBox(L"PatchURL failed.");
return false;
}
return true;
}