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

📄 serverstatus.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			}
			else
			{
				pcd->clrText = (COLORREF)RGB(0,0,255);
			}

			*pResult = CDRF_DODEFAULT;
		}
		break;
		/*
		COLORREF rgb = (COLORREF)c_ListenerStatusList.GetItemData(pcd->nmcd.dwItemSpec);

		if(rgb == RGB(255,0,0))
		{
			pcd->clrText = (COLORREF)rgb;
			pcd->clrTextBk = (COLORREF)RGB(255,255,0);
		}
		
        *pResult = CDRF_DODEFAULT;
        break;
		*/
    }
}




DWORD CServerStatus::GetConnection()
{
	CServerView* pView = (CServerView*)GetParent();
	return m_pApp->m_nCI[ pView->m_nCurServerSet ];
}

void CServerStatus::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here

	CServerView *pView = (CServerView*)GetParent();

	if(!pView)	return;
//	if(pView->m_nCurView != 0)
//		return;

	CWnd *pWnd = GetTopWindow();
	CRect wndRect;
	
	float x,y;
	float hx, hy; hx= 0.0; hy = 0.0;
	int ServerListTop = 0;	
	while(pWnd)
	{
		//int vCx = cx - pView->m_BaseRect.Width();
		//int vCy = cy - pView->m_BaseRect.Height();
		
		//base : 1 = cx : x
		//cx = base * x
		//x = cx / base

		//prev : 1 = cx : x
		//cx = prev * x
		//x = cx / prev


//		x = cx * 1.0 / pView->m_BaseRect.Width();
//		y = cy * 1.0 / pView->m_BaseRect.Height();

		x = (float)(cx * 1.0 / m_nPrevWidth);
		y = (float)(cy * 1.0 / m_nPrevHeight);

		pWnd->GetWindowRect(&wndRect);
		ScreenToClient(&wndRect);

		int id = pWnd->GetDlgCtrlID();
		

		switch(id)
		{

		case IDC_STATIC_SERVER:
		case IDC_STATIC_LISTENER:
			{
				wndRect.left = (int)(wndRect.left * x + 0.5);
				wndRect.right = (int)(wndRect.right * x + 0.5);

				if(id == IDC_STATIC_SERVER)
					ServerListTop = wndRect.bottom + 2;
			}
			break;

		case IDC_SERVER_LIST:
		case IDC_LISTENER_LIST:
			{
				wndRect.top = ServerListTop;	//(int)(wndRect.top * y + 0.5);
				wndRect.left = (int)(wndRect.left * x + 0.5);
				wndRect.bottom = (int)(wndRect.bottom * y + 0.5);
				wndRect.right = (int)(wndRect.right * x + 0.5);
			}
			break;

		default:
			{
				wndRect.top = (int)(wndRect.top * y + 0.5);
				wndRect.left = (int)(wndRect.left * x + 0.5);
				wndRect.bottom = (int)(wndRect.bottom * y + 0.5);
				wndRect.right = (int)(wndRect.right * x + 0.5);
			}
			break;
		}
				
		
		//ClientToScreen(&wndRect);
		pWnd->MoveWindow(&wndRect);
			
		pWnd = pWnd->GetNextWindow();
	}
	
	Invalidate();

	m_nPrevWidth = cx;
	m_nPrevHeight = cy;
/*	
	if(pView && c_MainStatusList.m_hWnd)
	{
		int vCx = cx - pView->m_BaseRect.Width();
		int vCy = cy - pView->m_BaseRect.Height();
		CRect wndRect;
		CWnd* pWnd;// = this;
		while(1)
		{
			pWnd = GetNextWindow(GW_HWNDNEXT);
			if(pWnd == NULL || pWnd->m_hWnd == NULL) 
				break;

			pWnd->GetWindowRect(&wndRect);
			wndRect.right += vCx;
			wndRect.bottom += vCy;
			pWnd->MoveWindow(&wndRect);
			//MoveWindow(pWnd->m_hWnd,wndRect.left,wndRect.top,wndRect.Width(),wndRect.Height(),TRUE);
		}
	}

*/

}


