SmsManager/InfoDlg.cpp

345 lines
9.3 KiB
C++
Raw Normal View History

2025-01-14 10:46:18 +08:00
// 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();
//ȡ<>ù<EFBFBD><C3B9>ò<EFBFBD><C3B2><EFBFBD>
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
//<2F><>ʼ<EFBFBD><CABC>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("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; <20><>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>,160;<3B>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>, 80; <20><> <20><>,60;<3B><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>,75;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,75;IP<49><50>ַ,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; //<2F>Ѿ<EFBFBD>ˢ<EFBFBD>¹<EFBFBD>
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); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
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("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d <20><><EFBFBD><EFBFBD>IO:%d , δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO:%d <20><><EFBFBD><EFBFBD>IO:%d <20><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>:%d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>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); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
return true;
}
if (pHead->lFuncType == SMSFUNC_CLOSECLIENT)
{
MessageBox( _T("ǿ<EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>˳ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҪV2.90<EFBFBD><EFBFBD><EFBFBD>ϵIJ<EFBFBD>֧<EFBFBD>֣<EFBFBD>") ,_T("<EFBFBD><EFBFBD>Ϣ"), 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); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
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); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
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); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
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("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
else
m_wndList.SetItemText(i,1,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
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); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
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)) //û<>в鿴Ȩ<E9BFB4><C8A8>
return ;
CMenu menu;
menu.CreatePopupMenu();
long lItem = this->GetCurrentSelected();
if ( lItem >= 0 )
menu.AppendMenu(MF_STRING , MENU_INFO_CLOSE, _T(" ǿ<><C7BF><EFBFBD>߳<EFBFBD> ") );
else
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_INFO_CLOSE, _T(" ǿ<><C7BF><EFBFBD>߳<EFBFBD> ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_INFO_SQLCONNECT, _T(" ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_INFO_TD , _T(" ˢ<><CBA2>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_INFO_FIND, _T(" <20><><EFBFBD><EFBFBD>... ") );
menu.AppendMenu(MF_SEPARATOR );
//ˢ<><CBA2>
menu.AppendMenu(MF_STRING , MENU_INFO_REFRESH, _T(" ˢ<>µ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD> ") );
//<2F><>ʾ<EFBFBD>˵<EFBFBD>
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;
}