Files
Client/Server/AdminTool/AdminToolClient/GuildMemberPage.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

202 lines
5.5 KiB
C++

// 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 <Network/Packet/PacketStruct/GuildPacket.h>
// 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<CGuildInfoSheet*>(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<LPNMLISTVIEW>(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<CGuildInfoSheet*>(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<CGuildInfoSheet*>(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);
}