// 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 *)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;ilCount-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以上的才支持!") ,_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;ilCount;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;ilCount;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=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; }