// GuildMemberPage.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "AdminToolClient.h" #include "GuildMemberPage.h" #include "GuildInfoSheet.h" #include "PacketManager.h" #include "ListCtrlSortClass.h" #include "GlobalFunctions.h" #include "GuildPositionDlg.h" #include // CGuildMemberPage ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CGuildMemberPage, CPropertyPage) CGuildMemberPage::CGuildMemberPage() : CPropertyPage(CGuildMemberPage::IDD) { } CGuildMemberPage::~CGuildMemberPage() { } void CGuildMemberPage::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); DDX_Control(pDX, IDC_GUILDPAGE_MEMBER_LIST, m_ctrlMemberList); } BEGIN_MESSAGE_MAP(CGuildMemberPage, CPropertyPage) ON_NOTIFY(LVN_COLUMNCLICK, IDC_GUILDPAGE_MEMBER_LIST, OnLvnColumnclickGuildpageMemberList) ON_WM_CONTEXTMENU() ON_COMMAND(ID_GMEM_RIGHTEDIT_MENU, OnGmemRighteditMenu) ON_COMMAND(ID_GMEM_EXPULSION_MENU, OnGmemExpulsionMenu) END_MESSAGE_MAP() // CGuildMemberPage ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CGuildMemberPage::OnInitDialog() { CPropertyPage::OnInitDialog(); m_ctrlMemberList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB); m_ctrlMemberList.InsertColumn(0, _T("CID"), LVCFMT_LEFT, 65); m_ctrlMemberList.InsertColumn(1, GetLocalString("RIGHTS"), LVCFMT_LEFT, 40); m_ctrlMemberList.InsertColumn(2, GetLocalString("RANK"), LVCFMT_LEFT, 40); m_ctrlMemberList.InsertColumn(3, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 100); m_ctrlMemberList.InsertColumn(4, _T("LV"), LVCFMT_LEFT, 30); m_ctrlMemberList.InsertColumn(5, GetLocalString("FAME"), LVCFMT_LEFT, 80); m_ctrlMemberList.InsertColumn(6, _T("Gold"), LVCFMT_LEFT, 80); m_ctrlMemberList.InsertColumn(7, GetLocalString("CLASS"), LVCFMT_LEFT, 50); m_ctrlMemberList.InsertColumn(8, GetLocalString("SESSION_TIME"), LVCFMT_LEFT, 125); if(MemberPageSet()) { return TRUE; } else { return FALSE; } } bool CGuildMemberPage::MemberPageSet() { CGuildInfoSheet* lpSheet = reinterpret_cast(GetParent()); if(NULL != lpSheet) { CPacketMgr::GetInstance()->SendRequestGuildMemberList( lpSheet->m_dwSelGID, lpSheet->m_dwSelServerGroup); } else { return false; } return true; } void CGuildMemberPage::OnLvnColumnclickGuildpageMemberList(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_ctrlMemberList, m_iSortListItem); *pResult = 0; } void CGuildMemberPage::SortListWndItem(CListCtrl* pListCtrl, const int iCol) { CListCtrlSortClass SortClass(pListCtrl,iCol); switch(m_iSortListItem) { case SORT_TYPE::CID: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::RIGHT: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::RANK: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::CHARNAME: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING); break; case SORT_TYPE::LEVEL: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::FAME: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::GOLD: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::CLASS: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; case SORT_TYPE::SECESSION_TIME: SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT); break; } } void CGuildMemberPage::OnContextMenu(CWnd* pWnd, CPoint point) { if (pWnd->GetSafeHwnd() == m_ctrlMemberList.GetSafeHwnd()) { CMenu muTemp, *pContextMenu; muTemp.LoadMenu(IDR_CONTEXTMENU); pContextMenu = muTemp.GetSubMenu(13); pContextMenu->ModifyMenu(0, MF_STRING | MF_BYPOSITION, ID_GMEM_RIGHTEDIT_MENU, GetLocalString("ADDED_STRING_085")); pContextMenu->ModifyMenu(1, MF_STRING | MF_BYPOSITION, ID_GMEM_EXPULSION_MENU, GetLocalString("ADDED_STRING_086")); pContextMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this); } } void CGuildMemberPage::OnGmemRighteditMenu() { CGuildInfoSheet* lpGuildInfoSheet = reinterpret_cast(GetParent()); unsigned long dwCID = 0; unsigned char cPosition = 0; if (1 == m_ctrlMemberList.GetSelectedCount()) { int Index = m_ctrlMemberList.GetNextItem(-1, LVIS_SELECTED); if(-1 != Index) { char szValue[256]; m_ctrlMemberList.GetItemText(Index, 0, szValue, sizeof(szValue)); dwCID = atoi(szValue); m_ctrlMemberList.GetItemText(Index, 1, szValue, sizeof(szValue)); cPosition = atoi(szValue); } CGuildPositionDlg dlg(lpGuildInfoSheet->m_dwSelServerGroup, lpGuildInfoSheet->m_dwSelGID, dwCID, cPosition); dlg.DoModal(); } } void CGuildMemberPage::OnGmemExpulsionMenu() { CGuildInfoSheet* lpGuildInfoSheet = reinterpret_cast(GetParent()); unsigned long dwCID = 0; if (1 == m_ctrlMemberList.GetSelectedCount()) { int Index = m_ctrlMemberList.GetNextItem(-1, LVIS_SELECTED); if(-1 != Index) { char szValue[256]; m_ctrlMemberList.GetItemText(Index, 0, szValue, sizeof(szValue)); dwCID = atoi(szValue); } } CPacketMgr::GetInstance()->SendPktGuildMemberEdit(lpGuildInfoSheet->m_dwSelServerGroup, lpGuildInfoSheet->m_dwSelGID, dwCID, 0, PktGuildPosition::TYPE_MEMBERDELETE); }