Files
Client/Server/ToolProject/SeverSetupDlg/DBSetting.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

184 lines
5.2 KiB
C++

// DBSetting.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "SeverSetupDlg.h"
#include "DBSetting.h"
#include ".\dbsetting.h"
// CDBSetting 대화 상자입니다.
IMPLEMENT_DYNAMIC(CDBSetting, CDialog)
CDBSetting::CDBSetting(const TCHAR* szWindowTitle,
const DBSetting& dbSetting,
CWnd* pParent)
: CDialog(CDBSetting::IDD, pParent)
, m_szWindowTitle(szWindowTitle)
, m_szDBAddrLabel(_T(""))
, m_DBSetting(dbSetting)
, m_szDBNameLabel(_T(""))
{
}
CDBSetting::~CDBSetting()
{
}
void CDBSetting::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_DB_TYPE, m_cbDBType);
DDX_Control(pDX, IDC_DB_NONE, m_edDBInfo[DBSetting::DB_TYPE]);
DDX_Control(pDX, IDC_DB_ADDR, m_edDBInfo[DBSetting::DB_ADDR]);
DDX_Control(pDX, IDC_DB_NAME, m_edDBInfo[DBSetting::DB_NAME]);
DDX_Control(pDX, IDC_DB_USER, m_edDBInfo[DBSetting::DB_USER]);
DDX_Control(pDX, IDC_DB_PASS, m_edDBInfo[DBSetting::DB_PASS]);
DDX_Text(pDX, IDC_DB_ADDR_LABEL, m_szDBAddrLabel);
DDX_Text(pDX, IDC_DB_NAME_LABLE, m_szDBNameLabel);
}
BEGIN_MESSAGE_MAP(CDBSetting, CDialog)
ON_CBN_SELCHANGE(IDC_DB_TYPE, OnCbnSelchangeDbType)
END_MESSAGE_MAP()
// CDBSetting 메시지 처리기입니다.
BOOL CDBSetting::OnInitDialog()
{
CDialog::OnInitDialog();
SetWindowText(m_szWindowTitle);
for (int nIndex = 0; nIndex < DBSetting::MAX_DBDATA; ++nIndex)
{
// 다른 데이터들을 전부 세팅한다.
m_edDBInfo[nIndex].SetWindowText(m_DBSetting.m_szDBData[nIndex]);
}
m_cbDBType.InsertString(0, _T("MSSQL"));
m_cbDBType.InsertString(1, _T("ODBC"));
m_cbDBType.InsertString(2, _T("ORACLE"));
CString& szDBType = m_DBSetting.m_szDBData[DBSetting::DB_TYPE];
szDBType.MakeUpper();
int nDBTypeIndex = 0;
if (0 == szDBType.Compare(_T("MSSQL"))) { nDBTypeIndex = 0; }
else if (0 == szDBType.Compare(_T("ODBC"))) { nDBTypeIndex = 1; }
else if (0 == szDBType.Compare(_T("ORACLE"))) { nDBTypeIndex = 2; }
m_cbDBType.SetCurSel(nDBTypeIndex);
OnCbnSelchangeDbType();
return TRUE; // return TRUE unless you set the focus to a control
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
}
void CDBSetting::OnOK()
{
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
UpdateData(FALSE);
for (int nIndex = 0; nIndex < DBSetting::MAX_DBDATA; ++nIndex)
{
// 다른 데이터들을 전부 얻어온다.
m_edDBInfo[nIndex].GetWindowText(m_DBSetting.m_szDBData[nIndex]);
}
int nCurSel = m_cbDBType.GetCurSel();
if (nCurSel < 0) { nCurSel = 0; }
m_cbDBType.GetLBText(nCurSel, m_DBSetting.m_szDBData[DBSetting::DB_TYPE]);
const CString& DBType = m_DBSetting.m_szDBData[DBSetting::DB_TYPE];
if (0 != DBType.Compare(_T("MSSQL")))
{
m_DBSetting.m_szDBData[DBSetting::DB_NAME] = _T("NULL");
}
CDialog::OnOK();
}
void CDBSetting::OnCbnSelchangeDbType()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CString DBType;
m_cbDBType.GetLBText(m_cbDBType.GetCurSel(), DBType);
if (0 == DBType.Compare("MSSQL"))
{
m_edDBInfo[DBSetting::DB_NAME].EnableWindow(TRUE);
m_szDBAddrLabel.SetString(_T("DB Address"));
m_szDBNameLabel.SetString(_T("DB Name"));
}
else
{
m_edDBInfo[DBSetting::DB_NAME].EnableWindow(FALSE);
m_szDBAddrLabel.SetString(_T("DB DataSourceName"));
m_szDBNameLabel.SetString(_T(""));
}
UpdateData(FALSE);
}
void CDBSetting::CreateDBInfoString(const DBSetting& dbSetting, CString& szDBInfo)
{
const CString& DBType = dbSetting.m_szDBData[DBSetting::DB_TYPE];
if (0 == DBType.Compare(_T("MSSQL")))
{
szDBInfo.AppendFormat(
_T("- DB Type : %s\r\n")
_T("- DB Addr : %s\r\n")
_T("- DB Name : %s\r\n")
_T("- DB User : %s\r\n")
_T("- DB Pass : "),
dbSetting.m_szDBData[DBSetting::DB_TYPE],
dbSetting.m_szDBData[DBSetting::DB_ADDR],
dbSetting.m_szDBData[DBSetting::DB_NAME],
dbSetting.m_szDBData[DBSetting::DB_USER]);
}
else
{
szDBInfo.AppendFormat(
_T("- DB Type : %s\r\n")
_T("- DB DataSource : %s\r\n")
_T("- DB User : %s\r\n")
_T("- DB Pass : "),
dbSetting.m_szDBData[DBSetting::DB_TYPE],
dbSetting.m_szDBData[DBSetting::DB_ADDR],
dbSetting.m_szDBData[DBSetting::DB_USER]);
}
int nLength = dbSetting.m_szDBData[DBSetting::DB_PASS].GetLength();
while (0 < --nLength) { szDBInfo.Append("*"); }
}
bool CDBSetting::CreateDBSettingDlg(const TCHAR* szWindowTitle,
const TCHAR* szDBInfoFooter,
DBSetting& dbSetting, CString& szDBInfo)
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CDBSetting DBSettingDlg(szWindowTitle, dbSetting);
if (IDOK == DBSettingDlg.DoModal())
{
dbSetting = DBSettingDlg.GetDBSetting();
szDBInfo.SetString(szDBInfoFooter);
CDBSetting::CreateDBInfoString(dbSetting, szDBInfo);
return true;
}
return false;
}