Files
Client/Server/AdminTool/AdminToolClient/CharSocietyPage.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

218 lines
6.0 KiB
C++

// CharSocietyPage.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "AdminToolClient.h"
#include "CharSocietyPage.h"
#include "PacketManager.h"
#include "MainFrm.h"
#include "GlobalFunctions.h"
#include <Community/FriendList.h>
#include <Character/ModifyCharacter.h>
// CCharSocietyPage 대화 상자입니다.
IMPLEMENT_DYNAMIC(CCharSocietyPage, CPropertyPage)
CCharSocietyPage::CCharSocietyPage()
: CPropertyPage(CCharSocietyPage::IDD)
, m_lpModifyCharacter(NULL)
, m_dwDocKey(0)
, m_dwPartyID(0)
, m_dwGID(0)
{
}
CCharSocietyPage::~CCharSocietyPage()
{
}
void CCharSocietyPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CHARPARTYLIST, m_ctrlCharPartyList);
DDX_Control(pDX, IDC_CHARFRIENDLIST, m_ctrlCharFriendList);
DDX_Control(pDX, IDC_CHARBANLIST, m_ctrlCharBanList);
DDX_Text(pDX, IDC_PARTY_ID, m_dwPartyID);
DDX_Text(pDX, IDC_CHARACTERPAGE_GID, m_dwGID);
}
BEGIN_MESSAGE_MAP(CCharSocietyPage, CPropertyPage)
ON_WM_CONTEXTMENU()
ON_COMMAND(ID_NEWDOC_CHARSEARCH, OnNewdocCharsearch)
ON_BN_CLICKED(IDC_PARTYPAGE_PARTYCLIP_BTN, OnBnClickedPartypagePartyclipBtn)
ON_BN_CLICKED(IDC_PARTYPAGE_BANCLIP_BTN, OnBnClickedPartypageBanclipBtn)
ON_BN_CLICKED(IDC_PARTYPAGE_FRICLIP_BTN, OnBnClickedPartypageFriclipBtn)
END_MESSAGE_MAP()
// CCharSocietyPage 메시지 처리기입니다.
BOOL CCharSocietyPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_ctrlCharPartyList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
m_ctrlCharFriendList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
m_ctrlCharBanList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
m_ctrlCharPartyList.InsertColumn(0, _T("CID"), LVCFMT_LEFT, 95);
m_ctrlCharPartyList.InsertColumn(1, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 130);
m_ctrlCharFriendList.InsertColumn(0, _T("CID"), LVCFMT_LEFT, 95);
m_ctrlCharFriendList.InsertColumn(1, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 130);
m_ctrlCharBanList.InsertColumn(0, _T("CID"), LVCFMT_LEFT, 95);
m_ctrlCharBanList.InsertColumn(1, GetLocalString("CHAR_NAME"), LVCFMT_LEFT, 130);
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_01, "IDC_SOCIETYPAGE_01");
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_02, "IDC_SOCIETYPAGE_02");
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_03, "IDC_SOCIETYPAGE_03");
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_04, "IDC_SOCIETYPAGE_04");
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_05, "IDC_SOCIETYPAGE_05");
SetUIString(this->m_hWnd, IDC_SOCIETYPAGE_06, "IDC_SOCIETYPAGE_06");
SetUIString(this->m_hWnd, IDC_PARTYPAGE_PARTYCLIP_BTN, "IDC_PARTYPAGE_PARTYCLIP_BTN");
SetUIString(this->m_hWnd, IDC_PARTYPAGE_BANCLIP_BTN, "IDC_PARTYPAGE_BANCLIP_BTN");
SetUIString(this->m_hWnd, IDC_PARTYPAGE_FRICLIP_BTN, "IDC_PARTYPAGE_FRICLIP_BTN");
return TRUE;
}
bool CCharSocietyPage::SetSocietyPageData( unsigned int dwDocKey, CModifyCharacter* lpModifyCharacter )
{
if(dwDocKey != 0)
{
m_lpModifyCharacter = lpModifyCharacter;
m_dwDocKey = dwDocKey;
}
return true;
}
void CCharSocietyPage::OnContextMenu(CWnd* pWnd, CPoint point)
{
bool bIsSel = false;
if((pWnd->GetSafeHwnd() == m_ctrlCharPartyList.GetSafeHwnd())
&& (m_ctrlCharPartyList.GetSelectedCount() == 1))
{
bIsSel = true;
m_lpSelList = &m_ctrlCharPartyList;
}
else if((pWnd->GetSafeHwnd() == m_ctrlCharBanList.GetSafeHwnd())
&& (m_ctrlCharBanList.GetSelectedCount() == 1))
{
bIsSel = true;
m_lpSelList = &m_ctrlCharBanList;
}
else if((pWnd->GetSafeHwnd() == m_ctrlCharFriendList.GetSafeHwnd())
&& (m_ctrlCharFriendList.GetSelectedCount() == 1))
{
bIsSel = true;
m_lpSelList = &m_ctrlCharFriendList;
}
if(false == bIsSel)
{
return;
}
CMenu muTemp, *pContextMenu;
muTemp.LoadMenu(IDR_CONTEXTMENU);
pContextMenu = muTemp.GetSubMenu(4);
pContextMenu->ModifyMenu(0, MF_STRING | MF_BYPOSITION, ID_NEWDOC_CHARSEARCH, GetLocalString("MENU_023"));
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
}
// 목록구성을 위한 클래스 --------------------------------------------------------------
class CMakeItList
{
public:
CMakeItList(CListCtrl& ctrlFriendList)
: m_FriendList(ctrlFriendList) { ; }
bool operator() (CFriendList::Rebind& rebind)
{
CString strCID;
strCID.Format(_T("%d"), rebind.GetCID());
m_FriendList.InsertItem(0, strCID);
m_FriendList.SetItemText(0, 1, rebind.GetCharacterName());
return true;
}
bool operator() (CBanList::Rebind& rebind)
{
CString strCID;
strCID.Format(_T("%d"), rebind.GetCID());
m_FriendList.InsertItem(0, strCID);
m_FriendList.SetItemText(0, 1, rebind.GetCharacterName());
return true;
}
private:
CListCtrl& m_FriendList;
};
//---------------------------------------------------------------------------------------------
void CCharSocietyPage::MakeItFriendList()
{
if(NULL != m_lpModifyCharacter)
{
m_lpModifyCharacter->GetFriendList().Process(CMakeItList(m_ctrlCharFriendList));
}
}
void CCharSocietyPage::MakeItBanList()
{
if(NULL != m_lpModifyCharacter)
{
m_lpModifyCharacter->GetBanList().Process(CMakeItList(m_ctrlCharBanList));
}
}
void CCharSocietyPage::SetSocietyPage(CModifyCharacter* lpModifyCharacter)
{
m_ctrlCharFriendList.DeleteAllItems();
m_ctrlCharBanList.DeleteAllItems();
if(NULL != lpModifyCharacter)
{
m_dwPartyID = lpModifyCharacter->GetPID();
m_dwGID = lpModifyCharacter->GetGID();
MakeItFriendList();
MakeItBanList();
UpdateData(false);
}
}
void CCharSocietyPage::OnNewdocCharsearch()
{
int nIndex = m_lpSelList->GetNextItem(-1, LVIS_SELECTED);
CString strCID = m_lpSelList->GetItemText(nIndex, 0);
CPacketMgr::GetInstance()->SendSearchID(
PktAdminMgr::PktSearchID::SearchCID, m_lpModifyCharacter->GetServerGroup(), _ttoi(strCID));
}
void CCharSocietyPage::OnBnClickedPartypagePartyclipBtn()
{
ClippingListCtrl(m_ctrlCharPartyList, 2, true);
}
void CCharSocietyPage::OnBnClickedPartypageBanclipBtn()
{
ClippingListCtrl(m_ctrlCharBanList, 2, true);
}
void CCharSocietyPage::OnBnClickedPartypageFriclipBtn()
{
ClippingListCtrl(m_ctrlCharFriendList, 2, true);
}