⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logoperpage.cpp

📁 墨香最新私服
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// LogOperPage.cpp : implementation file
//

#include "stdafx.h"
#include "ds_rmtool.h"
#include "RMNetwork.h"
#include "LogOperDoc.h"
#include "LogOperPage.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLogOperPage property page

IMPLEMENT_DYNCREATE(CLogOperPage, CLDPropPage)

CLogOperPage::CLogOperPage() : CLDPropPage(CLogOperPage::IDD)
{
	//{{AFX_DATA_INIT(CLogOperPage)
	m_bOneDay = TRUE;
	m_nLogKind = 0;
	m_nSelectLog = 0;
	//}}AFX_DATA_INIT

	m_ToolLogTable.Initialize( 1000 );
}

CLogOperPage::~CLogOperPage()
{
	ReleaseToolLogTable();
}

void CLogOperPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLogOperPage)
	DDX_Control(pDX, IDC_COMBO_RMLOG, m_cbRMLog);
	DDX_Control(pDX, IDC_COMBO_GMLOG, m_cbGMLog);
	DDX_Control(pDX, IDC_EDIT_OPERNAME, m_etOperName);
	DDX_Control(pDX, IDC_LISTCTRL_OPERLOG, m_lcOper);
	DDX_Control(pDX, IDC_DATETIMEPICKER_START, m_StartTime);
	DDX_Control(pDX, IDC_DATETIMEPICKER_END, m_EndTime);
	DDX_Check(pDX, IDC_CHECK_LOG_ONEDAY, m_bOneDay);
	DDX_Radio(pDX, IDC_RADIO1, m_nLogKind);
	DDX_Radio(pDX, IDC_RADIO3, m_nSelectLog);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLogOperPage, CLDPropPage)
	//{{AFX_MSG_MAP(CLogOperPage)
	ON_BN_CLICKED(IDC_CHECK_LOG_ONEDAY, OnCheckLogOneday)
	ON_BN_CLICKED(IDC_BUTTON_LOG_SEARCH, OnButtonLogSearch)
	ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
	ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
	ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
	ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
	ON_BN_CLICKED(IDC_RADIO5, OnRadio5)
	ON_CBN_SELCHANGE(IDC_COMBO_RMLOG, OnSelchangeComboRmlog)
	ON_CBN_SELCHANGE(IDC_COMBO_GMLOG, OnSelchangeComboGmlog)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLogOperPage message handlers

