Files
Client/Server/ManageTool/ManageSetup/dialog/RunInfoEditDlg.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
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>
2025-11-29 20:17:20 +09:00

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();
}