// CharSkill.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "GameDBTool.h" #include "CharSkill.h" #include "GameDBTool.h" #include "GameDBToolDlg.h" #include #include ".\charskill.h" // CCharSkill ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CCharSkill, CDialog) CCharSkill::CCharSkill(CWnd* pParent /*=NULL*/) : CDialog(CCharSkill::IDD, pParent), m_CID(0) , m_Slot(_T("")) , m_Total(_T("")) , m_SkillID(_T("")) { memset(&m_Skill, 0, sizeof(SKILL)); } CCharSkill::~CCharSkill() { } void CCharSkill::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_SLOT, m_Slot); DDX_Text(pDX, IDC_NUM, m_Total); DDX_Control(pDX, IDC_SKILL_LIST, m_SkillList); DDX_Text(pDX, IDC_SKILL, m_SkillID); } BOOL CCharSkill::OnInitDialog() { CDialog::OnInitDialog(); m_SkillList.SetColumn(); CCharSkill::OnBnClickedLoad(); return TRUE; } BEGIN_MESSAGE_MAP(CCharSkill, CDialog) ON_BN_CLICKED(IDC_RESET, OnBnClickedReset) ON_BN_CLICKED(IDC_LOAD, OnBnClickedLoad) ON_BN_CLICKED(IDC_UPDATE, OnBnClickedUpdate) ON_NOTIFY(LVN_KEYDOWN, IDC_SKILL_LIST, OnLvnKeydownSkillList) ON_BN_CLICKED(IDC_ADD, OnBnClickedAdd) ON_WM_CTLCOLOR() END_MESSAGE_MAP() void CCharSkill::OnBnClickedReset() { m_SkillList.DeleteAllItems(); } void CCharSkill::OnBnClickedLoad() { CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp(); CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd; if(!DBComponent::GameDB::GetCharSkill(CDBSingleObject::GetInstance(), m_CID, &m_Skill)) { pDlgWnd->m_Log.LogPrint("[½ºÅ³] ij¸¯ÅÍ ½ºÅ³ ÀбâÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } m_Slot.Format("%d", m_Skill.wSlotNum); m_Total.Format("%d", m_Skill.wSkillNum); m_SkillList.AddSkillRows(&m_Skill); UpdateData(FALSE); } void CCharSkill::OnBnClickedUpdate() { CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp(); CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd; m_SkillList.GetSkillRows(&m_Skill); m_Slot.Format("%d", m_Skill.wSlotNum); m_Total.Format("%d", m_Skill.wSkillNum); if(!DBComponent::GameDB::UpdateCharSkill(CDBSingleObject::GetInstance(), m_CID, &m_Skill)) { pDlgWnd->m_Log.LogPrint("[½ºÅ³] ij¸¯ÅÍ ½ºÅ³ ¾²±âÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } else { pDlgWnd->m_Log.LogPrint("[½ºÅ³] ij¸¯ÅÍ ½ºÅ³ ¾²±â ¿Ï·á."); } UpdateData(FALSE); } void CCharSkill::OnLvnKeydownSkillList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLVKEYDOWN pLVKeyDow = reinterpret_cast(pNMHDR); POSITION Pos; int IndexCount = 0, IndexNum = 0; int Index[2000] = {0,}; if(pLVKeyDow->wVKey == VK_DELETE) { Pos= m_SkillList.GetFirstSelectedItemPosition(); if(Pos != NULL) { while(Pos) { Index[IndexNum++] = m_SkillList.GetNextSelectedItem(Pos); } for(IndexCount = IndexNum - 1; IndexCount >= 0; IndexCount--) m_SkillList.DeleteItem(Index[IndexCount]); } } *pResult = 0; } void CCharSkill::OnBnClickedAdd() { UpdateData(); unsigned short SkillID = Math::Convert::StrToHex16(m_SkillID.GetBuffer(0)); m_Skill.SSlot[m_Skill.wSlotNum].SKILLINFO.wSkill = SkillID; m_Skill.SSlot[m_Skill.wSlotNum].SKILLINFO.cLockCount = 0; m_Skill.SSlot[m_Skill.wSlotNum].SKILLINFO.cSkillLevel = 1; m_Skill.wSlotNum += 1; m_Skill.wSkillNum += 1; m_Slot.Format("%d", m_Skill.wSlotNum); m_Total.Format("%d", m_Skill.wSkillNum); m_SkillList.AddSkillRows(&m_Skill); UpdateData(FALSE); } HBRUSH CCharSkill::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; } }