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

📄 serverview.cpp

📁 网络游戏龙族服务器端管理工具 rmtool 源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ServerView.cpp : implementation file
//

#include "stdafx.h"
#include "rmtool.h"
#include "ServerView.h"
#include "ChildFrm.h"
#include "RMToolDoc.h"
#include "packet.h"
#include "MainFrm.h"
#include "AMS.h"

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

/////////////////////////////////////////////////////////////////////////////
// CServerView

IMPLEMENT_DYNCREATE(CServerView, CFormView)

CServerView::CServerView()
	: CFormView(CServerView::IDD)
{
	//{{AFX_DATA_INIT(CServerView)
	m_szConnectInfo = _T("");
	m_bIsUMS = FALSE;
	//}}AFX_DATA_INIT
	m_nCurServerSet = -1;		//辑滚悸捞 酒公巴档 急琶 救等 惑怕甫 -1栏肺 窍磊 
	m_minWidth = 0;
	m_minHeight = 0; 
	m_bMaximize = FALSE;
//	m_bReceivedServerStatus = 0;
}

CServerView::~CServerView()
{

}

void CServerView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CServerView)
	DDX_Control(pDX, IDC_CHECK_UMS, m_ctrlCheckUMS);		// BBD 040330
	DDX_Control(pDX, IDC_PROXY_CONNECT, c_ProxyConnect);
	DDX_Control(pDX, IDC_TAB_SERVER, c_Tab);
	DDX_Control(pDX, IDC_SERVERSET, c_ServerSet);
	DDX_Text(pDX, IDC_CONNECT_INFO, m_szConnectInfo);
	DDX_Check(pDX, IDC_CHECK_UMS, m_bIsUMS);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CServerView, CFormView)
	//{{AFX_MSG_MAP(CServerView)
	ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_SERVER, OnSelchangeTabServer)
	ON_WM_SIZE()
	ON_CBN_SELCHANGE(IDC_SERVERSET, OnSelchangeServerset)
	ON_BN_CLICKED(IDC_PROXY_CONNECT, OnProxyConnect)
	ON_NOTIFY(TCN_KEYDOWN, IDC_TAB_SERVER, OnKeydownTabServer)
	ON_WM_TIMER()
	ON_WM_CREATE()
	ON_WM_GETMINMAXINFO()
	ON_BN_CLICKED(IDC_CHECK_UMS, OnCheckUms)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CServerView diagnostics

#ifdef _DEBUG
void CServerView::AssertValid() const
{
	CFormView::AssertValid();
}

void CServerView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CServerView message handlers

