📄 serverview.cpp
字号:
// 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 + -