void CServerStatus::RefreshListenerStatus()
{
	//Listener List
	c_ListenerStatusList.DeleteAllItems();

	CServerView* pView = (CServerView*)GetParent();

	LVITEM item;
//	char temp[ 0xff ];		
	int si = pView->m_nCurServerSet;	//ServerIndex(si)
	if(si < 0)
		return;

	ListenerInfo *pInfo2 = NULL;
	for(int i=0; i< m_pApp->m_ServerSetInfo[ si ].nListenerNum ; i++)
	{
		pInfo2 = &m_pApp->m_ListenerInfo[si][i];
				
		//Machine Name
		item.mask = LVIF_TEXT | LVIF_PARAM;
		item.pszText = pInfo2->MachineName;
		item.iItem = i;					//青锅龋 
		item.iSubItem = 0;				//凯锅龋 
		item.lParam = (long)pInfo2;
		c_ListenerStatusList.InsertItem(&item);

		//立加 惑怕 
		item.mask = LVIF_TEXT;
		item.iSubItem = 1;

		if(pInfo2->bStatus)
			item.pszText = "O";
		else
			item.pszText = "X";
		c_ListenerStatusList.SetItem(&item);

//		if(pInfo2->bStatus == 0)
//			c_ListenerStatusList.SetItemData(i,RGB(255,0,0));
//		else
//			c_ListenerStatusList.SetItemData(i,RGB(0,0,0));
	}
}

void CServerStatus::OnRefreshListener() 
{
	// TODO: Add your control notification handler code here
	if( !RIGHT(MASK_6) )	return;
	
	c_ListenerStatusList.DeleteAllItems();

	CServerView* pView = (CServerView*)GetParent();
	CChildFrame *pFrame = (CChildFrame*)pView->GetParent();		//览翠 皋技瘤 罐阑 橇饭烙狼 林家蔼 

	PACKET_REQUEST_ALL_LISTENER_INFO packet3(pFrame->m_nFrameID);
	g_pNet->Send(m_pApp->m_nCI[ pView->m_nCurServerSet ], (char*)&packet3, packet3.GetPacketSize());
}

void CServerStatus::OnConnectListener() 
{
	// TODO: Add your control notification handler code here
	if( !RIGHT(MASK_6) )	return;


	CServerView* pView = (CServerView*)GetParent();
	CChildFrame *pFrame = (CChildFrame*)pView->GetParent();		//览翠 皋技瘤 罐阑 橇饭烙狼 林家蔼 

	PACKET_CONNECT_ALL_LISTENER packet(pFrame->m_nFrameID);
	g_pNet->Send(GetConnection(), (char*)&packet, packet.GetPacketSize());

	//SLog(pView->m_nCurServerSet, ServerStatus :: Pushed Listener Connect Button!); //kyo020628
	//m_pApp->LogServer(pView->m_nCurServerSet, "User pushes ");
}

BYTE g_bProxyFlag = TRUE;
void CServerStatus::OnSelectProxy() 
{
	//kyo -----------------------------------------------------------------------------
	PACKET_RMSERVER_INFO packet;
	packet.bPtcl = MSG_RM_REQUEST_RMINFO;
	packet.bHeader = MSG_RM_REQUEST_RMINFO;
	
	DWORD ret_kyo; ret_kyo = g_pFt->Send((char*)&packet, sizeof( packet) );//kyo 020702
	
	
	//g_pFt->CloseListenSocket();
		
	//	g_pFt->CloseClientSocket();
	
	//------------------------------------------------------------------------------


	// TODO: Add your control notification handler code here
	char temp[ 0xff ];	memset(temp,0,0xff);
	
	int count = c_MainStatusList.GetItemCount();	
	for(int i=0; i<count; i++)
	{
		c_MainStatusList.GetItemText(i, 6, temp, 0xff);

		if(!strcmp(temp,"PROXY"))
		{
		
			c_MainStatusList.SetCheck(i,g_bProxyFlag);
		
			/*
			if(c_MainStatusList.GetCheck(i))	//Check Box 急琶登菌栏搁 
				c_MainStatusList.SetCheck(i,FALSE);
			else
				c_MainStatusList.SetCheck(i,TRUE);
			*/
		}
	}
	if(g_bProxyFlag && count > 0)
		g_bProxyFlag = FALSE;
	else 
		g_bProxyFlag = TRUE;
}

