📄 serverstatus.cpp
字号:
}
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 + -