Files
Client/Server/ManageTool/ManageSetup/dialog/ManageSetupDlg.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

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