// Admin.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "GameDBTool.h" #include "Admin.h" #include "GameDBTool.h" #include "GameDBToolDlg.h" #include ".\admin.h" // CAdmin ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CAdmin, CDialog) CAdmin::CAdmin(CWnd* pParent /*=NULL*/) : CDialog(CAdmin::IDD, pParent) , m_UserID(_T("")) , m_SIP(_T("")) , m_EIP(_T("")) { } CAdmin::~CAdmin() { } void CAdmin::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_UID, m_UserID); DDX_Control(pDX, IDC_LEVEL, m_Level); DDX_Text(pDX, IDC_S_IP, m_SIP); DDX_Text(pDX, IDC_E_IP, m_EIP); } BEGIN_MESSAGE_MAP(CAdmin, CDialog) ON_BN_CLICKED(IDC_MODIFY, OnBnClickedModify) ON_EN_CHANGE(IDC_S_IP, OnEnChangeSIp) ON_WM_CTLCOLOR() END_MESSAGE_MAP() // CAdmin ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CAdmin::OnInitDialog() { CDialog::OnInitDialog(); // TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ­ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù. CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp(); CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd; ADMIN Admin = {0,}; char Query[256] = ""; sprintf(Query, "SELECT * FROM AdminList WHERE UID='%d'", m_UID); int Rows = 0; if(!CDBSingleObject::GetInstance().Select( Query, (void **)&Admin, sizeof(ADMIN), 0, 1, &Rows)) { pDlgWnd->m_Log.LogPrint("[¿µÀÚ] ¿µÀÚ Á¤º¸ ÀбâÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } if(0 == Rows) { pDlgWnd->m_Log.LogPrint("[¿µÀÚ] ¿µÀÚ Á¤º¸ ÀбâÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } m_UserID.Format("%d", m_UID); m_Level.InsertString(0, "None"); m_Level.InsertString(1, "Admin LV1"); m_Level.InsertString(2, "Admin LV2"); m_Level.InsertString(3, "Admin LV3"); // ¿î¿µÀÚ Á¤º¸ â ¶ç¾úÀ»¶§ ÇöÀç ·¹º§ Ç¥½Ã switch(Admin.Level) { case 0: m_Level.SetCurSel(0); break; case 1: m_Level.SetCurSel(1); break; case 2: m_Level.SetCurSel(2); break; case 3: m_Level.SetCurSel(3); break; } // ¿î¿µÀÚ Á¤º¸ â ¶ç¾úÀ»¶§ ÇöÀç ¾ÆÀÌÇÇ ¼ÂÆÃ Ç¥½Ã m_SIP = Admin.IP_S; m_EIP = Admin.IP_E; UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // ¿¹¿Ü: OCX ¼Ó¼º ÆäÀÌÁö´Â FALSE¸¦ ¹ÝÈ¯ÇØ¾ß ÇÕ´Ï´Ù. } void CAdmin::OnBnClickedModify() { UpdateData(); CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp(); CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd; IN_ADDR SAddr = {0,}; IN_ADDR EAddr = {0,}; SAddr.S_un.S_addr = inet_addr(m_SIP.GetBuffer(0)); EAddr.S_un.S_addr = inet_addr(m_EIP.GetBuffer(0)); if((SAddr.S_un.S_un_b.s_b1 != EAddr.S_un.S_un_b.s_b1) || (SAddr.S_un.S_un_b.s_b2 != EAddr.S_un.S_un_b.s_b2) || (SAddr.S_un.S_un_b.s_b3 != EAddr.S_un.S_un_b.s_b3)) { MessageBox("IP ´ë¿ªÀÌ À߸ø µÇ¾ú½À´Ï´Ù."); return; } char Query[256] = ""; switch(m_Level.GetCurSel()) { case 0: // ÀÏ¹Ý { sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'", 0, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID); }break; case 1: // ¿î¿µÀÚ LV1 { sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'", 1, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID); }break; case 2: // ¿î¿µÀÚ LV2 { sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'", 2, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID); }break; case 3: // ¿î¿µÀÚ LV3 { sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'", 3, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID); }break; } int Rows = 0; if(!CDBSingleObject::GetInstance().ExecuteQuery(Query)) { pDlgWnd->m_Log.LogPrint("[¿µÀÚ] ·¹º§ º¯È¯Áß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } CAdmin::OnOK(); } void CAdmin::OnEnChangeSIp() { UpdateData(); m_EIP = m_SIP; UpdateData(FALSE); } bool CAdminDB::Initialize(void) { char Query[256] = ""; memset(&m_AdminList, 0, sizeof(unsigned long) * MaxList); sprintf(Query, "SELECT UID FROM AdminList"); if(!CDBSingleObject::GetInstance().Select( Query, (void **)m_AdminList, sizeof(DWORD), 0, MaxList, &m_AdminNum)) return false; return true; } unsigned short CAdminDB::GetAdminLevel(unsigned long UID) { for(int Count = 0; Count < m_AdminNum; ++Count) if(m_AdminList[Count] == UID) { return Level::L1; } return Level::None; } HBRUSH CAdmin::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: ¿©±â¼­ DCÀÇ Æ¯¼ºÀ» º¯°æÇÕ´Ï´Ù. HBRUSH m_hBrush; m_hBrush = CreateSolidBrush(RGB( 255, 169, 128)); switch( nCtlColor ){ case CTLCOLOR_DLG: pDC->SetBkColor(RGB( 255, 255, 255)); pDC->SetTextColor(RGB( 0, 0, 0)); return m_hBrush; break; case CTLCOLOR_STATIC: pDC->SetBkColor(RGB( 255, 169, 128)); pDC->SetTextColor(RGB( 0, 0, 0)); return m_hBrush; break; default: return hbr; break; } }