SmsManager/InfoDlg.cpp
2025-01-14 10:46:18 +08:00

345 lines
9.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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;
}