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>
279 lines
8.3 KiB
C++
279 lines
8.3 KiB
C++
// RunInfoEditDlg.cpp : 구현 파일입니다.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ManageSetup.h"
|
|
#include "RuninfoEditDlg.h"
|
|
#include "ManageSetupDlg.h"
|
|
|
|
#include <ServerManage/ManageClientManager.h>
|
|
|
|
// CRunInfoEditDlg 대화 상자입니다.
|
|
|
|
IMPLEMENT_DYNAMIC(CRunInfoEditDlg, CDialog)
|
|
CRunInfoEditDlg::CRunInfoEditDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CRunInfoEditDlg::IDD, pParent)
|
|
, m_strSelRunInfoIndex(_T(""))
|
|
, m_strSelRunInfoIP(_T(""))
|
|
, m_strSelRunInfoPath(_T(""))
|
|
, m_strSelRunInfoOPT(_T(""))
|
|
{
|
|
}
|
|
|
|
CRunInfoEditDlg::~CRunInfoEditDlg()
|
|
{
|
|
}
|
|
|
|
void CRunInfoEditDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
DDX_Control(pDX, IDC_SERVERIP_CB, m_ctrlServerIPCb);
|
|
DDX_Control(pDX, IDC_EXEPATH_CB, m_ctrlExePathCb);
|
|
DDX_Control(pDX, IDC_EXEOPT_CB, m_ctrlExeOptCb);
|
|
DDX_Control(pDX, IDC_RUNINFO_LIST, m_ctrlRunInfoListCtrl);
|
|
|
|
DDX_Text(pDX, IDC_SELRUNINFOINDEX_EDIT, m_strSelRunInfoIndex);
|
|
DDX_Text(pDX, IDC_SELRUNINFOIP_EDIT, m_strSelRunInfoIP);
|
|
DDX_Text(pDX, IDC_SELRUNINFOPATH_EDIT, m_strSelRunInfoPath);
|
|
DDX_Text(pDX, IDC_SELRUNINFOOPT_EDIT, m_strSelRunInfoOPT);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CRunInfoEditDlg, CDialog)
|
|
ON_BN_CLICKED(IDC_BIND_BTN, OnBnClickedBindBtn)
|
|
ON_NOTIFY(LVN_ITEMCHANGED, IDC_RUNINFO_LIST, OnLvnItemchangedRuninfoList)
|
|
ON_CBN_SELCHANGE(IDC_SERVERIP_CB, OnCbnSelchangeServeripCb)
|
|
ON_CBN_SELCHANGE(IDC_EXEPATH_CB, OnCbnSelchangeExepathCb)
|
|
ON_CBN_SELCHANGE(IDC_EXEOPT_CB, OnCbnSelchangeExeoptCb)
|
|
ON_BN_CLICKED(IDC_MODIFYRUNINFO_BTN, OnBnClickedModifyruninfoBtn)
|
|
ON_BN_CLICKED(IDC_DELETERUNINFO_BTN, OnBnClickedDeleteruninfoBtn)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CRunInfoEditDlg 메시지 처리기입니다.
|
|
|
|
BOOL CRunInfoEditDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
// 메인 다이얼로그 핸들 얻어오기
|
|
CManageSetupDlg* lpMainDlg = static_cast<CManageSetupDlg*>(this->GetParent());
|
|
|
|
lpMainDlg->GetMachineList(m_ctrlServerIPCb);
|
|
lpMainDlg->GetPathList(m_ctrlExePathCb);
|
|
lpMainDlg->GetOptionList(m_ctrlExeOptCb);
|
|
|
|
m_ctrlServerIPCb.SetCurSel(0);
|
|
m_ctrlExePathCb.SetCurSel(0);
|
|
m_ctrlExeOptCb.SetCurSel(0);
|
|
|
|
m_ctrlRunInfoListCtrl.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB );
|
|
//m_ctrlRunInfoListCtrl.SetBkColor ( COLORREF RGB( 255, 190, 125) );
|
|
//m_ctrlRunInfoListCtrl.SetTextBkColor ( COLORREF RGB( 255, 190, 125) );
|
|
m_ctrlRunInfoListCtrl.InsertColumn ( 0, _T("RunID"), LVCFMT_LEFT, 50 );
|
|
m_ctrlRunInfoListCtrl.InsertColumn ( 1, _T("IP"), LVCFMT_LEFT, 105 );
|
|
m_ctrlRunInfoListCtrl.InsertColumn ( 2, _T("Name"), LVCFMT_LEFT, 100 );
|
|
m_ctrlRunInfoListCtrl.InsertColumn ( 3, _T("Path"), LVCFMT_LEFT, 400 );
|
|
m_ctrlRunInfoListCtrl.InsertColumn ( 4, _T("Option"), LVCFMT_LEFT, 140 );
|
|
|
|
RunInfoListSet();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
|
|
}
|
|
|
|
|
|
class CRefreshRunInfoList
|
|
{
|
|
public:
|
|
|
|
CRefreshRunInfoList(CListCtrl& ctrlList) : m_ctrlList(ctrlList) { }
|
|
|
|
bool operator () (const ServerManage::RunInfo& runInfo)
|
|
{
|
|
const int MIN_BUFFER = 32;
|
|
char szRunID[MIN_BUFFER];
|
|
|
|
int nPosition = m_ctrlList.GetItemCount();
|
|
|
|
in_addr addr;
|
|
addr.S_un.S_addr = runInfo.m_dwServerIP;
|
|
|
|
_snprintf(szRunID, MIN_BUFFER - 1, "%d", runInfo.m_dwRunID);
|
|
szRunID[MIN_BUFFER - 1] = 0;
|
|
|
|
m_ctrlList.InsertItem (nPosition, "");
|
|
m_ctrlList.SetItemText (nPosition, 0, szRunID);
|
|
m_ctrlList.SetItemText (nPosition, 1, inet_ntoa(addr));
|
|
m_ctrlList.SetItemText (nPosition, 2, runInfo.m_szServerName);
|
|
m_ctrlList.SetItemText (nPosition, 3, runInfo.m_szPath);
|
|
m_ctrlList.SetItemText (nPosition, 4, runInfo.m_szOption);
|
|
|
|
m_ctrlList.SetItemData(nPosition, runInfo.m_dwRunID);
|
|
|
|
return true;
|
|
}
|
|
|
|
private:
|
|
CListCtrl& m_ctrlList;
|
|
};
|
|
|
|
|
|
void CRunInfoEditDlg::RunInfoListSet()
|
|
{
|
|
// RunInfo 리스트 컨트롤 갱신
|
|
m_ctrlRunInfoListCtrl.DeleteAllItems();
|
|
CManageClientManager::GetInstance().EnumRunInfo(CRefreshRunInfoList(m_ctrlRunInfoListCtrl));
|
|
}
|
|
|
|
// ( RunInfo 추가, 수정, 삭제 )____________________________________________________________________________
|
|
|
|
void CRunInfoEditDlg::OnBnClickedBindBtn()
|
|
{
|
|
// RunInfo 추가
|
|
|
|
if((-1 != m_ctrlServerIPCb.GetCurSel())
|
|
&& (-1 != m_ctrlExePathCb.GetCurSel())
|
|
&& (-1 != m_ctrlExeOptCb.GetCurSel()))
|
|
{
|
|
unsigned long dwRunID = 0;
|
|
|
|
ServerManage::RunInfo runInfo;
|
|
memset(&runInfo, 0, sizeof(ServerManage::RunInfo));
|
|
|
|
runInfo.m_dwPathID = static_cast<unsigned long>(m_ctrlExePathCb.GetItemData(m_ctrlExePathCb.GetCurSel()));
|
|
runInfo.m_dwOptionID = static_cast<unsigned long>(m_ctrlExeOptCb.GetItemData(m_ctrlExeOptCb.GetCurSel()));
|
|
runInfo.m_dwServerIP = static_cast<unsigned long>(m_ctrlServerIPCb.GetItemData(m_ctrlServerIPCb.GetCurSel()));
|
|
|
|
if(CManageClientManager::GetInstance().Add(
|
|
CManageClientManager::RUN_INFO, runInfo, dwRunID))
|
|
{
|
|
RunInfoListSet();
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox("Add run info failed");
|
|
}
|
|
}
|
|
}
|
|
|
|
void CRunInfoEditDlg::OnBnClickedModifyruninfoBtn()
|
|
{
|
|
// RunInfo 수정
|
|
|
|
UpdateData( true );
|
|
|
|
int nSelIndex = m_ctrlRunInfoListCtrl.GetNextItem( -1, LVNI_SELECTED );
|
|
|
|
if( -1 != nSelIndex )
|
|
{
|
|
ServerManage::RunInfo runInfo;
|
|
memset(&runInfo, 0, sizeof(ServerManage::RunInfo));
|
|
|
|
runInfo.m_dwServerIP = static_cast<unsigned long>(m_ctrlServerIPCb.GetItemData(m_ctrlServerIPCb.GetCurSel()));
|
|
runInfo.m_dwPathID = static_cast<unsigned long>(m_ctrlExePathCb.GetItemData(m_ctrlExePathCb.GetCurSel()));
|
|
runInfo.m_dwOptionID = static_cast<unsigned long>(m_ctrlExeOptCb.GetItemData(m_ctrlExeOptCb.GetCurSel()));
|
|
|
|
if( CManageClientManager::GetInstance().Modify( CManageClientManager::RUN_INFO, runInfo) )
|
|
{
|
|
RunInfoListSet();
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( "Modify run info failed" );
|
|
}
|
|
}
|
|
}
|
|
|
|
void CRunInfoEditDlg::OnBnClickedDeleteruninfoBtn()
|
|
{
|
|
// RunInfo 삭제
|
|
|
|
UpdateData( true );
|
|
|
|
int nSelIndex = m_ctrlRunInfoListCtrl.GetNextItem( -1, LVNI_SELECTED );
|
|
|
|
if( -1 != nSelIndex )
|
|
{
|
|
if(CManageClientManager::GetInstance().Remove(CManageClientManager::RUN_INFO,
|
|
static_cast<unsigned long>(m_ctrlRunInfoListCtrl.GetItemData(nSelIndex)), true))
|
|
{
|
|
m_strSelRunInfoIndex = _T("");
|
|
m_strSelRunInfoIP = _T("");
|
|
m_strSelRunInfoPath = _T("");
|
|
m_strSelRunInfoOPT = _T("");
|
|
|
|
RunInfoListSet();
|
|
|
|
UpdateData(false);
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox( "Remove run info failed" );
|
|
}
|
|
}
|
|
}
|
|
|
|
//_________________________________________________________________________________________________________
|
|
|
|
|
|
void CRunInfoEditDlg::OnLvnItemchangedRuninfoList(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
|
|
|
|
CString strSelRunInfoName;
|
|
|
|
int nSelIndex = m_ctrlRunInfoListCtrl.GetNextItem(-1, LVNI_SELECTED);
|
|
if( -1 != nSelIndex )
|
|
{
|
|
m_strSelRunInfoIndex = m_ctrlRunInfoListCtrl.GetItemText( nSelIndex, 0 );
|
|
m_strSelRunInfoIP = m_ctrlRunInfoListCtrl.GetItemText( nSelIndex, 1 );
|
|
strSelRunInfoName = m_ctrlRunInfoListCtrl.GetItemText( nSelIndex, 2 );
|
|
m_strSelRunInfoPath = m_ctrlRunInfoListCtrl.GetItemText( nSelIndex, 3 );
|
|
m_strSelRunInfoOPT = m_ctrlRunInfoListCtrl.GetItemText( nSelIndex, 4 );
|
|
}
|
|
|
|
CString strFindingKey;
|
|
strFindingKey.Format( "%s : %s", m_strSelRunInfoIP, strSelRunInfoName );
|
|
|
|
m_ctrlServerIPCb.SetCurSel ( m_ctrlServerIPCb.FindString ( 0, strFindingKey ) );
|
|
m_ctrlExePathCb.SetCurSel ( m_ctrlExePathCb.FindString ( 0, m_strSelRunInfoPath ) );
|
|
m_ctrlExeOptCb.SetCurSel ( m_ctrlExeOptCb.FindString ( 0, m_strSelRunInfoOPT ) );
|
|
|
|
UpdateData(false);
|
|
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CRunInfoEditDlg::OnCbnSelchangeServeripCb()
|
|
{
|
|
if( m_strSelRunInfoIndex != "" )
|
|
{
|
|
m_ctrlServerIPCb.GetLBText(m_ctrlServerIPCb.GetCurSel(), m_strSelRunInfoIP);
|
|
UpdateData(false);
|
|
}
|
|
}
|
|
|
|
void CRunInfoEditDlg::OnCbnSelchangeExepathCb()
|
|
{
|
|
if( m_strSelRunInfoIndex != "" )
|
|
{
|
|
m_ctrlExePathCb.GetLBText(m_ctrlExePathCb.GetCurSel(), m_strSelRunInfoPath);
|
|
UpdateData(false);
|
|
}
|
|
}
|
|
|
|
void CRunInfoEditDlg::OnCbnSelchangeExeoptCb()
|
|
{
|
|
if( m_strSelRunInfoIndex != "" )
|
|
{
|
|
m_ctrlExeOptCb.GetLBText(m_ctrlExeOptCb.GetCurSel(), m_strSelRunInfoOPT);
|
|
UpdateData(false);
|
|
}
|
|
}
|
|
|
|
void CRunInfoEditDlg::OnOK()
|
|
{
|
|
// CDialog::OnOK();
|
|
} |