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>
184 lines
5.2 KiB
C++
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;
|
|
}
|