// ListDlg.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "K_MsgList.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CK_MsgList dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_SmsLogSee.h" #include "DLG_HZB_Export.h" #include "SmsManagerDoc.h" #include "UserView.h" #include "DLG_Corp_Oper_Open.h" CK_MsgList::CK_MsgList(CWnd* pParent /*=NULL*/) : CDialog(CK_MsgList::IDD, pParent) { //{{AFX_DATA_INIT(CK_MsgList) m_lTime = -1; m_lType = -1; //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; // m_bProcess = false; m_lQueryCorpID = 0; m_lMsgCount = 0; } void CK_MsgList::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CK_MsgList) DDX_Control(pDX, IDC_LIST_CORPID, m_E_CorpID); DDX_Control(pDX, IDC_LIST_TYPE, m_L_Type); DDX_Control(pDX, IDC_LIST_TIME, m_L_Time); DDX_Control(pDX, IDC_LIST_S1, m_S_S1); DDX_Control(pDX, IDC_LIST_LIST, m_wndList); DDX_CBIndex(pDX, IDC_LIST_TIME, m_lTime); DDX_CBIndex(pDX, IDC_LIST_TYPE, m_lType); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CK_MsgList, CDialog) //{{AFX_MSG_MAP(CK_MsgList) ON_WM_SIZE() ON_NOTIFY(NM_DBLCLK, IDC_LIST_LIST, OnDblclkListList) ON_NOTIFY(NM_RCLICK, IDC_LIST_LIST, OnRclickListList) ON_BN_CLICKED(IDC_LIST_QUERY, OnListQuery) ON_CBN_SELCHANGE(IDC_LIST_TYPE, OnSelchangeListType) //}}AFX_MSG_MAP ON_COMMAND(MENU_LIST_SEE , On_User_See ) ON_COMMAND(MENU_LIST_CORPLIST , On_User_CorpList ) ON_COMMAND(MENU_LIST_CORPOFF , On_User_CorpOFF ) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CK_MsgList message handlers BOOL CK_MsgList::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CK_MsgList::ReHide() { ShowWindow( SW_HIDE ); return true; } BOOL CK_MsgList::RefreshInfo() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) ) { return false; } #ifndef SMSMANAGER_KF if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE) ) { return false; } #endif return true; } BOOL CK_MsgList::ProcessSocket(Socket_Head *pHead) { //取清单 if (pHead->lFuncType == SMSFUNC_MSGLIST) { ANS_MsgList * pList = (ANS_MsgList *)pHead->pFrame; ANS_MsgListData * pData = (ANS_MsgListData *)(pHead->pFrame+sizeof(ANS_MsgList)); if ( pList->lType == 0 || pList->lType == 2 || pList->lType == 3) { CString strTemp; strTemp.Format( _T("查询结果 (%d/%d)") , pList->lPageCount,pList->lPageAll ); m_S_S1.SetWindowText( strTemp ); //添加到List long lCount = m_wndList.GetItemCount(); TCHAR szBuf[512]={0}; for ( int i = 0 ; i< pList->lCount;i++) { ANS_MsgListData * pNewData = new ANS_MsgListData; *pNewData = *pData; POSITION pos = m_ListData.AddTail(pNewData); //m_wndList.SetHeadings(_T("序号,40; 企业ID,60;短信内容,1000;")); m_wndList.InsertItem( lCount+i,_itot(lCount+i+1,szBuf,10),0); _stprintf(szBuf , _T("%d") , pData->lCorpID ); m_wndList.SetItemText(lCount+i,1,szBuf); m_wndList.SetItemText(lCount+i,2,_itot(pData->lCount,szBuf,10)); m_wndList.SetItemText(lCount+i,3,pData->szMsg); m_lMsgCount += pData->lCount; m_wndList.SetItemData(lCount+i,(DWORD_PTR)(pos) ); pData++; } if ( pList->lPageCount==pList->lPageAll ) { m_wndList.InsertItem( lCount+i,_T(""),0);i++; m_wndList.InsertItem( lCount+i,_T("合计"),0); m_wndList.SetItemText(lCount+i,2,_itot(m_lMsgCount,szBuf,10)); } } if ( pList->lType == 1 ) { CString strTemp; strTemp.Format( _T("查询结果 (%d/%d)") , pList->lPageCount,pList->lPageAll ); m_S_S1.SetWindowText( strTemp ); //添加到List long lCount = m_wndList.GetItemCount(); TCHAR szBuf[512]={0}; for ( int i = 0 ; i< pList->lCount;i++) { ANS_MsgListData * pNewData = new ANS_MsgListData; *pNewData = *pData; POSITION pos = m_ListData.AddTail(pNewData); // m_wndList.SetHeadings(_T("序号,50; 企业ID,70;反骚扰级别,80,手机号码,130;短信内容,1000;")); m_wndList.InsertItem( lCount+i,_itot(lCount+i+1,szBuf,10),0); _stprintf(szBuf , _T("%d") , pData->lCorpID ); m_wndList.SetItemText(lCount+i,1,szBuf); _stprintf(szBuf, _T("%4d"), pData->lCheckResend); m_wndList.SetItemText(lCount+i,2, szBuf); m_wndList.SetItemText(lCount+i,3,pData->szMobile); m_wndList.SetItemText(lCount+i,4,pData->szMsg); m_wndList.SetItemData(lCount+i,(DWORD_PTR)(pos) ); pData++; } } return true; } return false; } BOOL CK_MsgList::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_LIST) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,50; 企业ID,80;数量,80;短信内容,1000;")); m_wndList.SetGridLines(true); // m_wndList.SetImageList(&m_Image,LVSIL_SMALL); m_bInit = true; m_lType=0; UpdateData(false); OnSelchangeListType(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CK_MsgList::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if ( m_bInit ) { CRect rect; m_S_S1.GetWindowRect(&rect); m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5); } } void CK_MsgList::Close() { Close_ListData(); } void CK_MsgList::OnListQuery() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) ) { return ; } #ifndef SMSMANAGER_KF if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE) ) { return ; } #endif UpdateData(true); Close_ListData(); m_wndList.DeleteAllColumns(); REQ_MsgList * pList = new REQ_MsgList;memset(pList,0,sizeof(REQ_MsgList)); pList->lType = m_lType; if ( m_lType==0 || m_lType==3 ) { m_wndList.SetHeadings(_T("序号,50; 企业ID,80;数量,60;短信内容,1000;")); pList->dwMin = 30; switch ( m_lTime ) { case 0: pList->dwMin = 5; break; case 1: pList->dwMin = 10; break; case 2: pList->dwMin = 20; break; case 3: pList->dwMin = 30; break; case 4: pList->dwMin = 40; break; case 5: pList->dwMin = 50; break; case 6: pList->dwMin = 60; break; case 7: pList->dwMin = 90; break; case 8: pList->dwMin = 120; break; case 9: pList->dwMin = 180; break; case 10: pList->dwMin = 300; break; case 11: pList->dwMin = 480; break; case 12: pList->dwMin = 600; break; case 13: pList->dwMin = 900; break; } this->Close_ListData(); //关闭原队列 } if ( m_lType==1 ) { m_wndList.SetHeadings(_T("序号,50; 企业ID,80;反骚扰级别,100;手机号码,130;短信内容,1000;")); pList->dwMin = 60; switch ( m_lTime ) { case 0: pList->dwMin = 60; break; case 1: pList->dwMin = 60*2; break; case 2: pList->dwMin = 60*5; break; case 3: pList->dwMin = -1; break; case 4: pList->dwMin = -2; break; } } if ( m_lType==2) { CString strCorpID; m_E_CorpID.GetWindowText(strCorpID); long lCorpID = _ttol(strCorpID); if ( lCorpID<100000 || lCorpID>999999 ) { MessageBox( _T("企业ID输入有误,请检查!") , _T("错误") , MB_ICONWARNING ); GetDlgItem(IDC_LIST_CORPID)->SetFocus(); } pList->lCorpID = lCorpID; m_wndList.SetHeadings(_T("序号,40; 企业ID,60;数量,60;短信内容,1000;")); } m_lMsgCount = 0; m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 m_wndList.DeleteAllItems(); //先删除所有记录 m_pMainFrame->SendFrame(SMSFUNC_MSGLIST,(BYTE*)pList,sizeof(REQ_MsgList)); m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 m_S_S1.SetWindowText( _T("查询时长") ); return ; } void CK_MsgList::OnDblclkListList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_User_See(); } void CK_MsgList::OnRclickListList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenu(); } void CK_MsgList::ShowRMenu() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) ) { return ; } if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE,false) ) { return ; } CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelected(); //添加 if ( lItem>=0 ) { menu.AppendMenu(MF_STRING , MENU_LIST_SEE , _T(" 查 看 ") ); menu.AppendMenu(MF_STRING , MENU_LIST_CORPLIST, _T(" 查询此企业清单 ") ); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_LIST_CORPOFF , _T(" 禁用此企业 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_SEE , _T(" 查 看 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_CORPLIST, _T(" 查询此企业清单 ") ); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LIST_CORPOFF , _T(" 禁用此企业 ") ); } //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } long CK_MsgList::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void CK_MsgList::On_User_See() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) ) { return ; } long lItem = m_wndList.GetFirstSelectedItem(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_MsgListData * pData = m_ListData.GetNext( pos ); if (!pData) return ; SMS_See sms={0}; _stprintf( sms.szCorpID , _T("%d") , pData->lCorpID); if (m_lType==1) _stprintf(sms.szStatus, _T("%d"), pData->lCheckResend); _tcscpy(sms.szRecver, pData->szMobile); _tcscpy( sms.szMsg , pData->szMsg ); DLG_SmsLogSee dlg(this); dlg.SetParam(sms); dlg.DoModal(); } void CK_MsgList::Close_ListData() { //清除队列中的内容 while (!m_ListData.IsEmpty()) { ANS_MsgListData * pData = m_ListData.GetHead(); m_ListData.RemoveHead(); delete pData; } } void CK_MsgList::On_User_CorpList() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) ) { return ; } long lItem = m_wndList.GetFirstSelectedItem(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_MsgListData * pData = m_ListData.GetNext( pos ); if (!pData) return ; this->m_pMainFrame->ShowFuncDlg( FUNC_LIST ); this->m_pMainFrame->m_pUserView->m_dlgList.m_lQueryCorpID = pData->lCorpID; this->m_pMainFrame->m_pUserView->m_dlgList.OnListQuery(); } void CK_MsgList::On_User_CorpOFF() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST) ) { return ; } long lItem = m_wndList.GetFirstSelectedItem(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_MsgListData * pData = m_ListData.GetNext( pos ); if (!pData) return ; ANS_Corp_SeeData data={0}; data.lCorpID = pData->lCorpID; DLG_Corp_Oper_Open dlg(this); dlg.SetParam(&data,false,this->m_pMainFrame->m_Setup.szUser); if ( dlg.DoModal() == IDOK ) { REQ_CorpOFF * pCorp = new REQ_CorpOFF;memset(pCorp,0,sizeof(REQ_CorpOFF)); pCorp->lCorpID = pData->lCorpID; pCorp->lStatus = 0; //0为禁用,1为启用 _tcscpy(pCorp->szBZ , dlg.m_strBZ ); _tcscpy(pCorp->szOper , dlg.m_strOperName ); m_pMainFrame->SendFrame(SMSFUNC_CORPOFF,(BYTE*)pCorp,sizeof(REQ_CorpOFF)); } } void CK_MsgList::OnSelchangeListType() { long lType = m_L_Type.GetCurSel(); UpdateData(true); m_L_Time.ResetContent(); switch(lType) { case 0: case 3: m_lTime = 3; m_L_Time.AddString( _T("5分钟") ); m_L_Time.AddString( _T("10分钟") ); m_L_Time.AddString( _T("20分钟") ); m_L_Time.AddString( _T("30分钟") ); m_L_Time.AddString( _T("40分钟") ); m_L_Time.AddString( _T("50分钟") ); m_L_Time.AddString( _T("1小时") ); #ifndef SMSMANAGER_KF m_L_Time.AddString( _T("1.5小时") ); m_L_Time.AddString( _T("2小时") ); m_L_Time.AddString( _T("3小时") ); m_L_Time.AddString( _T("5小时") ); m_L_Time.AddString( _T("8小时") ); m_L_Time.AddString( _T("10小时") ); m_L_Time.AddString( _T("15小时") ); #endif break; case 1: m_lTime = 2; m_L_Time.AddString( _T("1小时") ); m_L_Time.AddString( _T("2小时") ); m_L_Time.AddString( _T("5小时") ); m_L_Time.AddString( _T("今天") ); m_L_Time.AddString( _T("所有") ); break; default: break; } UpdateData(false); }