BYTE g_bAgentFlag = TRUE;
void CServerStatus::OnSelectAgent() 
{
	// TODO: Add your control notification handler code here
	char temp[ 0xff ];	memset(temp,0,0xff);
	
	int count = c_MainStatusList.GetItemCount();	
	for(int i=0; i<count; i++)
	{
		c_MainStatusList.GetItemText(i, 6, temp, 0xff);

		if(!strcmp(temp,"AGENT"))
		{
				
			c_MainStatusList.SetCheck(i,g_bAgentFlag);
			
/*
			if(c_MainStatusList.GetCheck(i))	//Check Box 急琶登菌栏搁 
				c_MainStatusList.SetCheck(i,FALSE);
			else
				c_MainStatusList.SetCheck(i,TRUE);
*/
		}
	}

	if(g_bAgentFlag && count > 0)
		g_bAgentFlag = FALSE;
	else 
		g_bAgentFlag = TRUE;
}

BYTE g_bDBDemon = TRUE;
void CServerStatus::OnSelectDbdemon() 
{
	// TODO: Add your control notification handler code here
	char temp[ 0xff ];	memset(temp,0,0xff);
	
	int count = c_MainStatusList.GetItemCount();	
	for(int i=0; i<count; i++)
	{
		c_MainStatusList.GetItemText(i, 6, temp, 0xff);

		if(!strcmp(temp,"DBDEMON"))
		{
			
			c_MainStatusList.SetCheck(i,g_bDBDemon);
				
			/*
			if(c_MainStatusList.GetCheck(i))	//Check Box 急琶登菌栏搁 
				c_MainStatusList.SetCheck(i,FALSE);
			else
				c_MainStatusList.SetCheck(i,TRUE);
			*/
		}
	}

	if(g_bDBDemon && count > 0)
		g_bDBDemon = FALSE;
	else 
		g_bDBDemon = TRUE;
}

BYTE g_bMapFlag = TRUE;
void CServerStatus::OnSelectMap() 
{
	// TODO: Add your control notification handler code here
	char temp[ 0xff ];	memset(temp,0,0xff);
	
	int count = c_MainStatusList.GetItemCount();	
	for(int i=0; i<count; i++)
	{
		c_MainStatusList.GetItemText(i, 6, temp, 0xff);

		if(!strcmp(temp,"MAP"))
		{
			c_MainStatusList.SetCheck(i,g_bMapFlag);
		}
		/*
		if(!strcmp(temp,"MAP"))
		{
			if(c_MainStatusList.GetCheck(i))	//Check Box 急琶登菌栏搁 
				c_MainStatusList.SetCheck(i,FALSE);
			else
				c_MainStatusList.SetCheck(i,TRUE);
		}
		*/
	}
	
	if(g_bMapFlag && count > 0)
		g_bMapFlag = FALSE;
	else 
		g_bMapFlag = TRUE;
}

BYTE g_bAllFlag;
void CServerStatus::OnSelectAll() 
{
	// TODO: Add your control notification handler code here
	char temp[ 0xff ];	memset(temp,0,0xff);
	
	int count = c_MainStatusList.GetItemCount();	
	for(int i=0; i<count; i++)
	{
		c_MainStatusList.GetItemText(i, 6, temp, 0xff);

		
		c_MainStatusList.SetCheck(i,g_bAllFlag);
		/*
		if(c_MainStatusList.GetCheck(i))	//Check Box 急琶登菌栏搁 
			c_MainStatusList.SetCheck(i,FALSE);
		else
			c_MainStatusList.SetCheck(i,TRUE);
		*/
	}
	if(g_bAllFlag && count > 0)
		g_bAllFlag = FALSE;
	else 
		g_bAllFlag = TRUE;
}

