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

// AdminStoreDlgBar.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "AdminToolClient.h"
#include "AdminStoreDlgBar.h"
#include "ListCtrlSortClass.h"
#include "PacketManager.h"
#include "WindowMgr.h"
#include "GlobalFunctions.h"
IMPLEMENT_DYNAMIC(CAdminStoreDlgBar, CInitDialogBar)
CAdminStoreDlgBar::CAdminStoreDlgBar()
: m_bSortListAsc(false)
{
INSERT_WINDOW(IDD_STATUS_DLGBAR, static_cast<CWnd*>(this));
}
CAdminStoreDlgBar::~CAdminStoreDlgBar()
{
ERASE_WINDOW(IDD_STATUS_DLGBAR);
}
void CAdminStoreDlgBar::DoDataExchange(CDataExchange* pDX)
{
CInitDialogBar::DoDataExchange(pDX);
DDX_Control(pDX, IDC_ADMINSTORELIST, m_ctrlAdminStoreList);
DDX_Control(pDX, IDC_WORKREPORT_LIST, m_ctrlWorkReportList);
}
BEGIN_MESSAGE_MAP(CAdminStoreDlgBar, CInitDialogBar)
ON_WM_CONTEXTMENU()
ON_COMMAND(ID_AS_ITEMCOPY, OnAstoreitemcopy)
ON_COMMAND(ID_AS_ITEMEDIT, OnAsItemedit)
ON_COMMAND(ID_AS_ITEMDEL, OnAsItemdel)
ON_NOTIFY(LVN_COLUMNCLICK, IDC_ADMINSTORELIST, OnLvnColumnclickAdminstorelist)
ON_NOTIFY(NM_CLICK, IDC_ADMINSTORELIST, OnNMClickAdminstorelist)
ON_NOTIFY(NM_DBLCLK, IDC_ADMINSTORELIST, OnNMDblclkAdminstorelist)
ON_MESSAGE(WM_INITDIALOG, InitDialog)
END_MESSAGE_MAP()
// CAdminStoreDlgBar 메시지 처리기입니다.
LRESULT CAdminStoreDlgBar::InitDialog(WPARAM, LPARAM)
{
UpdateData(FALSE);
OnInitDialog();
return 0L;
}
BOOL CAdminStoreDlgBar::OnInitDialog()
{
SetUIString(this->m_hWnd, IDC_BOTTOMBAR_01, "IDC_BOTTOMBAR_01");
SetUIString(this->m_hWnd, IDC_BOTTOMBAR_02, "IDC_BOTTOMBAR_02");
return TRUE;
}
void CAdminStoreDlgBar::OnContextMenu(CWnd* pWnd, CPoint point)
{
if(pWnd->GetSafeHwnd() == m_ctrlAdminStoreList.GetSafeHwnd()
&& m_ctrlAdminStoreList.GetSelectedCount() == 1)
{
CMenu muTemp, *pContextMenu;
muTemp.LoadMenu(IDR_CONTEXTMENU);
pContextMenu = muTemp.GetSubMenu(8);
pContextMenu->ModifyMenu(0, MF_STRING | MF_BYPOSITION, ID_AS_ITEMCOPY, GetLocalString("MENU_027"));
pContextMenu->ModifyMenu(2, MF_STRING | MF_BYPOSITION, ID_AS_ITEMEDIT, GetLocalString("MENU_024"));
pContextMenu->ModifyMenu(3, MF_STRING | MF_BYPOSITION, ID_AS_ITEMDEL, GetLocalString("MENU_025"));
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
}
}
void CAdminStoreDlgBar::OnAstoreitemcopy()
{
int iSelIndex = m_ctrlAdminStoreList.GetNextItem(-1, LVNI_SELECTED);
CPacketMgr::GetInstance()->SendPktGetAdminStoreItem(
PktAdminMgr::PktGetAdminStoreItem::CREATE,
_ttol(m_ctrlAdminStoreList.GetItemText(iSelIndex, 0)));
}
void CAdminStoreDlgBar::OnAsItemedit()
{
int iSelIndex = m_ctrlAdminStoreList.GetNextItem(-1, LVNI_SELECTED);
CPacketMgr::GetInstance()->SendPktGetAdminStoreItem(
PktAdminMgr::PktGetAdminStoreItem::EDIT,
_ttol(m_ctrlAdminStoreList.GetItemText(iSelIndex, 0)));
}
void CAdminStoreDlgBar::OnAsItemdel()
{
int iSelIndex = m_ctrlAdminStoreList.GetNextItem(-1, LVNI_SELECTED);
CPacketMgr::GetInstance()->SendPktAdminStoreDelete(
_ttol(m_ctrlAdminStoreList.GetItemText(iSelIndex, 0)));
}
void CAdminStoreDlgBar::OnLvnColumnclickAdminstorelist(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_ctrlAdminStoreList, m_iSortListItem);
*pResult = 0;
}
void CAdminStoreDlgBar::SortListWndItem(CListCtrl* pListCtrl, const int iCol)
{
CListCtrlSortClass SortClass(pListCtrl,iCol);
switch(m_iSortListItem)
{
case SORT_TYPE::STORE_ID:
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtINT);
break;
case SORT_TYPE::SERVER_GROUP:
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
break;
case SORT_TYPE::OWNER:
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
break;
case SORT_TYPE::NAME:
SortClass.Sort(m_bSortListAsc, CListCtrlSortClass::SortDataType::dtSTRING);
break;
}
}
void CAdminStoreDlgBar::OnNMClickAdminstorelist(NMHDR *pNMHDR, LRESULT *pResult)
{
if(g_bItemGrab)
{
char StoreBuffer[PktAdminMgr::PktAdminStoreInsert::MAX_ITEM_INFO];
unsigned long dwStoreBufferLength = 0;
g_stMyItemInfo.m_stItemInfo.AdminStore_Out(StoreBuffer, dwStoreBufferLength);
CPacketMgr::GetInstance()->SendPktAdminStoreInsert(PktAdminMgr::PktAdminStoreInsert::EMPTY_SERVERID,
_T("Adminstrator"), CONV_CLISTR(g_stMyItemInfo.m_stItemInfo.m_szItemName), StoreBuffer);
}
*pResult = 0;
}
void CAdminStoreDlgBar::OnNMDblclkAdminstorelist(NMHDR *pNMHDR, LRESULT *pResult)
{
if(!g_bItemGrab)
{
OnAsItemedit();
}
*pResult = 0;
}
void CAdminStoreDlgBar::WorkReport(CString report, REPORT_TYPE eType)
{
CString contents;
SYSTEMTIME SysTime;
GetLocalTime(&SysTime);
contents.Format(_T("[%04d-%02d-%02d %02d:%02d:%02d] %s"),
SysTime.wYear, SysTime.wMonth, SysTime.wDay, SysTime.wHour, SysTime.wMinute, SysTime.wSecond, report);
switch(eType){
case GENERAL:
m_ctrlWorkReportList.AddLine(CXListBox::White, CXListBox::Black, contents);
break;
case NOTIFY:
m_ctrlWorkReportList.AddLine(CXListBox::Aqua, CXListBox::Black, contents);
break;
case CAUTION:
m_ctrlWorkReportList.AddLine(CXListBox::Yellow, CXListBox::Black, contents);
break;
case SUCCESS:
m_ctrlWorkReportList.AddLine(CXListBox::Lime, CXListBox::Black, contents);
break;
case FAILED:
m_ctrlWorkReportList.AddLine(CXListBox::Fuschia, CXListBox::Black, contents);
break;
}
}
void CAdminStoreDlgBar::SetGoldEditBox(unsigned __int64 i64Gold)
{
// 여기서 단위를 적당히 조정해서 출력!
//SetDlgItemText(
}