// BlockedListDlg.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "AdminToolClient.h" #include "BlockManagementDlg.h" #include "GlobalFunctions.h" #include "CharacterDoc.h" #include "WindowMgr.h" #include "PacketManager.h" #include "ListCtrlSortClass.h" // CBlockManagementDlg ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CBlockManagementDlg, CDialog) CBlockManagementDlg::CBlockManagementDlg(CWnd* pParent /*=NULL*/) : CDialog(CBlockManagementDlg::IDD, pParent) , m_bSortListAsc(false) { INSERT_WINDOW(IDD_BLOCKEDLISTDLG, this); } CBlockManagementDlg::~CBlockManagementDlg() { ERASE_WINDOW(IDD_BLOCKEDLISTDLG); } void CBlockManagementDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_BLOCKEDLIST, m_ctrlBlockedList); DDX_Control(pDX, IDC_BM_SERVERCOMBO, m_ctrlBMServerCombo); } BEGIN_MESSAGE_MAP(CBlockManagementDlg, CDialog) ON_BN_CLICKED(IDC_BLOCKLIST_SEARCH, OnBnClickedBlocklistSearch) ON_WM_CONTEXTMENU() ON_COMMAND(ID_DELETE_BLOCK, OnDeleteBlock) ON_BN_CLICKED(IDC_BLOCKLIST_CLIP_BTN, OnBnClickedBlocklistClipBtn) ON_NOTIFY(LVN_COLUMNCLICK, IDC_BLOCKEDLIST, OnLvnColumnclickBlockedlist) END_MESSAGE_MAP() // CBlockManagementDlg ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CBlockManagementDlg::OnInitDialog() { CDialog::OnInitDialog(); m_ctrlBlockedList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB); m_ctrlBlockedList.InsertColumn(0, GetLocalString("ADDED_STRING_114"), LVCFMT_RIGHT, 50); m_ctrlBlockedList.InsertColumn(1, GetLocalString("SERVER_GROUP"), LVCFMT_LEFT, 90); m_ctrlBlockedList.InsertColumn(2, _T("UID"), LVCFMT_LEFT, 100); m_ctrlBlockedList.InsertColumn(3, GetLocalString("ACCOUNT"), LVCFMT_LEFT, 100); m_ctrlBlockedList.InsertColumn(4, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 100); m_ctrlBlockedList.InsertColumn(5, GetLocalString("BLOCK_TARGET"), LVCFMT_LEFT, 70); m_ctrlBlockedList.InsertColumn(6, GetLocalString("BLCOK_TERM"), LVCFMT_LEFT, 70); m_ctrlBlockedList.InsertColumn(7, GetLocalString("BLOCK_START_TIME"), LVCFMT_LEFT, 120); m_ctrlBlockedList.InsertColumn(8, GetLocalString("BLOCK_END_TIME"), LVCFMT_LEFT, 120); m_ctrlBlockedList.InsertColumn(9, GetLocalString("ADMIN_ID"), LVCFMT_LEFT, 80); m_ctrlBlockedList.InsertColumn(10, GetLocalString("DESCRIPTION"), LVCFMT_LEFT, 170); SetWindowText(GetLocalString("IDD_BLOCKEDLISTDLG")); SetUIString(this->m_hWnd, IDC_BLOCKMANAGE_01,"IDC_BLOCKMANAGE_01"); SetUIString(this->m_hWnd, IDC_BLOCKMANAGE_02,"IDC_BLOCKMANAGE_02"); SetUIString(this->m_hWnd, IDC_BLOCKMANAGE_03,"IDC_BLOCKMANAGE_03"); SetUIString(this->m_hWnd, IDC_BLOCKLIST_SEARCH,"IDC_BLOCKLIST_SEARCH"); SetUIString(this->m_hWnd, IDC_BLOCKLIST_CLIP_BTN,"IDC_BLOCKLIST_CLIP_BTN"); ServerGroupComboSet(m_ctrlBMServerCombo); return TRUE; } void CBlockManagementDlg::OnDeleteBlock() { int Index = m_ctrlBlockedList.GetNextItem(-1, LVIS_SELECTED); if(-1 != Index) { TCHAR szValue[256]; unsigned long dwServerGroup; m_ctrlBlockedList.GetItemText(Index, 1, szValue, sizeof(szValue)); CCharacterDoc::GetInstance().GetServerIndex(szValue, dwServerGroup); m_ctrlBlockedList.GetItemText(Index, 0, szValue, sizeof(szValue)); unsigned long nidx = _ttol(szValue); CPacketMgr::GetInstance()->SendDelBlockUser((char)dwServerGroup, nidx, szValue); // »èÁ¦ ÈÄ ¸ñ·Ï °»½Å m_ctrlBlockedList.DeleteAllItems(); CPacketMgr::GetInstance()->SendPktSearchBlock(dwServerGroup); } } void CBlockManagementDlg::OnContextMenu(CWnd* pWnd, CPoint point) { if(pWnd->GetSafeHwnd() == m_ctrlBlockedList.GetSafeHwnd() && m_ctrlBlockedList.GetSelectedCount() == 1) { CMenu muTemp, *pContextMenu; muTemp.LoadMenu(IDR_CONTEXTMENU); pContextMenu = muTemp.GetSubMenu(10); pContextMenu->ModifyMenu(0, MF_STRING | MF_BYPOSITION, ID_DELETE_BLOCK, GetLocalString("MENU_030")); pContextMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this); } } void CBlockManagementDlg::OnOK() { //CDialog::OnOK(); } void CBlockManagementDlg::OnCancel() { CDialog::OnCancel(); } void CBlockManagementDlg::OnBnClickedBlocklistSearch() { CComboBox* lpServerCombo = static_cast(GetDlgItem(IDC_BM_SERVERCOMBO)); if(CB_ERR != lpServerCombo->GetCurSel()) { m_ctrlBlockedList.DeleteAllItems(); CString strServerName; unsigned long dwServerGroup; lpServerCombo->GetLBText(lpServerCombo->GetCurSel(), strServerName); CCharacterDoc::GetInstance().GetServerIndex(strServerName, dwServerGroup); CPacketMgr::GetInstance()->SendPktSearchBlock(dwServerGroup); } } void CBlockManagementDlg::OnBnClickedBlocklistClipBtn() { ClippingListCtrl(m_ctrlBlockedList, 9, true); } void CBlockManagementDlg::OnLvnColumnclickBlockedlist(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_ctrlBlockedList, m_iSortListItem); *pResult = 0; } void CBlockManagementDlg::SortListWndItem(CListCtrl* lpListCtrl, const int iCol) { CListCtrlSortClass SortClass(lpListCtrl, iCol); switch(m_iSortListItem) { case SORT_TYPE::INDEX: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::SERVER_GROUP: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::UID: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::ACCOUNT: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::CHAR_NAME: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::TARGET: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::TERM: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::START_TIME: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::END_TIME: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::ADMIN_ID: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRINGNOCASE); break; case SORT_TYPE::DESCRIPTION: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRINGNOCASE); break; } }