BOOL CServerStatus::CheckSameServer(DWORD dwPort)
{
	CServerView* pView = (CServerView*)GetParent();
		
	for(int i=0 ; i <= pView->m_TempSelected.GetUpperBound() ; i++)
	{
		DWORD value = pView->m_TempSelected.GetAt(i);
		
		if(value == dwPort)
		{
			return TRUE;
		}
	}
	return FALSE;
}

BOOL CServerStatus::RefreshSomeItem(WORD port, BOOL connect)
{
	//立加惑怕肺 盎脚 
	char str[10];
	DWORD dwPort = 0;
	LVITEM item;

	int count = c_MainStatusList.GetItemCount();	
	for(int i=0 ; i<count ; i++)
	{
		c_MainStatusList.GetItemText(i,1,str,10);
		dwPort = atoi(str);
		
		if(dwPort == port)
		{
			item.mask = LVIF_TEXT;
			item.iItem = i;					//青锅龋 
			item.iSubItem = 2;
			switch(connect)
			{
			case 14:	//Reload Complete
			case 1:
				item.pszText = "O";
				c_MainStatusList.SetItem(&item);
				break;

			case 0:
				item.pszText = "X";
				c_MainStatusList.SetItem(&item);
				break;

			case 13:	//Reloading
				item.pszText = "R";
				c_MainStatusList.SetItem(&item);
				break;
			}
			c_MainStatusList.Update(i);

			//<! BBD 040105		怕惫,富饭捞 辑滚惑怕 瘤盔侩
			((CMainFrame *)m_pApp->m_pMainWnd)->RefreshRMServerStatus();
			//> BBD 040105		怕惫,富饭捞 辑滚惑怕 瘤盔侩

			return TRUE;
		}
	}

	return FALSE;
}

//DEL void CServerStatus::OnListenerCheck() 
//DEL {
//DEL 	// TODO: Add your control notification handler code here
//DEL 	PACKET_CHECK_LISTENER_CONNECTION packet;
//DEL 	g_pNet->Send(GetConnection(), (char*)&packet, packet.GetPacketSize());
//DEL }

int  g_ListenerListSort[2] = {0,};		//8篮 漠烦 肮荐促.
void CServerStatus::OnColumnclickListenerList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(g_ListenerListSort[ pNMListView->iSubItem ] == ASC)
		g_ListenerListSort[ pNMListView->iSubItem ] = DESC;
	else
		g_ListenerListSort[ pNMListView->iSubItem ] = ASC;
	
	ListValue value;
	value.iSubItem = pNMListView->iSubItem;
	value.pListCtrl = &c_ListenerStatusList;
	value.iListCtrl = 6;		//1锅捞 MainServerStatusList..

	ListView_SortItems(c_ListenerStatusList.m_hWnd, pfnCompare, &value);
	*pResult = 0;
}

BYTE g_bX = TRUE;
void CServerStatus::OnSelectX() 
{
	// TODO: Add your control notification handler code here
	char temp[ 0xff ];	memset(temp,0,0xff);
	
	int count = c_MainStatusList.GetItemCount();	
	for(int i=0; i<count; i++)
	{
		c_MainStatusList.GetItemText(i, 2, temp, 0xff);

		if(!strcmp(temp,"X"))
		{
			c_MainStatusList.SetCheck(i,g_bX);
		}
	}
	if(g_bX && count > 0)
		g_bX = FALSE;
	else 
		g_bX = TRUE;
}

BYTE g_bO = TRUE;
void CServerStatus::OnSelectO() 
{
	// TODO: Add your control notification handler code here
	char temp[ 0xff ];	memset(temp,0,0xff);
	
	int count = c_MainStatusList.GetItemCount();	
	for(int i=0; i<count; i++)
	{
		c_MainStatusList.GetItemText(i, 2, temp, 0xff);

		if(!strcmp(temp,"O"))
		{
			c_MainStatusList.SetCheck(i,g_bO);
		}
	}
	if(g_bO && count > 0)
		g_bO = FALSE;
	else 
		g_bO = TRUE;	
}

⌨️ 快捷键说明

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