BOOL CLogOperPage::OnInitDialog() 
{
	CLDPropPage::OnInitDialog();

//	m_Font.CreatePointFont(100, "Arial");
//	m_lcOper.SetFont( &m_Font );

	m_bOneDay = TRUE;
	m_nLogKind = 0;
	m_nSelectLog = 0;
	InitComboBoxData();
	InitListControl();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CLogOperPage::OnCheckLogOneday() 
{
	m_bOneDay = !m_bOneDay;
	m_EndTime.EnableWindow( !m_bOneDay );
	UpdateData( FALSE );
}

void CLogOperPage::OnButtonLogSearch() 
{
	CString sName, sSDate, sEDate;

	// Date
	if( m_bOneDay )
	{
		m_StartTime.GetWindowText( sSDate );
		sEDate.Empty();		
	}
	else
	{
		m_StartTime.GetWindowText( sSDate );
		m_EndTime.GetWindowText( sEDate );
	}

	if( m_nLogKind != 0 )
	{
		if( m_etOperName.GetWindowTextLength() == 0 )
			
		{
			MessageBox( "Input Search Operator Name!!", "Error" );
			return;
		}
		else if( m_etOperName.GetWindowTextLength() > 17 )
		{
			MessageBox( "Search Operator Name Is Too Long!!", "Error" );
			return;
		}
	}

	// Search
	TMSG_GAMELOGSEARCH GameLogSearch;
	GameLogSearch.Category = MP_RMTOOL_GAMELOG;
	GameLogSearch.Protocol = MP_RMTOOL_TOOLLOG_SYN;
	GameLogSearch.dwTemplateIdx = m_pDocument->GetDocumentIdx();
	GameLogSearch.wServer = 0;
	GameLogSearch.wType = m_nLogKind;
	m_etOperName.GetWindowText( sName );
	strncpy( GameLogSearch.sName, (char*)(LPCTSTR)sName, 17 );
	GameLogSearch.bDayOnly = m_bOneDay;
	strcpy( GameLogSearch.sSDate, (char*)(LPCTSTR)sSDate );
	strcpy( GameLogSearch.sEDate, (char*)(LPCTSTR)sEDate );

	NETWORK->Send( &GameLogSearch, sizeof(TMSG_GAMELOGSEARCH) );

	ReleaseToolLogTable();
	OnRadio3();
}

void CLogOperPage::OnRadio1() 
{
	m_nLogKind = 0;
	m_etOperName.SetWindowText( "" );
	m_etOperName.EnableWindow( FALSE );
}

void CLogOperPage::OnRadio2() 
{
	m_nLogKind = 1;	
	m_etOperName.EnableWindow( TRUE );
}

void CLogOperPage::OnRadio3() 
{
	m_nSelectLog = 0;	
	m_cbGMLog.EnableWindow( FALSE );
	m_cbRMLog.EnableWindow( FALSE );
	m_cbGMLog.SetCurSel( 0 );
	m_cbRMLog.SetCurSel( 0 );
	UpdateData( FALSE );

	UpdateListControl();
}

void CLogOperPage::OnRadio4() 
{
	m_nSelectLog = 1;		
	m_cbGMLog.EnableWindow( TRUE );
	m_cbRMLog.EnableWindow( FALSE );

	UpdateListControlFromLogKind( eToolLog_GM, 0 );
	m_cbRMLog.SetCurSel( 0 );
}

void CLogOperPage::OnRadio5() 
{
	m_nSelectLog = 2;		
	m_cbGMLog.EnableWindow( FALSE );
	m_cbRMLog.EnableWindow( TRUE );	

	UpdateListControlFromLogKind( eToolLog_RM, 0 );
	m_cbGMLog.SetCurSel( 0 );
}

void CLogOperPage::ReleaseToolLogTable()
{
	TOOLLOG* pData = NULL;
	m_ToolLogTable.SetPositionHead();
	while( pData = m_ToolLogTable.GetData() )
		delete pData;
	m_ToolLogTable.RemoveAll();	
}

void CLogOperPage::SetOperLog( TMSG_TOOLLOG* pMsg )
{
	for( int i = 0; i < pMsg->wCount; ++i )
	{
		TOOLLOG* pData = new TOOLLOG;
		memcpy( pData, &pMsg->sLog[i], sizeof(TOOLLOG) );

		m_ToolLogTable.Add( pData, pData->dwLogIdx );
	}
	
	UpdateListControl();
}

void CLogOperPage::InitListControl()
{
	// Delete all of the columns.
	int i = 0;
	int nColumnCount = m_lcOper.GetHeaderCtrl()->GetItemCount();
	for( i = 0; i < nColumnCount; ++i )
		m_lcOper.DeleteColumn( 0 );
	m_lcOper.DeleteAllItems();

	char* tcolumn[12] = { "LogIdx", "LogType", "LogKind", "OperIdx", "OperName", "TargetIdx", "TargetName",
						  "Param1", "Param2", "Param3", "Param4", "LogDate" };
	int tcolumnsize[12] = { 80, 80, 80, 50, 80, 50, 80, 50, 50, 50, 50, 120 };

	// listctrl column 汲沥
	LV_COLUMN lvcolumn;
	lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
	lvcolumn.fmt = LVCFMT_CENTER;
	for( i = 0; i < 12; ++i )
	{
		lvcolumn.iSubItem = i;
		lvcolumn.cx = tcolumnsize[i];
		lvcolumn.pszText = tcolumn[i];
		m_lcOper.InsertColumn( i, &lvcolumn );
	}
	// style
	DWORD dwExStyle = m_lcOper.GetExtendedStyle();
	dwExStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;
	m_lcOper.SetExtendedStyle( dwExStyle );
}

void CLogOperPage::UpdateListControl()
{
	m_lcOper.DeleteAllItems();

	char temp[256];	
	LV_ITEM lvitem;

	TOOLLOG* pData = NULL;
	m_ToolLogTable.SetPositionHead();
	while( pData = m_ToolLogTable.GetData() )
	{
		lvitem.iItem = m_lcOper.GetItemCount();	// 青
				
		lvitem.mask = LVIF_TEXT;
		lvitem.stateMask = LVIS_SELECTED;
		lvitem.state = INDEXTOSTATEIMAGEMASK(1);
		lvitem.iSubItem = 0;	
		lvitem.pszText = itoa( pData->dwLogIdx, temp, 10 );
				
		m_lcOper.InsertItem( &lvitem );
		m_lcOper.SetItemText( lvitem.iItem, 1, GetLogTypeName( pData->dwLogType, temp ) );
		m_lcOper.SetItemText( lvitem.iItem, 2, GetLogKindName( pData->dwLogType, pData->dwLogKind, temp ) );
		m_lcOper.SetItemText( lvitem.iItem, 3, itoa( pData->dwOperIdx, temp, 10 ) );
		m_lcOper.SetItemText( lvitem.iItem, 4, pData->sOperName );
		m_lcOper.SetItemText( lvitem.iItem, 5, itoa( pData->dwTargetIdx, temp, 10 ) );
		m_lcOper.SetItemText( lvitem.iItem, 6, pData->sTargetName );
		m_lcOper.SetItemText( lvitem.iItem, 7, GetParam1Name( pData->dwLogType, pData->dwLogKind, pData->dwParam1, temp ) );
		m_lcOper.SetItemText( lvitem.iItem, 8, GetParam2Name( pData->dwLogType, pData->dwLogKind, pData->dwParam2, temp ) );
		m_lcOper.SetItemText( lvitem.iItem, 9, GetParam3Name( pData->dwLogType, pData->dwLogKind, pData->dwParam3, temp ) );
		m_lcOper.SetItemText( lvitem.iItem, 10, GetParam4Name( pData->dwLogType, pData->dwLogKind, pData->dwParam4, temp ) );
		m_lcOper.SetItemText( lvitem.iItem, 11, pData->sLogDate );
	}
}

void CLogOperPage::InitComboBoxData()
{
	// gmlog
	m_cbGMLog.AddString( "All Data" );			m_cbGMLog.SetItemData( 0, 0 );
	m_cbGMLog.AddString( "Move" );				m_cbGMLog.SetItemData( 1, eGMLog_Move );
	m_cbGMLog.AddString( "Item" );				m_cbGMLog.SetItemData( 2, eGMLog_Item );
	m_cbGMLog.AddString( "Money" );				m_cbGMLog.SetItemData( 3, eGMLog_Money );
	m_cbGMLog.AddString( "Skill" );				m_cbGMLog.SetItemData( 4, eGMLog_Skill );
	m_cbGMLog.AddString( "Ability" );			m_cbGMLog.SetItemData( 5, eGMLog_Ability );
	m_cbGMLog.AddString( "Chat_Map" );			m_cbGMLog.SetItemData( 6, eGMLog_Chat_Map );
	m_cbGMLog.AddString( "Chat_User" );			m_cbGMLog.SetItemData( 7, eGMLog_Chat_User );
	m_cbGMLog.AddString( "PK" );				m_cbGMLog.SetItemData( 8, eGMLog_PK );
	m_cbGMLog.AddString( "Disconnect_Map" );	m_cbGMLog.SetItemData( 9, eGMLog_Disconnect_Map );
	m_cbGMLog.AddString( "Disconnect_User" );	m_cbGMLog.SetItemData( 10, eGMLog_Disconnect_User );
	m_cbGMLog.AddString( "Block" );				m_cbGMLog.SetItemData( 11, eGMLog_Block );
	m_cbGMLog.AddString( "Regen" );				m_cbGMLog.SetItemData( 12, eGMLog_Regen );
	m_cbGMLog.AddString( "Event" );				m_cbGMLog.SetItemData( 13, eGMLog_Event );
	m_cbGMLog.SetCurSel( 0 );

	// rmlog
	m_cbRMLog.AddString( "All Data" );				m_cbRMLog.SetItemData( 0, 0 );
	m_cbRMLog.AddString( "OperInsert" );			m_cbRMLog.SetItemData( 1, eRMLog_OperInsert );
	m_cbRMLog.AddString( "OperDelete" );			m_cbRMLog.SetItemData( 2, eRMLog_OperDelete );
	m_cbRMLog.AddString( "IpInsert" );				m_cbRMLog.SetItemData( 3, eRMLog_IpInsert );
	m_cbRMLog.AddString( "IpDelete" );				m_cbRMLog.SetItemData( 4, eRMLog_IpDelete );
	m_cbRMLog.AddString( "ChangeCharacterInfo" );	m_cbRMLog.SetItemData( 5, eRMLog_ChangeCharacterInfo );
	m_cbRMLog.AddString( "ChangeWareInfo" );		m_cbRMLog.SetItemData( 6, eRMLog_ChangeWareInfo );
	m_cbRMLog.AddString( "SkillInsert" );			m_cbRMLog.SetItemData( 7, eRMLog_SkillInsert );
	m_cbRMLog.AddString( "SkillDelete" );			m_cbRMLog.SetItemData( 8, eRMLog_SkillDelete );
	m_cbRMLog.AddString( "SkillUpdate" );			m_cbRMLog.SetItemData( 9, eRMLog_SkillUpdate );
	m_cbRMLog.AddString( "AbilityUpdate" );			m_cbRMLog.SetItemData( 10, eRMLog_AbilityUpdate );
	m_cbRMLog.AddString( "QuestDelete" );			m_cbRMLog.SetItemData( 11, eRMLog_QuestDelete );
	m_cbRMLog.AddString( "ChangeLoginPoint" );		m_cbRMLog.SetItemData( 12, eRMLog_ChangeLoginPoint );
	m_cbRMLog.AddString( "ItemInsert" );			m_cbRMLog.SetItemData( 13, eRMLog_ItemInsert );
	m_cbRMLog.AddString( "ItemDelete" );			m_cbRMLog.SetItemData( 14, eRMLog_ItemDelete );
	m_cbRMLog.AddString( "ItemUpdate" );			m_cbRMLog.SetItemData( 15, eRMLog_ItemUpdate );
	m_cbRMLog.AddString( "ChangeUserLevel" );		m_cbRMLog.SetItemData( 16, eRMLog_ChangeUserLevel );
	m_cbRMLog.AddString( "RecoverCharacter" );		m_cbRMLog.SetItemData( 17, eRMLog_RecoverCharacter );
	m_cbRMLog.SetCurSel( 0 );
}

void CLogOperPage::OnSelchangeComboGmlog() 
{
	int nSel = m_cbGMLog.GetCurSel();
	int nGMKind = m_cbGMLog.GetItemData( nSel );	

	UpdateListControlFromLogKind( eToolLog_GM, nGMKind );
}

void CLogOperPage::OnSelchangeComboRmlog() 
{
	int nSel = m_cbRMLog.GetCurSel();
	int nRMKind = m_cbRMLog.GetItemData( nSel );	

	UpdateListControlFromLogKind( eToolLog_RM, nRMKind );
}

void CLogOperPage::UpdateListControlFromLogKind( int nLogType, int nLogKind )
{
	m_lcOper.DeleteAllItems();

	char temp[256];	
	LV_ITEM lvitem;

	TOOLLOG* pData = NULL;
	m_ToolLogTable.SetPositionHead();
	while( pData = m_ToolLogTable.GetData() )
	{
		if( pData->dwLogType != nLogType )
			continue;
		else
		{
			if( pData->dwLogKind == nLogKind || nLogKind == 0 )
			{
				lvitem.iItem = m_lcOper.GetItemCount();	// 青
				
				lvitem.mask = LVIF_TEXT;
				lvitem.stateMask = LVIS_SELECTED;
				lvitem.state = INDEXTOSTATEIMAGEMASK(1);
				lvitem.iSubItem = 0;	
				lvitem.pszText = itoa( pData->dwLogIdx, temp, 10 );
				
				m_lcOper.InsertItem( &lvitem );
				m_lcOper.SetItemText( lvitem.iItem, 1, GetLogTypeName( pData->dwLogType, temp ) );
				m_lcOper.SetItemText( lvitem.iItem, 2, GetLogKindName( pData->dwLogType, pData->dwLogKind, temp ) );
				m_lcOper.SetItemText( lvitem.iItem, 3, itoa( pData->dwOperIdx, temp, 10 ) );
				m_lcOper.SetItemText( lvitem.iItem, 4, pData->sOperName );
				m_lcOper.SetItemText( lvitem.iItem, 5, itoa( pData->dwTargetIdx, temp, 10 ) );
				m_lcOper.SetItemText( lvitem.iItem, 6, pData->sTargetName );
				m_lcOper.SetItemText( lvitem.iItem, 7, GetParam1Name( pData->dwLogType, pData->dwLogKind, pData->dwParam1, temp ) );
				m_lcOper.SetItemText( lvitem.iItem, 8, GetParam2Name( pData->dwLogType, pData->dwLogKind, pData->dwParam2, temp ) );
				m_lcOper.SetItemText( lvitem.iItem, 9, GetParam3Name( pData->dwLogType, pData->dwLogKind, pData->dwParam3, temp ) );
				m_lcOper.SetItemText( lvitem.iItem, 10, GetParam4Name( pData->dwLogType, pData->dwLogKind, pData->dwParam4, temp ) );
				m_lcOper.SetItemText( lvitem.iItem, 11, pData->sLogDate );
			}
		}
	}
}

char* CLogOperPage::GetLogTypeName( int nLogType, char* temp )
{
	switch( nLogType )
	{
	case eToolLog_GM:	sprintf( temp, "GMTool" );			break;
	case eToolLog_RM:	sprintf( temp, "RMTool" );			break;
	default:			sprintf( temp, "%d", nLogType );	break;
	}

	return temp;
}

char* CLogOperPage::GetLogKindName( int nLogType, int nLogKind, char* temp )
{
	if( nLogType == eToolLog_GM )
	{
		switch( nLogKind )
		{
		case eGMLog_Move:
			break;
		case eGMLog_Item:
			break;
		case eGMLog_Money:
			break;
		case eGMLog_Skill:
			break;
		case eGMLog_Ability:
			break;
		case eGMLog_Chat_Map:
			break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -