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

221 lines
6.5 KiB
C++

// GMLogMsgDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "AdminToolClient.h"
#include "GMLogMsgDlg.h"
#include "WindowMgr.h"
#include "GlobalFunctions.h"
#include "PacketManager.h"
#include "CharacterDoc.h"
#include "ListCtrlSortClass.h"
#include "DetailInfoDlg.h"
// CGMLogMsgDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CGMLogMsgDlg, CDialog)
CGMLogMsgDlg::CGMLogMsgDlg(DLG_TYPE eDlgType, DlgOwnerInfo& stInfo, CWnd* pParent /*=NULL*/)
: CDialog(CGMLogMsgDlg::IDD, pParent)
, m_bSortListAsc(false)
{
INSERT_WINDOW(IDD_GMLOGMSGDLG, static_cast<CWnd*>(this));
m_stDlgOwnerInfo.m_dwUID = stInfo.m_dwUID;
m_stDlgOwnerInfo.m_dwCID = stInfo.m_dwCID;
m_stDlgOwnerInfo.m_dwServerGroup = stInfo.m_dwServerGroup;
m_eDlgType = eDlgType;
}
CGMLogMsgDlg::~CGMLogMsgDlg()
{
ERASE_WINDOW(IDD_GMLOGMSGDLG);
}
void CGMLogMsgDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_GMLOGMSG_LIST, m_ctrlGMLogMsgList);
}
BEGIN_MESSAGE_MAP(CGMLogMsgDlg, CDialog)
ON_BN_CLICKED(IDC_GMLOG_ADD, OnBnClickedGmlogAdd)
ON_BN_CLICKED(IDC_GMLOG_DEL, OnBnClickedGmlogDel)
ON_NOTIFY(LVN_COLUMNCLICK, IDC_GMLOGMSG_LIST, OnLvnColumnclickGmlogmsgList)
ON_BN_CLICKED(IDC_GMLOG_CLIPPING_BTN, OnBnClickedGmlogClippingBtn)
ON_NOTIFY(NM_DBLCLK, IDC_GMLOGMSG_LIST, OnNMDblclkGmlogmsgList)
END_MESSAGE_MAP()
// CGMLogMsgDlg 메시지 처리기입니다.
BOOL CGMLogMsgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_ctrlGMLogMsgList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB);
m_ctrlGMLogMsgList.InsertColumn(0, GetLocalString("ADDED_STRING_051"), LVCFMT_LEFT, 50);
m_ctrlGMLogMsgList.InsertColumn(1, GetLocalString("EDIT_TIME"), LVCFMT_LEFT, 140);
m_ctrlGMLogMsgList.InsertColumn(2, GetLocalString("ADDED_STRING_050"), LVCFMT_LEFT, 150);
m_ctrlGMLogMsgList.InsertColumn(3, GetLocalString("ADMIN_ID"), LVCFMT_LEFT, 100);
CString strTitle;
strTitle = GetLocalString("ADDED_STRING_046");
if (UID_LOG_TYPE == m_eDlgType)
{
strTitle.AppendFormat(" (UID: %u)", m_stDlgOwnerInfo.m_dwUID);
SetDlgItemInt(IDC_GMLOG_UID_EDIT, (int)m_stDlgOwnerInfo.m_dwUID, false);
SetDlgItemText(IDC_GMLOG_SERVER_EDIT, "none");
SetDlgItemInt(IDC_GMLOG_CID_EDIT, 0, false);
CPacketMgr::GetInstance()->SendPktGMLogMsg(PktAdminMgr::PktGMLogMsg::LOG_SELECT,
m_stDlgOwnerInfo.m_dwServerGroup, m_stDlgOwnerInfo.m_dwUID);
}
else if (CID_LOG_TYPE == m_eDlgType)
{
strTitle.AppendFormat(" (CID: %u)", m_stDlgOwnerInfo.m_dwCID);
CString strServerName;
CCharacterDoc::GetInstance().GetServerName(m_stDlgOwnerInfo.m_dwServerGroup, strServerName);
SetDlgItemInt(IDC_GMLOG_UID_EDIT, (int)m_stDlgOwnerInfo.m_dwUID, false);
SetDlgItemText(IDC_GMLOG_SERVER_EDIT, strServerName);
SetDlgItemInt(IDC_GMLOG_CID_EDIT, (int)m_stDlgOwnerInfo.m_dwCID, false);
CPacketMgr::GetInstance()->SendPktGMLogMsg(PktAdminMgr::PktGMLogMsg::LOG_SELECT,
m_stDlgOwnerInfo.m_dwServerGroup, m_stDlgOwnerInfo.m_dwUID, m_stDlgOwnerInfo.m_dwCID);
}
SetUIString(this->m_hWnd, IDC_GMLOG_LIST_GROUP, "ADDED_STRING_048");
SetUIString(this->m_hWnd, IDC_GMLOG_ADD_GROUP, "ADDED_STRING_049");
SetUIString(this->m_hWnd, IDC_GMLOG_GROUP_STATIC, "IDC_CHARRESTORE_03");
SetUIString(this->m_hWnd, IDC_GMLOG_ADD_GROUP, "ADDED_STRING_049");
SetUIString(this->m_hWnd, IDC_GMLOG_ADD, "IDC_DROPCONTROL_ADDITEM_BTN");
SetUIString(this->m_hWnd, IDC_GMLOG_CLIPPING_BTN, "IDC_BILLLOG_TO_CLIP_BTN");
SetUIString(this->m_hWnd, IDC_GMLOG_DEL, "ADDED_STRING_052");
SetWindowText(strTitle);
return TRUE;
}
bool CGMLogMsgDlg::InsertGMLogMsgList(PktAdminMgr::PktGMLogMsg* lpData)
{
if (NULL == lpData)
{
return false;
}
CString strForFormat;
int nInsertIndex = m_ctrlGMLogMsgList.GetItemCount();
strForFormat.Format(_T("%u"), lpData->m_dwLogID);
m_ctrlGMLogMsgList.InsertItem(nInsertIndex, strForFormat);
strForFormat.Format(_T("%s"), lpData->m_szEditDate);
m_ctrlGMLogMsgList.SetItemText(nInsertIndex, 1, strForFormat);
strForFormat.Format(_T("%s"), lpData->m_szLogMsg);
m_ctrlGMLogMsgList.SetItemText(nInsertIndex, 2, strForFormat);
strForFormat.Format(_T("%s"), lpData->m_szAdminID);
m_ctrlGMLogMsgList.SetItemText(nInsertIndex, 3, strForFormat);
return true;
}
void CGMLogMsgDlg::OnBnClickedGmlogAdd()
{
CString strMsg;
GetDlgItemText(IDC_GMLOG_ADDLOG_EDIT, strMsg);
if (false == strMsg.IsEmpty() && strMsg.GetLength() < PktAdminMgr::MAX_LOG)
{
char szMsg[PktAdminMgr::MAX_LOG];
_snprintf(szMsg, PktAdminMgr::MAX_LOG, "%s", strMsg);
CPacketMgr::GetInstance()->SendPktGMLogMsg(PktAdminMgr::PktGMLogMsg::LOG_INSERT,
m_stDlgOwnerInfo.m_dwServerGroup, m_stDlgOwnerInfo.m_dwUID, m_stDlgOwnerInfo.m_dwCID, 0, szMsg);
}
else
{
Report(GetLocalString("ADDED_STRING_047"), CAUTION);
}
}
void CGMLogMsgDlg::OnBnClickedGmlogDel()
{
if (1 == m_ctrlGMLogMsgList.GetSelectedCount())
{
int nIndex = m_ctrlGMLogMsgList.GetNextItem(-1, LVIS_SELECTED);
unsigned long dwLogID = atol(m_ctrlGMLogMsgList.GetItemText(nIndex, 0));
CPacketMgr::GetInstance()->SendPktGMLogMsg(PktAdminMgr::PktGMLogMsg::LOG_DELETE,
m_stDlgOwnerInfo.m_dwServerGroup, m_stDlgOwnerInfo.m_dwUID, m_stDlgOwnerInfo.m_dwCID, dwLogID);
}
}
void CGMLogMsgDlg::OnLvnColumnclickGmlogmsgList(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_ctrlGMLogMsgList, m_iSortListItem);
*pResult = 0;
}
void CGMLogMsgDlg::SortListWndItem(CListCtrl* lpListCtrl, const int iCol)
{
CListCtrlSortClass SortClass(lpListCtrl, iCol);
switch(m_iSortListItem)
{
case SORT_TYPE::LOGID:
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
break;
case SORT_TYPE::EDITDATE:
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
break;
case SORT_TYPE::LOGMSG:
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
break;
case SORT_TYPE::ADMINID:
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
break;
}
}
void CGMLogMsgDlg::OnBnClickedGmlogClippingBtn()
{
ClippingListCtrl(m_ctrlGMLogMsgList, 4, true);
}
void CGMLogMsgDlg::OnNMDblclkGmlogmsgList(NMHDR *pNMHDR, LRESULT *pResult)
{
if (1 == m_ctrlGMLogMsgList.GetSelectedCount())
{
int nIndex = m_ctrlGMLogMsgList.GetNextItem(-1, LVIS_SELECTED);
CString strMsg = m_ctrlGMLogMsgList.GetItemText(nIndex, 2);
CDetailInfoDlg dlg(strMsg);
dlg.DoModal();
}
*pResult = 0;
}