Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
730 lines
20 KiB
C++
730 lines
20 KiB
C++
// ManageSetupDlg.cpp : 구현 파일
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ManageSetup.h"
|
|
#include "ManageSetupDlg.h"
|
|
#include "ManageSetupClient.h"
|
|
|
|
#include "ServerToolUserManagementDlg.h"
|
|
#include "RunInfoEditDlg.h"
|
|
|
|
#include <ServerManage/ManageClientManager.h>
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
|
|
// 응용 프로그램 정보에 사용되는 CAboutDlg 대화 상자입니다.
|
|
|
|
class CAboutDlg : public CDialog
|
|
{
|
|
public:
|
|
CAboutDlg();
|
|
|
|
// 대화 상자 데이터
|
|
enum { IDD = IDD_ABOUTBOX };
|
|
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원
|
|
|
|
// 구현
|
|
protected:
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
|
|
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
|
|
{
|
|
}
|
|
|
|
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
// CManageSetupDlg 대화 상자
|
|
|
|
CManageSetupDlg::CManageSetupDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CManageSetupDlg::IDD, pParent)
|
|
, m_strNewServerIP(_T(""))
|
|
, m_strNewServerName(_T(""))
|
|
, m_strNewExePath(_T(""))
|
|
, m_strSelExePath(_T(""))
|
|
, m_strSelServerName(_T(""))
|
|
, m_strNewOption(_T(""))
|
|
, m_strSelOption(_T(""))
|
|
{
|
|
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
|
}
|
|
|
|
void CManageSetupDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
DDX_Control (pDX, IDC_MACHINE_LIST, m_ctrlMachine);
|
|
DDX_Control (pDX, IDC_EXECUTEPATH_LIST, m_ctrlExecutePath);
|
|
|
|
DDX_Text (pDX, IDC_NEWMACHINEIP_EDIT, m_strNewServerIP);
|
|
DDX_Text (pDX, IDC_NEWMACHINENAME_EDIT, m_strNewServerName);
|
|
DDX_Text (pDX, IDC_EXEPATH_EDIT, m_strNewExePath);
|
|
DDX_Text (pDX, IDC_SELEXEPATH_EDIT, m_strSelExePath);
|
|
DDX_Text (pDX, IDC_SELSERVERNAME_EDIT, m_strSelServerName);
|
|
|
|
DDX_Text(pDX, IDC_NEWOPTION_EDIT, m_strNewOption);
|
|
DDX_Text(pDX, IDC_SELOPTION_EDIT, m_strSelOption);
|
|
DDX_Control(pDX, IDC_OPTION_LIST, m_ctrlOption);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CManageSetupDlg, CDialog)
|
|
ON_WM_SYSCOMMAND()
|
|
ON_WM_PAINT()
|
|
ON_WM_QUERYDRAGICON()
|
|
//}}AFX_MSG_MAP
|
|
ON_BN_CLICKED(IDC_MACHINEADD_BTN, OnBnClickedMachineaddBtn)
|
|
ON_BN_CLICKED(IDC_MACHINEMODIFY_BTN, OnBnClickedMachinemodifyBtn)
|
|
ON_BN_CLICKED(IDC_MACHINEDEL_BTN, OnBnClickedMachinedelBtn)
|
|
ON_BN_CLICKED(IDC_ADDEXEPATH_BTN, OnBnClickedAddexepathBtn)
|
|
ON_BN_CLICKED(IDC_DELEXEPATH_BTN, OnBnClickedDelexepathBtn)
|
|
ON_BN_CLICKED(IDC_MODIFYEXEPATH_BTN, OnBnClickedModifyexepathBtn)
|
|
|
|
ON_NOTIFY(LVN_ITEMCHANGED, IDC_EXECUTEPATH_LIST, OnLvnItemchangedExecutepathList)
|
|
ON_NOTIFY(LVN_ITEMCHANGED, IDC_MACHINE_LIST, OnLvnItemchangedMachineList)
|
|
ON_COMMAND(ID_FUNCTIONS_RUNINFOEDIT, OnFunctionsRuninfoedit)
|
|
ON_COMMAND(ID_FUNCTIONS_USERMANAGEMENT, OnFunctionsUsermanagement)
|
|
|
|
ON_BN_CLICKED(IDC_ADDOPTION_BTN, OnBnClickedAddoptionBtn)
|
|
ON_BN_CLICKED(IDC_MODIFYOPTION_BTN, OnBnClickedModifyoptionBtn)
|
|
ON_BN_CLICKED(IDC_DELOPTION_BTN, OnBnClickedDeloptionBtn)
|
|
ON_NOTIFY(LVN_ITEMCHANGED, IDC_OPTION_LIST, OnLvnItemchangedOptionList)
|
|
ON_COMMAND(ID_FUNCTIONS_MANAGESETUPCLIENT, OnFunctionsManagesetupclient)
|
|
ON_COMMAND(ID_FUNCTIONS_EXIT, OnFunctionsExit)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CManageSetupDlg 메시지 처리기
|
|
|
|
BOOL CManageSetupDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// 시스템 메뉴에 "정보..." 메뉴 항목을 추가합니다.
|
|
|
|
// IDM_ABOUTBOX는 시스템 명령 범위에 있어야 합니다.
|
|
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
|
ASSERT(IDM_ABOUTBOX < 0xF000);
|
|
|
|
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
|
if (pSysMenu != NULL)
|
|
{
|
|
CString strAboutMenu;
|
|
strAboutMenu.LoadString(IDS_ABOUTBOX);
|
|
if (!strAboutMenu.IsEmpty())
|
|
{
|
|
pSysMenu->AppendMenu(MF_SEPARATOR);
|
|
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
|
}
|
|
}
|
|
|
|
// 이 대화 상자의 아이콘을 설정합니다. 응용 프로그램의 주 창이 대화 상자가 아닐 경우에는
|
|
// 프레임워크가 이 작업을 자동으로 수행합니다.
|
|
SetIcon(m_hIcon, TRUE); // 큰 아이콘을 설정합니다.
|
|
SetIcon(m_hIcon, FALSE); // 작은 아이콘을 설정합니다.
|
|
|
|
|
|
// 각종 컨트롤 초기화 및 설정
|
|
|
|
m_ctrlMachine.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB );
|
|
m_ctrlMachine.SetBkColor ( COLORREF RGB( 255, 170, 170) );
|
|
m_ctrlMachine.SetTextBkColor ( COLORREF RGB( 255, 170, 170) );
|
|
m_ctrlMachine.InsertColumn ( 0, _T("IP"), LVCFMT_LEFT, 105 );
|
|
m_ctrlMachine.InsertColumn ( 1, _T("Name"), LVCFMT_LEFT, 80 );
|
|
|
|
m_ctrlExecutePath.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB );
|
|
m_ctrlExecutePath.SetBkColor ( COLORREF RGB( 230, 243, 254) );
|
|
m_ctrlExecutePath.SetTextBkColor ( COLORREF RGB( 230, 243, 254) );
|
|
m_ctrlExecutePath.InsertColumn ( 0, _T("Index"), LVCFMT_LEFT, 55 );
|
|
m_ctrlExecutePath.InsertColumn ( 1, _T("Full Path"), LVCFMT_LEFT, 510 );
|
|
|
|
|
|
m_ctrlOption.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB );
|
|
m_ctrlOption.SetBkColor ( COLORREF RGB( 255, 255, 193) );
|
|
m_ctrlOption.SetTextBkColor ( COLORREF RGB( 255, 255, 193) );
|
|
m_ctrlOption.InsertColumn ( 0, _T("Index"), LVCFMT_LEFT, 55 );
|
|
m_ctrlOption.InsertColumn ( 1, _T("Run Option"), LVCFMT_LEFT, 510 );
|
|
|
|
ServerListSet();
|
|
ExecutePathListSet();
|
|
OptionListSet();
|
|
|
|
return TRUE; // 컨트롤에 대한 포커스를 설정하지 않을 경우 TRUE를 반환합니다.
|
|
}
|
|
|
|
void CManageSetupDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
|
{
|
|
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
|
|
{
|
|
CAboutDlg dlgAbout;
|
|
dlgAbout.DoModal();
|
|
}
|
|
else
|
|
{
|
|
CDialog::OnSysCommand(nID, lParam);
|
|
}
|
|
}
|
|
|
|
// 대화 상자에 최소화 단추를 추가할 경우 아이콘을 그리려면
|
|
// 아래 코드가 필요합니다. 문서/뷰 모델을 사용하는 MFC 응용 프로그램의 경우에는
|
|
// 프레임워크에서 이 작업을 자동으로 수행합니다.
|
|
|
|
void CManageSetupDlg::OnPaint()
|
|
{
|
|
if (IsIconic())
|
|
{
|
|
CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트
|
|
|
|
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
|
|
|
|
// 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다.
|
|
int cxIcon = GetSystemMetrics(SM_CXICON);
|
|
int cyIcon = GetSystemMetrics(SM_CYICON);
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
int x = (rect.Width() - cxIcon + 1) / 2;
|
|
int y = (rect.Height() - cyIcon + 1) / 2;
|
|
|
|
// 아이콘을 그립니다.
|
|
dc.DrawIcon(x, y, m_hIcon);
|
|
}
|
|
else
|
|
{
|
|
CDialog::OnPaint();
|
|
}
|
|
}
|
|
|
|
// 사용자가 최소화된 창을 끄는 동안에 커서가 표시되도록 시스템에서
|
|
// 이 함수를 호출합니다.
|
|
HCURSOR CManageSetupDlg::OnQueryDragIcon()
|
|
{
|
|
return static_cast<HCURSOR>(m_hIcon);
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------------
|
|
// 리스트 컨트롤 갱신
|
|
|
|
void CManageSetupDlg::ServerListSet()
|
|
{
|
|
m_ctrlMachine.DeleteAllItems();
|
|
|
|
CManageClientManager::RunTable runTable;
|
|
CManageClientManager::GetInstance().Get(CManageClientManager::SERVER_INFO, runTable);
|
|
|
|
CManageClientManager::RunTable::iterator pos = runTable.begin();
|
|
CManageClientManager::RunTable::iterator end = runTable.end();
|
|
|
|
unsigned int nIndex = 0;
|
|
in_addr addr;
|
|
|
|
for(; pos != end; ++pos, ++nIndex)
|
|
{
|
|
ServerManage::RunInfo& runInfo = pos->second;
|
|
|
|
addr.S_un.S_addr = runInfo.m_dwServerIP;
|
|
|
|
m_ctrlMachine.InsertItem(nIndex, inet_ntoa(addr));
|
|
m_ctrlMachine.SetItemText(nIndex, 1, runInfo.m_szServerName);
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::ExecutePathListSet()
|
|
{
|
|
m_ctrlExecutePath.DeleteAllItems();
|
|
|
|
CManageClientManager::RunTable runTable;
|
|
CManageClientManager::GetInstance().Get(CManageClientManager::RUN_PATH_INFO, runTable);
|
|
|
|
CManageClientManager::RunTable::iterator pos = runTable.begin();
|
|
CManageClientManager::RunTable::iterator end = runTable.end();
|
|
|
|
const int MIN_BUFFER = 64;
|
|
char szPathID[MIN_BUFFER];
|
|
unsigned int nIndex = 0;
|
|
|
|
for(; pos != end; ++pos, ++nIndex)
|
|
{
|
|
ServerManage::RunInfo& runInfo = pos->second;
|
|
|
|
_snprintf(szPathID, MIN_BUFFER - 1, "%lu", runInfo.m_dwPathID);
|
|
szPathID[MIN_BUFFER - 1] = 0;
|
|
|
|
m_ctrlExecutePath.InsertItem(nIndex, szPathID);
|
|
m_ctrlExecutePath.SetItemText(nIndex, 1, runInfo.m_szPath);
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::OptionListSet()
|
|
{
|
|
m_ctrlOption.DeleteAllItems();
|
|
|
|
CManageClientManager::RunTable runTable;
|
|
CManageClientManager::GetInstance().Get(CManageClientManager::OPTION_INFO, runTable);
|
|
|
|
CManageClientManager::RunTable::iterator pos = runTable.begin();
|
|
CManageClientManager::RunTable::iterator end = runTable.end();
|
|
|
|
const int MIN_BUFFER = 64;
|
|
char szOptionID[MIN_BUFFER];
|
|
unsigned int nIndex = 0;
|
|
|
|
for(; pos != end; ++pos, ++nIndex)
|
|
{
|
|
ServerManage::RunInfo& runInfo = pos->second;
|
|
|
|
_snprintf(szOptionID, MIN_BUFFER - 1, "%lu", runInfo.m_dwOptionID);
|
|
szOptionID[MIN_BUFFER - 1] = 0;
|
|
|
|
m_ctrlOption.InsertItem(nIndex, szOptionID);
|
|
m_ctrlOption.SetItemText(nIndex, 1, runInfo.m_szOption);
|
|
}
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// 서버 정보 추가, 수정, 삭제
|
|
|
|
void CManageSetupDlg::OnBnClickedMachineaddBtn()
|
|
{
|
|
UpdateData(true);
|
|
|
|
if( (m_strNewServerIP != "") && (m_strNewServerName != "") )
|
|
{
|
|
unsigned long dwServerID = 0;
|
|
ServerManage::RunInfo runInfo;
|
|
memset(&runInfo, 0, sizeof(ServerManage::RunInfo));
|
|
|
|
runInfo.m_dwServerIP = inet_addr(m_strNewServerIP);
|
|
|
|
_snprintf(runInfo.m_szServerName, ServerManage::RunInfo::MAX_SERVER_NAME - 1,
|
|
"%s", m_strNewServerName);
|
|
|
|
runInfo.m_szServerName[ServerManage::RunInfo::MAX_SERVER_NAME - 1] = 0;
|
|
|
|
if(CManageClientManager::GetInstance().Add(
|
|
CManageClientManager::SERVER_INFO, runInfo, dwServerID))
|
|
{
|
|
m_strNewServerIP = _T("");
|
|
m_strNewServerName = _T("");
|
|
|
|
ServerListSet();
|
|
UpdateData(false);
|
|
GetDlgItem(IDC_NEWMACHINEIP_EDIT)->SetFocus();
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Add server failed"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Empty value"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::OnBnClickedMachinemodifyBtn()
|
|
{
|
|
UpdateData(true);
|
|
|
|
// 서버 이름 수정
|
|
int nSelIndex = m_ctrlMachine.GetNextItem( -1, LVNI_SELECTED );
|
|
if(-1 != nSelIndex)
|
|
{
|
|
unsigned long dwServerIP = inet_addr(m_ctrlMachine.GetItemText(nSelIndex, 0));
|
|
|
|
if(0 != dwServerIP)
|
|
{
|
|
UpdateData(true);
|
|
|
|
unsigned long dwServerID = 0;
|
|
ServerManage::RunInfo runInfo;
|
|
memset(&runInfo, 0, sizeof(ServerManage::RunInfo));
|
|
|
|
runInfo.m_dwServerIP = dwServerIP;
|
|
|
|
_snprintf(runInfo.m_szServerName, ServerManage::RunInfo::MAX_SERVER_NAME - 1,
|
|
"%s", m_strSelServerName);
|
|
|
|
runInfo.m_szServerName[ServerManage::RunInfo::MAX_SERVER_NAME - 1] = 0;
|
|
|
|
if(CManageClientManager::GetInstance().Modify(
|
|
CManageClientManager::SERVER_INFO, runInfo))
|
|
{
|
|
ServerListSet();
|
|
return;
|
|
}
|
|
}
|
|
|
|
AfxMessageBox( _T("Add server failed"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void CManageSetupDlg::OnBnClickedMachinedelBtn()
|
|
{
|
|
int nSelIndex = m_ctrlMachine.GetNextItem( -1, LVNI_SELECTED );
|
|
if( -1 != nSelIndex )
|
|
{
|
|
unsigned long dwServerIP = inet_addr(m_ctrlMachine.GetItemText(nSelIndex, 0));
|
|
|
|
if(0 != dwServerIP)
|
|
{
|
|
if(CManageClientManager::GetInstance().Remove(
|
|
CManageClientManager::SERVER_INFO, dwServerIP, true))
|
|
{
|
|
ServerListSet();
|
|
return;
|
|
}
|
|
}
|
|
|
|
AfxMessageBox( _T("Remove machine failed"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::OnLvnItemchangedMachineList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
|
|
|
|
int nSelIndex = m_ctrlMachine.GetNextItem(-1, LVNI_SELECTED);
|
|
if( -1 != nSelIndex )
|
|
{
|
|
m_strSelServerName.SetString(m_ctrlMachine.GetItemText(nSelIndex, 1));
|
|
UpdateData(false);
|
|
}
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// 실행 경로 추가, 수정, 삭제
|
|
|
|
void CManageSetupDlg::OnBnClickedAddexepathBtn()
|
|
{
|
|
UpdateData(true);
|
|
|
|
if(m_strNewExePath != _T(""))
|
|
{
|
|
unsigned long dwPathID = 0;
|
|
ServerManage::RunInfo runInfo;
|
|
memset(&runInfo, 0, sizeof(ServerManage::RunInfo));
|
|
|
|
_snprintf(runInfo.m_szPath, ServerManage::RunInfo::MAX_PATH_LEN - 1, "%s", m_strNewExePath);
|
|
runInfo.m_szPath[ServerManage::RunInfo::MAX_PATH_LEN - 1] = 0;
|
|
|
|
if(CManageClientManager::GetInstance().Add(
|
|
CManageClientManager::RUN_PATH_INFO, runInfo, dwPathID))
|
|
{
|
|
m_strNewExePath = _T("");
|
|
ExecutePathListSet();
|
|
UpdateData(false);
|
|
GetDlgItem(IDC_EXEPATH_EDIT)->SetFocus();
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Add run path failed"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Empty value"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
|
|
}
|
|
|
|
void CManageSetupDlg::OnBnClickedModifyexepathBtn()
|
|
{
|
|
UpdateData(true);
|
|
|
|
int nSelIndex = m_ctrlExecutePath.GetNextItem( -1, LVNI_SELECTED );
|
|
|
|
if( -1 != nSelIndex )
|
|
{
|
|
unsigned long dwPathID = 0;
|
|
ServerManage::RunInfo runInfo;
|
|
memset(&runInfo, 0, sizeof(ServerManage::RunInfo));
|
|
|
|
runInfo.m_dwPathID = atol(m_ctrlExecutePath.GetItemText(nSelIndex, 0));
|
|
_snprintf(runInfo.m_szPath, ServerManage::RunInfo::MAX_PATH_LEN - 1, "%s", m_strSelExePath);
|
|
runInfo.m_szPath[ServerManage::RunInfo::MAX_PATH_LEN - 1] = 0;
|
|
|
|
if(CManageClientManager::GetInstance().Modify(
|
|
CManageClientManager::RUN_PATH_INFO, runInfo))
|
|
{
|
|
ExecutePathListSet();
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Modify run path failed"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::OnBnClickedDelexepathBtn()
|
|
{
|
|
int nSelIndex = m_ctrlExecutePath.GetNextItem( -1, LVNI_SELECTED );
|
|
|
|
if( -1 != nSelIndex )
|
|
{
|
|
if(CManageClientManager::GetInstance().Remove(
|
|
CManageClientManager::RUN_PATH_INFO,
|
|
atol(m_ctrlExecutePath.GetItemText(nSelIndex, 0)), true))
|
|
{
|
|
ExecutePathListSet();
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Remove run path failed"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::OnLvnItemchangedExecutepathList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
|
|
|
|
int nSelIndex = m_ctrlExecutePath.GetNextItem(-1, LVNI_SELECTED);
|
|
if( -1 != nSelIndex )
|
|
{
|
|
m_strSelExePath = m_ctrlExecutePath.GetItemText(nSelIndex, 1);
|
|
UpdateData(false);
|
|
}
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
// -------------------------------------------------------------------------
|
|
// 옵션 관련 처리 함수들
|
|
|
|
void CManageSetupDlg::OnBnClickedAddoptionBtn()
|
|
{
|
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
|
UpdateData(true);
|
|
|
|
if(m_strNewOption != _T(""))
|
|
{
|
|
unsigned long dwOptionID = 0;
|
|
ServerManage::RunInfo runInfo;
|
|
memset(&runInfo, 0, sizeof(ServerManage::RunInfo));
|
|
|
|
_snprintf(runInfo.m_szOption, ServerManage::RunInfo::MAX_PATH_LEN - 1, "%s", m_strNewOption);
|
|
runInfo.m_szOption[ServerManage::RunInfo::MAX_PATH_LEN - 1] = 0;
|
|
|
|
if(CManageClientManager::GetInstance().Add(
|
|
CManageClientManager::OPTION_INFO, runInfo, dwOptionID))
|
|
{
|
|
m_strNewOption = _T("");
|
|
OptionListSet();
|
|
UpdateData(false);
|
|
GetDlgItem(IDC_NEWOPTION_EDIT)->SetFocus();
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Add option failed"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Empty value"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::OnBnClickedModifyoptionBtn()
|
|
{
|
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
|
UpdateData(true);
|
|
|
|
int nSelIndex = m_ctrlOption.GetNextItem( -1, LVNI_SELECTED );
|
|
|
|
if( -1 != nSelIndex )
|
|
{
|
|
ServerManage::RunInfo runInfo;
|
|
memset(&runInfo, 0, sizeof(ServerManage::RunInfo));
|
|
|
|
runInfo.m_dwOptionID = atol(m_ctrlOption.GetItemText(nSelIndex, 0));
|
|
_snprintf(runInfo.m_szOption, ServerManage::RunInfo::MAX_PATH_LEN - 1, "%s", m_strSelOption);
|
|
runInfo.m_szOption[ServerManage::RunInfo::MAX_PATH_LEN - 1] = 0;
|
|
|
|
if(CManageClientManager::GetInstance().Modify(
|
|
CManageClientManager::OPTION_INFO, runInfo))
|
|
{
|
|
OptionListSet();
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Modify option failed"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::OnBnClickedDeloptionBtn()
|
|
{
|
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
|
int nSelIndex = m_ctrlOption.GetNextItem( -1, LVNI_SELECTED );
|
|
|
|
if( -1 != nSelIndex )
|
|
{
|
|
if(CManageClientManager::GetInstance().Remove(
|
|
CManageClientManager::OPTION_INFO,
|
|
atol(m_ctrlOption.GetItemText(nSelIndex, 0)), true))
|
|
{
|
|
OptionListSet();
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( _T("Remove option failed"), MB_OK | MB_ICONINFORMATION );
|
|
}
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::OnLvnItemchangedOptionList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
|
|
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
|
|
|
|
int nSelIndex = m_ctrlOption.GetNextItem(-1, LVNI_SELECTED);
|
|
if( -1 != nSelIndex )
|
|
{
|
|
m_strSelOption = m_ctrlOption.GetItemText(nSelIndex, 1);
|
|
UpdateData(false);
|
|
}
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
BOOL CManageSetupDlg::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
// Enter키 눌렀을때
|
|
if( ( pMsg->message == WM_KEYDOWN ) && ( pMsg->wParam == VK_RETURN ) )
|
|
{
|
|
UpdateData( true );
|
|
|
|
if( ( GetFocus() == GetDlgItem(IDC_NEWMACHINENAME_EDIT) )
|
|
&& (m_strNewServerIP != "") && (m_strNewServerName != "") )
|
|
OnBnClickedMachineaddBtn();
|
|
else if( ( GetFocus() == GetDlgItem(IDC_EXEPATH_EDIT) ) && (m_strNewExePath != _T("")) )
|
|
OnBnClickedAddexepathBtn();
|
|
else if( ( GetFocus() == GetDlgItem(IDC_NEWEXEINFO_EDIT) ) && (m_strNewOption != _T("")) )
|
|
OnBnClickedAddoptionBtn();
|
|
else if( GetFocus() == GetDlgItem(IDC_SELSERVERNAME_EDIT) )
|
|
OnBnClickedMachinemodifyBtn();
|
|
else if( GetFocus() == GetDlgItem(IDC_SELEXEPATH_EDIT) )
|
|
OnBnClickedModifyexepathBtn();
|
|
else if( GetFocus() == GetDlgItem(IDC_SELOPTION_EDIT) )
|
|
OnBnClickedModifyoptionBtn();
|
|
}
|
|
|
|
return CDialog::PreTranslateMessage(pMsg);
|
|
}
|
|
|
|
|
|
|
|
void CManageSetupDlg::GetMachineList(CComboBox& cbCombo)
|
|
{
|
|
int nMaxItemCount = m_ctrlMachine.GetItemCount();
|
|
|
|
CString szString;
|
|
|
|
TCHAR szIP[MAX_PATH];
|
|
TCHAR szServerName[MAX_PATH];
|
|
|
|
for(int nItemCount = 0; nItemCount < nMaxItemCount; ++nItemCount)
|
|
{
|
|
m_ctrlMachine.GetItemText(nItemCount, 0, szIP, MAX_PATH);
|
|
m_ctrlMachine.GetItemText(nItemCount, 1, szServerName, MAX_PATH);
|
|
|
|
szString.Format("%s : %s", szIP, szServerName);
|
|
cbCombo.InsertString(nItemCount, szString);
|
|
cbCombo.SetItemData(nItemCount, inet_addr(szIP));
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::GetPathList(CComboBox& cbCombo)
|
|
{
|
|
int nMaxItemCount = m_ctrlExecutePath.GetItemCount();
|
|
|
|
CString szString;
|
|
|
|
TCHAR szID[MAX_PATH];
|
|
TCHAR szValue[MAX_PATH];
|
|
|
|
for(int nItemCount = 0; nItemCount < nMaxItemCount; ++nItemCount)
|
|
{
|
|
m_ctrlExecutePath.GetItemText(nItemCount, 0, szID, MAX_PATH);
|
|
m_ctrlExecutePath.GetItemText(nItemCount, 1, szValue, MAX_PATH);
|
|
|
|
szString.Format("%s", szValue);
|
|
cbCombo.InsertString(nItemCount, szString);
|
|
cbCombo.SetItemData(nItemCount, atol(szID));
|
|
}
|
|
}
|
|
|
|
void CManageSetupDlg::GetOptionList(CComboBox& cbCombo)
|
|
{
|
|
int nMaxItemCount = m_ctrlOption.GetItemCount();
|
|
|
|
CString szString;
|
|
|
|
TCHAR szID[MAX_PATH];
|
|
TCHAR szValue[MAX_PATH];
|
|
|
|
for(int nItemCount = 0; nItemCount < nMaxItemCount; ++nItemCount)
|
|
{
|
|
m_ctrlOption.GetItemText(nItemCount, 0, szID, MAX_PATH);
|
|
m_ctrlOption.GetItemText(nItemCount, 1, szValue, MAX_PATH);
|
|
|
|
szString.Format("%s", szValue);
|
|
cbCombo.InsertString(nItemCount, szString);
|
|
cbCombo.SetItemData(nItemCount, atol(szID));
|
|
}
|
|
}
|
|
|
|
|
|
void CManageSetupDlg::OnFunctionsRuninfoedit()
|
|
{
|
|
CRunInfoEditDlg dlg;
|
|
dlg.DoModal();
|
|
}
|
|
|
|
void CManageSetupDlg::OnFunctionsUsermanagement()
|
|
{
|
|
CServerToolUserManagementDlg dlg;
|
|
dlg.DoModal();
|
|
}
|
|
|
|
void CManageSetupDlg::OnOK()
|
|
{
|
|
//CDialog::OnOK();
|
|
}
|
|
|
|
|
|
void CManageSetupDlg::OnFunctionsManagesetupclient()
|
|
{
|
|
// TODO: 여기에 명령 처리기 코드를 추가합니다.
|
|
CManageSetupClient dlg;
|
|
dlg.DoModal();
|
|
}
|
|
|
|
void CManageSetupDlg::OnFunctionsExit()
|
|
{
|
|
// TODO: 여기에 명령 처리기 코드를 추가합니다.
|
|
PostQuitMessage(0);
|
|
}
|