// ItemDistributeDlg.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "AdminToolClient.h" #include "ItemDistributeDlg.h" #include "GlobalFunctions.h" #include "PacketManager.h" #include "ListCtrlSortClass.h" #include "WindowMgr.h" #include // CItemDistributeDlg ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CItemDistributeDlg, CDialog) CItemDistributeDlg::CItemDistributeDlg(CWnd* pParent /*=NULL*/) : CDialog(CItemDistributeDlg::IDD, pParent) , m_bSortListAsc(false) { INSERT_WINDOW(IDD_ITEMDISTRIBUTEDLG, static_cast(this)); } CItemDistributeDlg::~CItemDistributeDlg() { ERASE_WINDOW(IDD_ITEMDISTRIBUTEDLG); } void CItemDistributeDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_ITEMDISTRIBUTE_REPORT_LIST, m_ctrlResultList); } BEGIN_MESSAGE_MAP(CItemDistributeDlg, CDialog) ON_WM_CTLCOLOR() ON_BN_CLICKED(IDC_ITEMDISTRIBUTE_BTN, OnBnClickedItemdistributeBtn) ON_BN_CLICKED(IDC_ITEMDISTRIBUTE_CLIPCOPY_BTN, OnBnClickedItemdistributeClipcopyBtn) ON_NOTIFY(LVN_COLUMNCLICK, IDC_ITEMDISTRIBUTE_REPORT_LIST, OnLvnColumnclickItemdistributeReportList) END_MESSAGE_MAP() HBRUSH CItemDistributeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); return hbr; } BOOL CItemDistributeDlg::OnInitDialog() { CDialog::OnInitDialog(); SetDlgItemText(IDC_ITEMDISTRIBUTE_ITEMNAME_EDIT, g_stMyItemInfo.m_stItemInfo.m_szItemName); m_ctrlResultList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB); m_ctrlResultList.InsertColumn(0, _T("UID"), LVCFMT_LEFT, 80); m_ctrlResultList.InsertColumn(1, _T("CID"), LVCFMT_LEFT, 80); m_ctrlResultList.InsertColumn(2, GetLocalString("SERVER_GROUP"), LVCFMT_LEFT, 50); m_ctrlResultList.InsertColumn(3, GetLocalString("RESULT"), LVCFMT_LEFT, 220); SetWindowText(GetLocalString("IDD_ITEMDISTRIBUTEDLG")); SetUIString(this->m_hWnd, IDC_ITEMDISTRIBUTE_01, "IDC_ITEMDISTRIBUTE_01"); SetUIString(this->m_hWnd, IDC_ITEMDISTRIBUTE_02, "IDC_ITEMDISTRIBUTE_02"); SetUIString(this->m_hWnd, IDC_ITEMDISTRIBUTE_03, "IDC_ITEMDISTRIBUTE_03"); SetUIString(this->m_hWnd, IDC_ITEMDISTRIBUTE_04, "IDC_ITEMDISTRIBUTE_04"); SetUIString(this->m_hWnd, IDC_ITEMDISTRIBUTE_05, "IDC_ITEMDISTRIBUTE_05"); SetUIString(this->m_hWnd, IDC_ITEMDISTRIBUTE_06, "IDC_ITEMDISTRIBUTE_06"); SetUIString(this->m_hWnd, IDC_ITEMDISTRIBUTE_CLIPCOPY_BTN, "IDC_ITEMDISTRIBUTE_CLIPCOPY_BTN"); SetUIString(this->m_hWnd, IDC_ITEMDISTRIBUTE_BTN, "IDC_ITEMDISTRIBUTE_BTN"); return TRUE; } void CItemDistributeDlg::OnBnClickedItemdistributeBtn() { CString strBuffer; GetDlgItemText(IDC_DSTUSER_EDIT, strBuffer); if(strBuffer.IsEmpty()) { Report(GetLocalString("MSG_0153"), CAUTION); return; } strBuffer.TrimLeft(); strBuffer.TrimRight(); int nCurPos = 0; CString strResToken = "res"; PktAdminMgr::DstUserInfo arrDstUserInfo[UCHAR_MAX]; PktAdminMgr::DstUserInfo* lpPos = arrDstUserInfo; unsigned char cUserInfoNum = 0; while(!strResToken.IsEmpty()) { lpPos->Clear(); strResToken = strBuffer.Tokenize(" ", nCurPos); // UID ÅäÅ« ºÐ¸® if(strResToken.IsEmpty()) { // ¼­¹ö±×·ì À妽º ´ÙÀ½¿¡ ¾òÀº ÅäÅ«ÀÌ ºñ¾îÀÖ´Â °æ¿ì(Á¤»ó ÀÔ·Â) break; } lpPos->m_dwUID = atol(strResToken); strResToken = strBuffer.Tokenize(" ", nCurPos); // CID ÅäÅ« ºÐ¸® if(strResToken.IsEmpty()) { // UID ´ÙÀ½¿¡ ¾òÀº ÅäÅ«ÀÌ ºñ¾îÀÖ´Â °æ¿ì(ºñ Á¤»ó ÀÔ·Â) Report(GetLocalString("MSG_0154"), CAUTION); break; } lpPos->m_dwCID = atol(strResToken); strResToken = strBuffer.Tokenize("\n", nCurPos); // ¼­¹ö ±×·ì ÅäÅ« ºÐ¸® if(strResToken.IsEmpty()) { // CID ´ÙÀ½¿¡ ¾òÀº ÅäÅ«ÀÌ ºñ¾îÀÖ´Â °æ¿ì(ºñ Á¤»ó ÀÔ·Â) Report(GetLocalString("MSG_0154"), CAUTION); break; } lpPos->m_dwServerGroup = atol(strResToken); if(!lpPos->IsValid()) { Report(GetLocalString("MSG_0154"), CAUTION); return; } ++lpPos; ++cUserInfoNum; if(cUserInfoNum == UCHAR_MAX) { CPacketMgr::GetInstance()->SendPktItemDistribute( g_stMyItemInfo.m_stItemInfo, arrDstUserInfo, cUserInfoNum); m_ctrlResultList.DeleteAllItems(); lpPos = arrDstUserInfo; cUserInfoNum = 0; } } if(0 < cUserInfoNum) { CPacketMgr::GetInstance()->SendPktItemDistribute( g_stMyItemInfo.m_stItemInfo, arrDstUserInfo, cUserInfoNum); m_ctrlResultList.DeleteAllItems(); } } void CItemDistributeDlg::ReportResult(PktAdminMgr::PktItemDistributeAck* lpInfo) { if(NULL != lpInfo) { CString strResult; switch(lpInfo->m_cResultType) { case PktAdminMgr::PktItemDistributeAck::SUCCESS: strResult = GetLocalString("MSG_0086"); break; case PktAdminMgr::PktItemDistributeAck::FALED_TO_CREATE_ITEM_OBJ: strResult = GetLocalString("MSG_0155"); break; case PktAdminMgr::PktItemDistributeAck::FALED_TO_CREATE_TEMPINVEN_OBJ: strResult = GetLocalString("MSG_0156"); break; case PktAdminMgr::PktItemDistributeAck::FALED_TO_GET_GAMEDB: strResult = GetLocalString("MSG_0157"); break; case PktAdminMgr::PktItemDistributeAck::FALED_TO_GET_ITEMINFO: strResult = GetLocalString("MSG_0158"); break; case PktAdminMgr::PktItemDistributeAck::FALED_TO_GET_TEMPINVEN_OBJ: strResult = GetLocalString("MSG_0159"); break; case PktAdminMgr::PktItemDistributeAck::FALED_TO_SERIALIZE_IN: strResult = GetLocalString("MSG_0160"); break; case PktAdminMgr::PktItemDistributeAck::FALED_TO_SERIALIZE_OUT: strResult = GetLocalString("MSG_0161"); break; case PktAdminMgr::PktItemDistributeAck::FALED_TO_SET_ITEM: strResult = GetLocalString("MSG_0162"); break; case PktAdminMgr::PktItemDistributeAck::FALED_TO_UPDATE_TEMPINVEN: strResult = GetLocalString("MSG_0163"); break; default: strResult.Format(_T("UNKNOWN")); break; } CString strForFormat; int nInsertRow = m_ctrlResultList.GetItemCount(); strForFormat.Format(_T("%u"), lpInfo->m_stUserInfo.m_dwUID); m_ctrlResultList.InsertItem(nInsertRow, strForFormat); strForFormat.Format(_T("%u"), lpInfo->m_stUserInfo.m_dwCID); m_ctrlResultList.SetItemText(nInsertRow, 1, strForFormat); strForFormat.Format(_T("%u"), lpInfo->m_stUserInfo.m_dwServerGroup); m_ctrlResultList.SetItemText(nInsertRow, 2, strForFormat); m_ctrlResultList.SetItemText(nInsertRow, 3, strResult); } } void CItemDistributeDlg::OnBnClickedItemdistributeClipcopyBtn() { ClippingListCtrl(m_ctrlResultList, 4, true); } void CItemDistributeDlg::OnLvnColumnclickItemdistributeReportList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR); if(pNMLV->iSubItem == m_iSortListItem) { m_bSortListAsc = !m_bSortListAsc; } else { m_iSortListItem = pNMLV->iSubItem; m_bSortListAsc = true; } SortListWndItem(&m_ctrlResultList, m_iSortListItem); *pResult = 0; } void CItemDistributeDlg::SortListWndItem(CListCtrl* lpListCtrl, const int iCol) { CListCtrlSortClass SortClass(lpListCtrl, iCol); switch(m_iSortListItem) { case SORT_TYPE::UID: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::CID: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::SERVERGROUP: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::RESULT: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRINGNOCASE); break; } }