void CServerView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	m_pApp = (CRMToolApp*)AfxGetApp();
	//CRMToolDoc *pDoc = (CRMToolDoc*)GetDocument();
	//函荐 檬扁拳 
	m_pParentFrame = NULL;
	m_nCurView = 0;

	//Frame阑 FormView Resource农扁俊 嘎霸 
	ResizeParentToFit(FALSE);
	ResizeParentToFit(TRUE);
	GetParentFrame()->RecalcLayout();

	//FormView Window 啊厘磊府 Border 绝局扁..
	//SWP_NOSIZE   
	ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);
	ModifyStyle(WS_BORDER,0,SWP_FRAMECHANGED);
	m_pParentFrame = (CChildFrame*)GetParentFrame();

	CRect rect;
	m_pParentFrame->GetClientRect(&rect);
	//rect.top += 30;
	m_pParentFrame->m_minHeight = rect.Height();
	m_pParentFrame->m_minWidth = rect.Width();


	//[] 救狼 滴磊府 箭磊甫 Frame 牢侥 ID肺 窍磊..
	CChildFrame *pChild = (CChildFrame*)GetParent();
	m_pApp->m_ServerDocCount++;	
	pChild->m_nFrameID = m_pApp->m_ServerDocCount;	//橇饭烙俊 磊扁 Frame ID 悸泼 
	pChild->DragAcceptFiles();
	
	CString str;
	str.Format("[S%02d] Raja Server Tool",m_pApp->m_ServerDocCount); 
	pChild->SetWindowText(str);

	
	//TabControl阑 扩档快 荤捞令俊 嘎霸 农扁 炼沥 
	CRect FrameRect;
	m_pParentFrame->GetClientRect(&FrameRect);

	FrameRect.top += 30; 
	c_Tab.MoveWindow(&FrameRect);
	
	//Tab Control 檬扁拳 
	TC_ITEM		item;
	char*		itemlist[3] = {"States", "Control", "Pacth"};

	for(int i=0; i<3; i++ )
	{
		item.mask = TCIF_TEXT;
		item.pszText = itemlist[i];
		c_Tab.InsertItem( i, &item );
	}
	
	c_ServerSet.InsertString(0,"------ Select Serverset -----");
	for(i=1 ; i<=CURRENT_SERVERSET_NUM; i++)
	{
		c_ServerSet.InsertString(i,m_pApp->m_ServerSetInfo[ i - 1 ].szSetName);
	}

	
	//DefaultServerSet阑 悸泼 救沁阑锭 绊福绰 芒阑 顿款促. 
	/*
	int nSet;
	if(m_pApp->m_DefaultServerSetIndex == 0 && m_nCurServerSet == -1)
	{
		CSelectServersetDlg dlg;
		nSet = dlg.DoModal();
	}
	else
		nSet = m_pApp->m_DefaultServerSetIndex;
	
	c_ServerSet.SetCurSel( nSet );	
	m_nCurServerSet = nSet - 1;

	if(m_nCurServerSet < 0)
		MessageBox("Invalid Serverset");
	*/

	// 021111 DoModal惑磊啊 磊操 唱坷扁 锭巩俊 碍力肺 1蔼阑 技泼茄促.
	int nSet=1;
	c_ServerSet.SetCurSel( nSet );	
	m_nCurServerSet = nSet - 1;

	if(m_pApp->m_nCI[ m_nCurServerSet ])
	{
		c_ProxyConnect.EnableWindow( FALSE );
		m_szConnectInfo = "Connected";
	}
	else
	{
		c_ProxyConnect.EnableWindow( TRUE );
		m_szConnectInfo = "Disconnected";
	}


	//促捞倔肺弊 积己 
	m_ServerStatusDlg.Create(IDD_SERVER_STATUS, this);
	m_ServerControlDlg.Create(IDD_VIEW_SERVER_CONTROL, this);	
	m_ServerPatchDlg.Create(IDD_VIEW_SERVER_PATCH,this);

	//扁夯 贸澜栏肺 躲 ServerStatus 芒阑 焊咯绊, Tab 牧飘费 困俊 Dialog积己 棺 荤捞令 困摹 炼沥  
	FitDlgInView(m_ServerStatusDlg.m_hWnd, &c_Tab);		//Tab牧飘费俊 促捞倔肺弊 农扁 迭 嘎霸 炼沥 
	SetBaseClientSize(&c_Tab);							//贸澜 积己矫狼 Client Size甫 悸泼..  
	m_ServerStatusDlg.ShowWindow(SW_SHOW);
	m_nCurView = 0;		

	UpdateData(FALSE);
/*
	m_ServerStatusDlg.SetForegroundWindow();
	m_ServerStatusDlg.SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
	for(int nCount=1; nCount < m_nNumberOfPages; nCount++){
		m_tabPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
	}
*/

	if( !SetTimer( ID_UMS, LOOP_TIME, NULL ) )
	{
		AfxMessageBox( "ERROR :: Cann't Create UMS Timer!!! \n Check void CServerView::OnInitialUpdate() " );			
	}

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

	//<! BBD 040330		default肺 UMS 荤侩且巴牢瘤 眉农
	char path[ MAX_PATH ];
	__PATH
	int nUseType;
	nUseType = ::GetPrivateProfileInt("default", "UseSMS", 0, path);

	if(nUseType)	// ini狼 悸泼俊 蝶扼
	{
		m_bIsUMS = false;	// OnCheckUms俊辑 第笼绢 瘤骨肺 芭操肺 矫累茄促
		m_ctrlCheckUMS.SetCheck(BST_CHECKED);
	}
	else
	{
		m_bIsUMS = true;	// OnCheckUms俊辑 第笼绢 瘤骨肺 芭操肺 矫累茄促
		m_ctrlCheckUMS.SetCheck(BST_UNCHECKED);
	}
	OnCheckUms();	// UMS 荤侩阑 檬扁拳
	//> BBD 040330	default肺 UMS 荤侩且巴牢瘤 眉农
}



void CServerView::FitDlgInView(HWND hWnd, CTabCtrl *pCtrl)
{
	CRect TabRect,ItemRect;			//TabRect篮 徘 牧飘费 傈眉 康开, ItemRect篮 困俊 徘何盒父..
	pCtrl->GetClientRect(&TabRect);
	pCtrl->GetItemRect(0, &ItemRect);
	
	int left,top,width,height;

	left = TabRect.left + 5;
	top = TabRect.top + 5 + 30/*Tab Control困俊 后沫 巢败初篮 父怒*/;
	width = TabRect.Width() - 10;
	height = TabRect.Height() - ItemRect.Height() - 13;

	::MoveWindow(hWnd,left, top, width, height, TRUE);
}



void CServerView::OnSelchangeTabServer(NMHDR* pNMHDR, LRESULT* pResult) 
{
	pNMHDR;
	// TODO: Add your control notification handler code here
	int nTabNum = c_Tab.GetCurSel();

	ChangeView(nTabNum);

	*pResult = 0;
}

