345 lines
9.3 KiB
C++
345 lines
9.3 KiB
C++
// InfoDlg.cpp : implementation file
|
||
//
|
||
|
||
#include "stdafx.h"
|
||
#include "smsmanager.h"
|
||
#include "InfoDlg.h"
|
||
|
||
#ifdef _DEBUG
|
||
#define new DEBUG_NEW
|
||
#undef THIS_FILE
|
||
static char THIS_FILE[] = __FILE__;
|
||
#endif
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CInfoDlg dialog
|
||
|
||
#include "MainFrm.h"
|
||
#include "ProcessSocket.h"
|
||
#include "DLG_User_Find.h"
|
||
|
||
CInfoDlg::CInfoDlg(CWnd* pParent /*=NULL*/)
|
||
: CDialog(CInfoDlg::IDD, pParent)
|
||
{
|
||
//{{AFX_DATA_INIT(CInfoDlg)
|
||
//}}AFX_DATA_INIT
|
||
|
||
m_bInit = false;
|
||
m_bRefresh = false;
|
||
}
|
||
|
||
|
||
void CInfoDlg::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialog::DoDataExchange(pDX);
|
||
//{{AFX_DATA_MAP(CInfoDlg)
|
||
DDX_Control(pDX, IDC_INFO_S1, m_B_S1);
|
||
DDX_Control(pDX, IDC_INFO_MSG, m_E_Msg);
|
||
DDX_Control(pDX, IDC_INFO_LIST, m_wndList);
|
||
//}}AFX_DATA_MAP
|
||
}
|
||
|
||
|
||
BEGIN_MESSAGE_MAP(CInfoDlg, CDialog)
|
||
//{{AFX_MSG_MAP(CInfoDlg)
|
||
ON_WM_SIZE()
|
||
ON_NOTIFY(NM_RCLICK, IDC_INFO_LIST, OnRclickInfoList)
|
||
//}}AFX_MSG_MAP
|
||
ON_COMMAND( MENU_INFO_REFRESH , On_User_Refresh )
|
||
ON_COMMAND( MENU_INFO_SQLCONNECT , On_User_SqlConnect )
|
||
ON_COMMAND( MENU_INFO_TD , On_User_TD )
|
||
ON_COMMAND( MENU_INFO_CLOSE , On_User_Close )
|
||
ON_COMMAND( MENU_INFO_FIND , On_User_Find )
|
||
END_MESSAGE_MAP()
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// CInfoDlg message handlers
|
||
|
||
void CInfoDlg::OnSize(UINT nType, int cx, int cy)
|
||
{
|
||
CDialog::OnSize(nType, cx, cy);
|
||
if ( m_bInit )
|
||
{
|
||
m_wndList.MoveWindow( 0 , 0 , cx,cy-220);
|
||
m_B_S1.MoveWindow( 0 , cy-217 , cx , 17 );
|
||
m_E_Msg.MoveWindow( 0 , cy-200 , cx , 200 );
|
||
}
|
||
}
|
||
|
||
BOOL CInfoDlg::OnInitDialog()
|
||
{
|
||
CDialog::OnInitDialog();
|
||
|
||
//È¡µÃ¹²ÓòÎÊý
|
||
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
|
||
this->GetParent()->GetParentFrame();
|
||
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
|
||
m_pSocket = &m_pMainFrame->m_Socket;
|
||
|
||
//³õʼ»¯List
|
||
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
|
||
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_INFO) );
|
||
m_wndList.SubClassWindow2();
|
||
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÆóÒµÃû³Æ,160;Óû§Ãû³Æ, 80; °æ ±¾,60;µÇ¼´ÎÊý,75;ÉÏÏßʱ¼ä,75;IPµØÖ·,110; A,30; B,70; C,70; D,70;"));
|
||
m_wndList.SetGridLines(true);
|
||
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
|
||
|
||
|
||
m_bInit = true;
|
||
|
||
return TRUE; // return TRUE unless you set the focus to a control
|
||
// EXCEPTION: OCX Property Pages should return FALSE
|
||
}
|
||
|
||
BOOL CInfoDlg::RefreshInfo()
|
||
{
|
||
#ifndef SMSMANAGER_KF
|
||
if ( !m_pMainFrame->GetUserPurview(PURVIEW_INFO_SEE,false) )
|
||
{
|
||
return false;
|
||
}
|
||
#endif
|
||
/*
|
||
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE) )
|
||
{
|
||
return false;
|
||
}
|
||
*/
|
||
m_pMainFrame->SendFrame(SMSFUNC_GETINFO,NULL,0);
|
||
return true;
|
||
}
|
||
|
||
BOOL CInfoDlg::ProcessSocket(Socket_Head *pHead)
|
||
{
|
||
if (pHead->lFuncType == SMSFUNC_GETINFO)
|
||
{
|
||
m_bRefresh = true; //ÒѾˢйý
|
||
ANS_GetInfo * pInfo = (ANS_GetInfo *)pHead->pFrame;
|
||
ANS_GetInfoData * pData = (ANS_GetInfoData *)(pHead->pFrame+sizeof(ANS_GetInfo));
|
||
m_E_Msg.SetWindowText( pInfo->szMsg );
|
||
m_wndList.ShowWindow(SW_HIDE); //¼Ó¿ìÏÔʾËÙ¶È
|
||
m_wndList.DeleteAllItems();
|
||
TCHAR Buf[256];
|
||
for ( int i=0;i<pInfo->lCount-1;i++ )
|
||
{
|
||
_stprintf(Buf , _T("%d") , i+1 );
|
||
m_wndList.InsertItem( i , Buf , 0 );
|
||
m_wndList.SetItemText(i,1,pData->szCorpName);
|
||
m_wndList.SetItemText(i,2,pData->szLoginName);
|
||
_stprintf( Buf , _T("%6d") , pData->lVer );
|
||
m_wndList.SetItemText(i,3,Buf);
|
||
m_wndList.SetItemText(i,4,_itot(pData->lLoginCount,Buf,10));
|
||
_stprintf( Buf , _T("%02d:%02d:%02d") , pData->tLoginTime.wHour,pData->tLoginTime.wMinute,pData->tLoginTime.wSecond);
|
||
m_wndList.SetItemText(i,5,Buf);
|
||
m_wndList.SetItemText(i,6,pData->szIP);
|
||
m_wndList.SetItemText(i,7,_itot(pData->ucUserType,Buf,10));
|
||
m_wndList.SetItemText(i,8,_itot(pData->lUserID,Buf,10));
|
||
pData ++;
|
||
}
|
||
|
||
ANS_GetInfoData2 * pData2 = (ANS_GetInfoData2 *)pData;
|
||
_stprintf( Buf , _T("ÔÚÏßÈËÊý:%d ÒÑÓÃIO:%d , δÁ¬½ÓÓÃIO:%d ¿ÕÏÐIO:%d ÒÑÓÃÏß³Ì:%d ¿ÕÏÐÏß³Ì:%d ÒÑÁ¬½ÓSQL:%d") , pData2->lCount,pData2->lUCount,pData2->lWLJCount,pData2->lKCount,pData2->lPUCount,pData2->lPKCount,pData2->lPLCount );
|
||
m_B_S1.SetWindowText(Buf);
|
||
m_wndList.ShowWindow(SW_SHOW); //¼Ó¿ìÏÔʾËÙ¶È
|
||
return true;
|
||
}
|
||
if (pHead->lFuncType == SMSFUNC_CLOSECLIENT)
|
||
{
|
||
MessageBox( _T("Ç¿ÖÆÌß³ö¿Í»§¶Ë³É¹¦£¬µ«ÒªV2.90ÒÔÉϵIJÅÖ§³Ö£¡") ,_T("ÐÅÏ¢"), MB_ICONINFORMATION );
|
||
return true;
|
||
}
|
||
if (pHead->lFuncType == SMSFUNC_SQLCONNECT)
|
||
{
|
||
ANS_SqlConnect * pConnect = (ANS_SqlConnect *)pHead->pFrame;
|
||
ANS_SqlConnectData * pData = (ANS_SqlConnectData *)(pHead->pFrame+sizeof(ANS_SqlConnect));
|
||
m_wndList.ShowWindow(SW_HIDE); //¼Ó¿ìÏÔʾËÙ¶È
|
||
m_wndList.DeleteAllItems();
|
||
|
||
TCHAR Buf[256];
|
||
for ( int i=0;i<pConnect->lCount;i++ )
|
||
{
|
||
_stprintf(Buf , _T("%d") , pData->lIndex );
|
||
m_wndList.InsertItem( i , Buf , 0 );
|
||
_stprintf(Buf , _T("%d") , pData->lUserID );
|
||
m_wndList.SetItemText(i,1,Buf);
|
||
_stprintf(Buf , _T("%d") , pData->lFuncID );
|
||
m_wndList.SetItemText(i,2,Buf);
|
||
_stprintf( Buf , _T("%d") , pData->bUse );
|
||
m_wndList.SetItemText(i,3,Buf);
|
||
_stprintf( Buf , _T("%d") , pData->dwUseTime );
|
||
m_wndList.SetItemText(i,4,Buf);
|
||
_stprintf( Buf , _T("%6d") , pData->dwEndUseTime );
|
||
m_wndList.SetItemText(i,5,Buf);
|
||
m_wndList.SetItemText(i,6,pData->szSQL1);
|
||
m_wndList.SetItemText(i,7,pData->szSQL2);
|
||
pData ++;
|
||
}
|
||
m_wndList.ShowWindow(SW_SHOW); //¼Ó¿ìÏÔʾËÙ¶È
|
||
return true;
|
||
}
|
||
if (pHead->lFuncType == SMSFUNC_GETTD)
|
||
{
|
||
ANS_GetTD * pConnect = (ANS_GetTD *)pHead->pFrame;
|
||
ANS_GetTDData * pData = (ANS_GetTDData *)(pHead->pFrame+sizeof(ANS_GetTD));
|
||
m_wndList.ShowWindow(SW_HIDE); //¼Ó¿ìÏÔʾËÙ¶È
|
||
m_wndList.DeleteAllItems();
|
||
|
||
TCHAR Buf[256];
|
||
for ( int i=0;i<pConnect->lCount;i++ )
|
||
{
|
||
_stprintf(Buf , _T("%d") , i+1 );
|
||
m_wndList.InsertItem(i,Buf,0);
|
||
if ( pData->bUse )
|
||
m_wndList.SetItemText(i,1,_T("ÆôÓÃ"));
|
||
else
|
||
m_wndList.SetItemText(i,1,_T("½ûÓÃ"));
|
||
m_wndList.SetItemText(i,2,pData->szStatus);
|
||
m_wndList.SetItemText(i,3,pData->szName);
|
||
m_wndList.SetItemText(i,4,pData->szTDTime);
|
||
m_wndList.SetItemText(i,5,pData->szSend);
|
||
m_wndList.SetItemText(i,6,pData->szFail);
|
||
m_wndList.SetItemText(i,7,pData->szPer);
|
||
m_wndList.SetItemText(i,8,pData->szSpeed);
|
||
m_wndList.SetItemText(i,9,pData->szRefreshTime);
|
||
m_wndList.SetItemText(i,10,pData->szFileName);
|
||
pData ++;
|
||
}
|
||
m_wndList.ShowWindow(SW_SHOW); //¼Ó¿ìÏÔʾËÙ¶È
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
BOOL CInfoDlg::ReShow(BOOL bRefresh)
|
||
{
|
||
ShowWindow( SW_SHOW );
|
||
if ( bRefresh || !m_bRefresh )
|
||
{
|
||
RefreshInfo();
|
||
}
|
||
return true;
|
||
}
|
||
|
||
BOOL CInfoDlg::ReHide()
|
||
{
|
||
ShowWindow(SW_HIDE);
|
||
return true;
|
||
}
|
||
|
||
void CInfoDlg::Close()
|
||
{
|
||
|
||
|
||
}
|
||
|
||
void CInfoDlg::ShowRMenu()
|
||
{
|
||
if (!m_pMainFrame->GetUserPurview(PURVIEW_INFO_SEE,false)) //ûÓв鿴ȨÏÞ
|
||
return ;
|
||
|
||
CMenu menu;
|
||
menu.CreatePopupMenu();
|
||
|
||
long lItem = this->GetCurrentSelected();
|
||
if ( lItem >= 0 )
|
||
menu.AppendMenu(MF_STRING , MENU_INFO_CLOSE, _T(" Ç¿ÖÆÌß³ö ") );
|
||
else
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_INFO_CLOSE, _T(" Ç¿ÖÆÌß³ö ") );
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
menu.AppendMenu(MF_STRING , MENU_INFO_SQLCONNECT, _T(" Ë¢ÐÂÁ¬½ÓÊý¾Ý ") );
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
menu.AppendMenu(MF_STRING , MENU_INFO_TD , _T(" Ë¢ÐÂͨµÀÊý¾Ý ") );
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
menu.AppendMenu(MF_STRING , MENU_INFO_FIND, _T(" ²éÕÒ... ") );
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
//Ë¢ÐÂ
|
||
menu.AppendMenu(MF_STRING , MENU_INFO_REFRESH, _T(" ˢеǼÊý¾Ý ") );
|
||
|
||
//ÏÔʾ²Ëµ¥
|
||
POINT pt ;
|
||
::GetCursorPos( &pt );
|
||
//this->ClientToScreen( &pt);
|
||
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
|
||
menu.DestroyMenu();
|
||
}
|
||
void CInfoDlg::On_User_Refresh()
|
||
{
|
||
RefreshInfo();
|
||
}
|
||
void CInfoDlg::On_User_Find()
|
||
{
|
||
DLG_User_Find dlg(this);
|
||
if ( dlg.DoModal() == IDOK )
|
||
{
|
||
BOOL bFirst = true;
|
||
m_wndList.UnSelectAllItems();
|
||
long lCount = m_wndList.GetItemCount();
|
||
for ( int i=0 ; i<lCount ;i++ )
|
||
{
|
||
CString str = m_wndList.GetItemText(i,1);
|
||
CString str2= m_wndList.GetItemText(i,2);
|
||
if ( str.Find(dlg.m_strName)>=0 ||
|
||
str2.Find(dlg.m_strName)>=0)
|
||
{
|
||
m_wndList.SelectItem(i);
|
||
if ( bFirst )
|
||
{
|
||
m_wndList.EnsureVisible(i,true);
|
||
bFirst = false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
void CInfoDlg::On_User_SqlConnect()
|
||
{
|
||
REQ_SqlConnect * pConnect = new REQ_SqlConnect;
|
||
memset(pConnect,0,sizeof(REQ_SqlConnect));
|
||
m_pMainFrame->SendFrame(SMSFUNC_SQLCONNECT,(BYTE*)pConnect,sizeof(REQ_SqlConnect));
|
||
}
|
||
void CInfoDlg::On_User_TD()
|
||
{
|
||
REQ_GetTD * pGetTD = new REQ_GetTD;
|
||
memset(pGetTD,0,sizeof(REQ_GetTD));
|
||
m_pMainFrame->SendFrame(SMSFUNC_GETTD,(BYTE*)pGetTD,sizeof(REQ_GetTD));
|
||
}
|
||
void CInfoDlg::On_User_Close()
|
||
{
|
||
|
||
long lItem = this->GetCurrentSelected();
|
||
if ( lItem < 0 )
|
||
return ;
|
||
|
||
if ( !m_pMainFrame->GetUserPurview(PURVIEW_INFO_SEE) )
|
||
{
|
||
return ;
|
||
}
|
||
|
||
REQ_CloseClient * pClose = new REQ_CloseClient;
|
||
memset(pClose,0,sizeof(REQ_CloseClient));
|
||
CString strTemp;
|
||
strTemp = m_wndList.GetItemText(lItem,7);
|
||
pClose->ucUserType = _ttol(strTemp);
|
||
strTemp = m_wndList.GetItemText(lItem,8);
|
||
pClose->lUserID = _ttol(strTemp);
|
||
|
||
m_pMainFrame->SendFrame(SMSFUNC_CLOSECLIENT,(BYTE*)pClose,sizeof(REQ_CloseClient));
|
||
}
|
||
|
||
void CInfoDlg::OnRclickInfoList(NMHDR* pNMHDR, LRESULT* pResult)
|
||
{
|
||
ShowRMenu();
|
||
|
||
*pResult = 0;
|
||
}
|
||
|
||
long CInfoDlg::GetCurrentSelected()
|
||
{
|
||
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
|
||
if ( pos )
|
||
{
|
||
return m_wndList.GetNextSelectedItem(pos);
|
||
}
|
||
return -1;
|
||
}
|