void CServerView::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);


	/*int j = nType;
	if(nType == SIZE_MAXSHOW)
	{
		int k=0;

	}*/

	/*
	if(nType == 0)
	{
	CRect FrameRect;
	m_pParentFrame = (CChildFrame*)GetParentFrame();
	m_pParentFrame->GetClientRect(&FrameRect);

	FrameRect.top += 30; 
	c_Tab.MoveWindow(&FrameRect);
	}
*/


	// TODO: Add your message handler code here
	//CWnd *pWnd =  GetDlgItem(IDC_TAB_SERVER);
	if(c_Tab.m_hWnd && m_pParentFrame)
	{
		CRect FrameRect;
		m_pParentFrame->GetClientRect(&FrameRect);
		FrameRect.top += 30;
		c_Tab.MoveWindow(&FrameRect);
//		c_Tab.MoveWindow(0,0,cx,cy);
		if( cx-8 < 0 || cy-58 < 0 )
		{
			return;
		}		

		m_ServerStatusDlg.MoveWindow(4, 33, cx-8, cy-58);
		m_ServerControlDlg.MoveWindow(4, 33, cx-8, cy-58);
		m_ServerPatchDlg.MoveWindow(4, 33, cx-8, cy-58);
	}
	
}

//View 盖困俊 乐绰 辑滚悸 急琶 霓焊冠胶 官曹锭..... 
void CServerView::OnSelchangeServerset() 
{
	// TODO: Add your control notification handler code here
	int index = c_ServerSet.GetCurSel();

	m_nCurServerSet = index - 1;	//1锅 捞 惑侩, 2锅捞 秋墨匙胶 , 3锅 俺惯磊 抛胶飘 

		
	if(!m_pApp->m_nCI[ m_nCurServerSet ] || CB_ERR == index )
	{
		MessageBox("Cann't Connect this Server Proxy.");
		return;
	}
	
	
	
	CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();

	//m_pApp->m_nCI[ m_nCurServerSet ]狼 咯何
	if(GetConnection())
		pFrame->SetAllServerViewConnectInfo(TRUE, m_nCurServerSet);
	else
		pFrame->SetAllServerViewConnectInfo(FALSE, m_nCurServerSet);

	//泅犁 急琶登菌带巴 促 瘤快绊..
	m_TempSelected.RemoveAll();

	//RemoveItemsFromAllListControl();
	m_ServerStatusDlg.RequestCurrentServersetInfo();
}

void CServerView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) 
{
	// TODO: Add your specialized code here and/or call the base class
	//int k=0;
	CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView);

	if(bActivate)
	{
		switch(m_nCurView)
		{
		case 0:
			{
				m_ServerStatusDlg.Invalidate();
				m_ServerStatusDlg.SetForegroundWindow();
			}
			break;

		case 1:
			{
				m_ServerControlDlg.Invalidate();
				m_ServerControlDlg.SetForegroundWindow();
			}
			break;
			
		case 2:
			{
				m_ServerPatchDlg.Invalidate();
				m_ServerPatchDlg.SetForegroundWindow();
			}
			break;

		}
	}


}

void CServerView::ChangeView(int nTabNum)
{
	switch( nTabNum )
	{
		//ServerStatus徘 
		case 0:
			{
				m_ServerControlDlg.ShowWindow(SW_HIDE);
				m_ServerPatchDlg.ShowWindow(SW_HIDE);
				m_ServerStatusDlg.ShowWindow(SW_SHOW);
				FitDlgInView(m_ServerStatusDlg.m_hWnd, &c_Tab);
				m_nCurView = 0;
			}
			break;
		
		//Server Control 徘 
		case 1:
			{
				m_ServerStatusDlg.ShowWindow(SW_HIDE);
				m_ServerPatchDlg.ShowWindow(SW_HIDE);
				m_ServerControlDlg.ShowWindow(SW_SHOW);
				FitDlgInView(m_ServerControlDlg.m_hWnd, &c_Tab);
				m_nCurView = 1;
			}
			break;

		//Patch 徘 
		case 2:
			{
				m_ServerStatusDlg.ShowWindow(SW_HIDE);
				m_ServerControlDlg.ShowWindow(SW_HIDE);
				m_ServerPatchDlg.ShowWindow(SW_SHOW);
				FitDlgInView(m_ServerPatchDlg.m_hWnd, &c_Tab);
				m_nCurView = 2;
			}
			break;
	}
	
	c_Tab.SetCurSel(nTabNum);
}


void CServerView::OnProxyConnect() 
{
	// TODO: Add your control notification handler code here
	

⌨️ 快捷键说明

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