// FSmsEmail.cpp : implementation file // #include "stdafx.h" #include "corpsms.h" #include "FSmsEmail.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CFSmsEmail dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_SmsEmail_Add.h" #include "DLG_SmsEmailFilt_Add.h" CFSmsEmail::CFSmsEmail(CWnd* pParent /*=NULL*/) : CDialog(CFSmsEmail::IDD, pParent) { //{{AFX_DATA_INIT(CFSmsEmail) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; m_bRefresh2= false; m_lEmailID = 0; } void CFSmsEmail::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFSmsEmail) DDX_Control(pDX, IDC_SMSEMAIL_S4, m_S_S4); DDX_Control(pDX, IDC_SMSEMAIL_S3, m_S_S3); DDX_Control(pDX, IDC_SMSEMAIL_S2, m_S_S2); DDX_Control(pDX, IDC_SMSEMAIL_S1, m_S_S1); DDX_Control(pDX, IDC_SMSEMAIL_FILT, m_wndFilt); DDX_Control(pDX, IDC_SMSEMAIL_EMAIL, m_wndEmail); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFSmsEmail, CDialog) //{{AFX_MSG_MAP(CFSmsEmail) ON_WM_SIZE() ON_NOTIFY(NM_DBLCLK, IDC_SMSEMAIL_EMAIL, OnDblclkSmsemailEmail) ON_NOTIFY(LVN_KEYDOWN, IDC_SMSEMAIL_EMAIL, OnKeydownSmsemailEmail) ON_NOTIFY(NM_RCLICK, IDC_SMSEMAIL_EMAIL, OnRclickSmsemailEmail) ON_NOTIFY(NM_DBLCLK, IDC_SMSEMAIL_FILT, OnDblclkSmsemailFilt) ON_NOTIFY(LVN_KEYDOWN, IDC_SMSEMAIL_FILT, OnKeydownSmsemailFilt) ON_NOTIFY(NM_RCLICK, IDC_SMSEMAIL_FILT, OnRclickSmsemailFilt) ON_NOTIFY(LVN_ITEMCHANGED, IDC_SMSEMAIL_EMAIL, OnItemchangedSmsemailEmail) ON_NOTIFY(LVN_ITEMCHANGED, IDC_SMSEMAIL_FILT, OnItemchangedSmsemailFilt) //}}AFX_MSG_MAP ON_COMMAND( MENU_EMAIL_ADD , On_Email_Add ) ON_COMMAND( MENU_EMAIL_MODIFY , On_Email_Modify ) ON_COMMAND( MENU_EMAIL_DELETE , On_Email_Delete ) ON_COMMAND( MENU_EMAIL_REFRESH, On_Email_Refresh ) ON_COMMAND( MENU_FILT_ADD , On_Filt_Add ) ON_COMMAND( MENU_FILT_MODIFY , On_Filt_Modify ) ON_COMMAND( MENU_FILT_DELETE , On_Filt_Delete ) ON_COMMAND( MENU_FILT_REFRESH, On_Filt_Refresh ) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFSmsEmail message handlers BOOL CFSmsEmail::ReHide() { ShowWindow( SW_HIDE ); return true; } BOOL CFSmsEmail::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CFSmsEmail::RefreshInfo() { if ( m_pMainFrame->GetUserPurview( PURVIEW_SMSEMAIL , false ) ) { m_strMobile = m_pMainFrame->m_strMobile; #ifndef MOBSET_CARD_VER if ( m_strMobile.GetLength()<=0 ) { CString strSelect; strSelect.Format( _T("select * from Users where userid=%d"),m_pMainFrame->m_lUserID); if ( m_AdoRS.Open(strSelect) && m_AdoRS.GetRecordCount()) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect(_T("Mobile"),m_strMobile); m_AdoRS.Close(); } } //设置提示手机号码 CString str; str.Format( _T(""),m_strMobile); m_S_S4.SetWindowText(str); #else //设置提示手机号码 CString str; str.Format( _T(""),m_strMobile); m_S_S4.SetWindowText(str); #endif REQ_Email_See * pSee = new REQ_Email_See; pSee->lCorpID = m_pMainFrame->m_lCorpID; pSee->lUserID = m_pMainFrame->m_lUserID; m_pMainFrame->SendFrame( SMSFUNC_EMAIL_SEE , (BYTE*)pSee , sizeof( REQ_Email_See ) ); //发送取资料的请求 } return true; } BOOL CFSmsEmail::OnInitDialog() { CDialog::OnInitDialog(); //取得共用参数 //CMainFrame * pFrame = static_cast ((CMainFrame *)AfxGetMainWnd()); this->GetParent()->GetParentFrame(); m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame(); m_pSocket = &m_pMainFrame->m_Socket; m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection ); //初始化List m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSEMAIL) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) ); m_wndEmail.SubClassWindow2(); m_wndEmail.SetHeadings(_T("序号,50; 名 称,180;服务器地址,180; 帐 号,120;检测间隔,70;")); m_wndEmail.SetGridLines(true); m_wndEmail.SetCheckboxes(true); //m_wndEmail.SetImageList(&m_Image,LVSIL_SMALL); //m_wndEmail.SetBkColor( RGB(237,191,175) ); //m_wndEmail.SetTextBkColor( RGB(237,191,175) ); m_wndFilt.SubClassWindow2(); m_wndFilt.SetHeadings(_T("序号,50; 邮件通知条件,250;")); m_wndFilt.SetGridLines(true); m_wndFilt.SetCheckboxes(true); //m_wndFilt.SetImageList(&m_Image,LVSIL_SMALL); //m_wndFilt.SetBkColor( RGB(237,191,175) ); //m_wndFilt.SetTextBkColor( RGB(237,191,175) ); m_bInit = true; return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CFSmsEmail::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if ( m_bInit ) { CRect rect; CRect rect2; rect.left = 2; rect.right = cx-1; rect.top = 8; rect.bottom = (cy-40)/2; m_S_S1.MoveWindow(&rect); rect2.left = rect.left +8; rect2.right= rect.right-8; rect2.top= rect.top+23; rect2.bottom= rect.bottom-8; m_wndEmail.MoveWindow(&rect2); rect.top = (cy-40)/2+40; rect.bottom = cy; m_S_S2.MoveWindow(&rect); rect2.left = rect.left +8; rect2.right= rect.right-8; rect2.top= rect.top+23; rect2.bottom= rect.bottom-8; m_wndFilt.MoveWindow(&rect2); m_S_S3.GetWindowRect(&rect); rect2.top = (cy-40)/2+8; rect2.bottom=rect2.top+rect.Height(); rect2.left = (cx-rect.Width())/2; rect2.right= rect2.left+rect.Width(); m_S_S3.MoveWindow(&rect2); m_S_S4.GetWindowRect(&rect); rect2.top = (cy-40)/2+25; rect2.bottom=rect2.top+rect.Height(); rect2.left = (cx-rect.Width())/2; rect2.right= rect2.left+rect.Width(); m_S_S4.MoveWindow(&rect2); // m_wndList.MoveWindow( 0 , 0 , cx,cy); } } BOOL CFSmsEmail::ProcessSocket(Socket_Head *pHead) { //修改公用地址本 if (pHead->lFuncType == SMSFUNC_EMAIL_SEE) { m_bRefresh = true; //已刷新 m_bRefresh2 = true; //正在刷新 ANS_Email_See * pSee = (ANS_Email_See *)pHead->pFrame; ANS_Email_MailData * pMailData = (ANS_Email_MailData *)(pHead->pFrame+sizeof(ANS_Email_See)); ANS_Email_FiltData * pFiltData = (ANS_Email_FiltData *)(pHead->pFrame+sizeof(ANS_Email_See)+sizeof(ANS_Email_MailData)*pSee->lEmailCount); m_wndEmail.ShowWindow( SW_HIDE ); //加快显示速度 m_wndFilt.ShowWindow( SW_HIDE ); //加快显示速度 m_wndEmail.DeleteAllItems(); m_wndFilt.DeleteAllItems(); CString strSelect; strSelect.Format( _T("delete from email") ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); strSelect.Format( _T("delete from emailfilt") ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); m_AdoRS.Open( _T("email") , adCmdTable ); TCHAR szTemp[32]={0}; for ( int i=0 ; ilEmailCount;i++ ) { //写到数据库 m_AdoRS.AddNew(); m_AdoRS.PutCollect( _T("EmailID") , pMailData->lEmailID ); m_AdoRS.PutCollect( _T("CorpID") , pMailData->lCorpID ); m_AdoRS.PutCollect( _T("UserID") , pMailData->lUserID ); m_AdoRS.PutCollect( _T("Name") , pMailData->szName ); m_AdoRS.PutCollect( _T("IP") , pMailData->szIP ); m_AdoRS.PutCollect( _T("UserName") , pMailData->szUser ); m_AdoRS.PutCollect( _T("Passwd") , pMailData->szPasswd ); m_AdoRS.PutCollect( _T("Status") , pMailData->lStatus ); m_AdoRS.Update(); //写到列表 m_wndEmail.InsertItem( i , _itot(i+1,szTemp,10),0); m_wndEmail.SetItemText(i,1,pMailData->szName); m_wndEmail.SetItemText(i,2,pMailData->szIP); m_wndEmail.SetItemText(i,3,pMailData->szUser); _stprintf(szTemp,_T("%3d分钟"),pMailData->lCheckTime/60); m_wndEmail.SetItemText(i,4,szTemp); m_wndEmail.SetCheck(i,pMailData->lStatus); m_wndEmail.SetItemData(i,pMailData->lEmailID); pMailData ++; } m_AdoRS.Close(); /* m_AdoRS.Open( "emailfilt" , adCmdTable ); for ( i=0 ; ilEmailFiltCount;i++ ) { //写到数据库 m_AdoRS.AddNew(); m_AdoRS.PutCollect( "EmailFiltID" , pFiltData->lEmailFiltID ); //m_AdoRS.PutCollect( "EmailID" , pFiltData->lEmailID ); m_AdoRS.PutCollect( "CorpID" , pFiltData->lCorpID ); m_AdoRS.PutCollect( "UserID" , pFiltData->lUserID ); m_AdoRS.PutCollect( "Name" , pFiltData->szName ); m_AdoRS.PutCollect( "Status" , pFiltData->lStatus ); m_AdoRS.Update(); //写到列表 m_wndFilt.InsertItem( i , _itot(i+1,szTemp,10),0); m_wndFilt.SetItemText(i,1,pFiltData->szName); m_wndFilt.SetCheck(i,pFiltData->lStatus); m_wndFilt.SetItemData(i,pFiltData->lEmailFiltID); pFiltData ++; } m_AdoRS.Close(); */ m_wndEmail.ShowWindow( SW_SHOW ); //加快显示速度 m_wndFilt.ShowWindow( SW_SHOW ); //加快显示速度 m_bRefresh2 = false; return true; } //添加Email if (pHead->lFuncType == SMSFUNC_EMAIL_ADD) { ANS_Email_Add * pAdd = (ANS_Email_Add *)pHead->pFrame; if ( pAdd->bOK ) //添加成功 { long lCount = m_wndEmail.GetItemCount(); TCHAR szTemp[32]={0}; //设置新的数据 //写到列表 m_wndEmail.InsertItem( lCount , _itot(lCount+1,szTemp,10),0); m_wndEmail.SetItemText(lCount,1,pAdd->szName); m_wndEmail.SetItemText(lCount,2,pAdd->szIP); m_wndEmail.SetItemText(lCount,3,pAdd->szUser); _stprintf(szTemp,_T("%3d分钟"),pAdd->lCheckTime/60); m_wndEmail.SetItemText(lCount,4,szTemp); m_wndEmail.SetCheck(lCount,pAdd->lStatus); m_wndEmail.SetItemData(lCount,pAdd->lEmailID); //添加到数据库里 BOOL b = m_AdoRS.Open( _T("email") , adCmdTable ); if ( b ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect( _T("EmailID") , pAdd->lEmailID ); m_AdoRS.PutCollect( _T("CorpID") , pAdd->lCorpID ); m_AdoRS.PutCollect( _T("UserID") , pAdd->lUserID ); m_AdoRS.PutCollect( _T("Name") , pAdd->szName ); m_AdoRS.PutCollect( _T("IP") , pAdd->szIP ); m_AdoRS.PutCollect( _T("UserName"), pAdd->szUser ); m_AdoRS.PutCollect( _T("Passwd") , pAdd->szPasswd ); m_AdoRS.PutCollect( _T("Status") , pAdd->lStatus ); m_AdoRS.Update(); } m_AdoRS.Close(); if ( m_wndFilt.GetItemCount()<=0 ) { MessageBox( _T("添加邮件短信通知Email地址成功!\r\n如果你要启用通知,请在先设置好通知条件。"),_T("提示"),MB_ICONINFORMATION ); } } return true; } //修改Email if (pHead->lFuncType == SMSFUNC_EMAIL_MODIFY) { ANS_Email_Modify * pModify = (ANS_Email_Modify *)pHead->pFrame; if ( pModify->bOK ) //修改成功 { //设置新的数据 //写到列表 if ( !pModify->bOnlyStatus ) //仅修改状态 { m_wndEmail.SetCheck(pModify->lItemID,pModify->lStatus); m_wndEmail.SetItemText(pModify->lItemID,1,pModify->szName); m_wndEmail.SetItemText(pModify->lItemID,2,pModify->szIP); m_wndEmail.SetItemText(pModify->lItemID,3,pModify->szUser); TCHAR szTemp[32]={0}; _stprintf(szTemp,_T("%3d分钟"),pModify->lCheckTime/60); m_wndEmail.SetItemText(pModify->lItemID,4,szTemp); } //添加到数据库里 CString strSelect; strSelect.Format( _T("select * from email where EmailID=%d") , pModify->lEmailID ); BOOL b = m_AdoRS.Open( strSelect ); if ( b ) { m_AdoRS.MoveFirst(); if ( pModify->bOnlyStatus ) //仅修改状态 { m_AdoRS.PutCollect( _T("Status") , pModify->lStatus ); } else { m_AdoRS.PutCollect( _T("Status") , pModify->lStatus ); m_AdoRS.PutCollect( _T("EmailID") , pModify->lEmailID ); m_AdoRS.PutCollect( _T("CorpID") , pModify->lCorpID ); m_AdoRS.PutCollect( _T("UserID") , pModify->lUserID ); m_AdoRS.PutCollect( _T("Name") , pModify->szName ); m_AdoRS.PutCollect( _T("IP") , pModify->szIP ); m_AdoRS.PutCollect( _T("UserName"), pModify->szUser ); m_AdoRS.PutCollect( _T("Passwd") , pModify->szPasswd ); } m_AdoRS.Update(); m_AdoRS.Close(); } } return true; } //删除用户 if (pHead->lFuncType == SMSFUNC_EMAIL_DEL) { ANS_Email_Del * pDel = (ANS_Email_Del *)pHead->pFrame; ANS_Email_DelData * pDelData = (ANS_Email_DelData *)(pHead->pFrame+sizeof(ANS_Email_Del)); m_wndEmail.ShowWindow( SW_HIDE ); //为了加快显示速度 for ( int i = pDel->lCount-1 ; i>=0 ; i-- ) { long lEmailID = m_wndEmail.GetItemData(pDelData[i].lItem); if ( pDelData[i].lEmailID && lEmailID == pDelData[i].lEmailID) //删除成功 { m_wndEmail.DeleteItem(pDelData[i].lItem); //从ListCtrl中删除 //从数据库中删除 TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("delete from email where EmailID=%d ") ,pDelData[i].lEmailID ); m_AdoRS.Open( szSelect ); m_AdoRS.Close(); } } m_wndEmail.ShowWindow( SW_SHOW ); //为了加快显示速度 return true; } //添加EmailFilt if (pHead->lFuncType == SMSFUNC_EMAILFILT_ADD) { ANS_EmailFilt_Add * pAdd = (ANS_EmailFilt_Add *)pHead->pFrame; if ( pAdd->bOK ) //添加成功 { long lCount = m_wndFilt.GetItemCount(); TCHAR szTemp[32]={0}; //设置新的数据 //写到列表 m_wndFilt.InsertItem( lCount , _itot(lCount+1,szTemp,10),0); m_wndFilt.SetItemText(lCount,1,pAdd->szName); m_wndFilt.SetCheck(lCount,pAdd->lStatus); m_wndFilt.SetItemData(lCount,pAdd->lEmailFiltID); //添加到数据库里 BOOL b = m_AdoRS.Open( _T("emailfilt") , adCmdTable ); if ( b ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect( _T("EmailFiltID") , pAdd->lEmailFiltID ); m_AdoRS.PutCollect( _T("CorpID") , pAdd->lCorpID ); m_AdoRS.PutCollect( _T("UserID") , pAdd->lUserID ); m_AdoRS.PutCollect( _T("Name") , pAdd->szName ); m_AdoRS.PutCollect( _T("Status") , pAdd->lStatus ); m_AdoRS.Update(); } m_AdoRS.Close(); } return true; } //修改EmailFilt if (pHead->lFuncType == SMSFUNC_EMAILFILT_MODIFY) { ANS_EmailFilt_Modify * pModify = (ANS_EmailFilt_Modify *)pHead->pFrame; if ( pModify->bOK ) //修改成功 { //设置新的数据 //写到列表 if ( !pModify->bOnlyStatus ) //仅修改状态 { m_wndFilt.SetCheck(pModify->lItemID,pModify->lStatus); m_wndFilt.SetItemText(pModify->lItemID,1,pModify->szName); } //添加到数据库里 CString strSelect; strSelect.Format( _T("select * from emailfilt where EmailFiltID=%d") , pModify->lEmailFiltID ); BOOL b = m_AdoRS.Open( strSelect ); if ( b ) { m_AdoRS.MoveFirst(); if ( pModify->bOnlyStatus ) //仅修改状态 { m_AdoRS.PutCollect( _T("Status") , pModify->lStatus ); } else { m_AdoRS.PutCollect( _T("Status") , pModify->lStatus ); m_AdoRS.PutCollect( _T("EmailFiltID") , pModify->lEmailFiltID ); m_AdoRS.PutCollect( _T("CorpID") , pModify->lCorpID ); m_AdoRS.PutCollect( _T("UserID") , pModify->lUserID ); m_AdoRS.PutCollect( _T("Name") , pModify->szName ); } m_AdoRS.Update(); m_AdoRS.Close(); } } return true; } //删除用户 if (pHead->lFuncType == SMSFUNC_EMAILFILT_DEL) { ANS_EmailFilt_Del * pDel = (ANS_EmailFilt_Del *)pHead->pFrame; ANS_EmailFilt_DelData * pDelData = (ANS_EmailFilt_DelData *)(pHead->pFrame+sizeof(ANS_EmailFilt_Del)); m_wndFilt.ShowWindow( SW_HIDE ); //为了加快显示速度 for ( int i = pDel->lCount-1 ; i>=0 ; i-- ) { long lEmailFiltID = m_wndFilt.GetItemData(pDelData[i].lItem); if ( pDelData[i].lEmailFiltID && lEmailFiltID == pDelData[i].lEmailFiltID) //删除成功 { m_wndFilt.DeleteItem(pDelData[i].lItem); //从ListCtrl中删除 //从数据库中删除 TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("delete from emailfilt where EmailFiltID=%d ") ,pDelData[i].lEmailFiltID ); m_AdoRS.Open( szSelect ); m_AdoRS.Close(); } } m_wndFilt.ShowWindow( SW_SHOW ); //为了加快显示速度 return true; } //查看EmailFilt if (pHead->lFuncType == SMSFUNC_EMAILFILT_SEE) { m_bRefresh2 = true; //正在刷新 ANS_EmailFilt_See * pSee = (ANS_EmailFilt_See *)pHead->pFrame; ANS_EmailFilt_SeeData * pFiltData = (ANS_EmailFilt_SeeData *)(pHead->pFrame+sizeof(ANS_EmailFilt_See)); m_wndFilt.ShowWindow( SW_HIDE ); //加快显示速度 m_wndFilt.DeleteAllItems(); CString strSelect; TCHAR szTemp[32]={0}; strSelect.Format( _T("delete from emailfilt") ); m_AdoRS.Open( strSelect ); m_AdoRS.Close(); m_AdoRS.Open( _T("emailfilt") , adCmdTable ); for ( int i=0 ; ilCount;i++ ) { //写到数据库 m_AdoRS.AddNew(); m_AdoRS.PutCollect( _T("EmailFiltID") , pFiltData->lEmailFiltID ); m_AdoRS.PutCollect( _T("EmailID") , pFiltData->lEmailID ); m_AdoRS.PutCollect( _T("CorpID") , pFiltData->lCorpID ); m_AdoRS.PutCollect( _T("UserID") , pFiltData->lUserID ); m_AdoRS.PutCollect( _T("Name") , pFiltData->szName ); m_AdoRS.PutCollect( _T("Status") , pFiltData->lStatus ); m_AdoRS.Update(); //写到列表 m_wndFilt.InsertItem( i , _itot(i+1,szTemp,10),0); m_wndFilt.SetItemText(i,1,pFiltData->szName); m_wndFilt.SetCheck(i,pFiltData->lStatus); m_wndFilt.SetItemData(i,pFiltData->lEmailFiltID); pFiltData ++; } m_AdoRS.Close(); m_wndFilt.ShowWindow( SW_SHOW ); //加快显示速度 m_bRefresh2 = false; return true; } return true; } void CFSmsEmail::OnDblclkSmsemailEmail(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_Email_Modify(); } void CFSmsEmail::OnKeydownSmsemailEmail(NMHDR* pNMHDR, LRESULT* pResult) { LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR; *pResult = 0; if ( pLVKeyDow->wVKey == VK_DELETE ) { On_Email_Delete(); } if ( pLVKeyDow->wVKey == VK_INSERT) { On_Email_Add(); } if ( pLVKeyDow->wVKey == VK_SPACE) { On_Email_Modify(); } if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r') { On_Email_Refresh(); } } void CFSmsEmail::OnRclickSmsemailEmail(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenuE(); } void CFSmsEmail::OnDblclkSmsemailFilt(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_Filt_Modify(); } void CFSmsEmail::OnKeydownSmsemailFilt(NMHDR* pNMHDR, LRESULT* pResult) { LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR; *pResult = 0; if ( pLVKeyDow->wVKey == VK_DELETE ) { On_Filt_Delete(); } if ( pLVKeyDow->wVKey == VK_INSERT) { On_Filt_Add(); } if ( pLVKeyDow->wVKey == VK_SPACE) { On_Filt_Modify(); } if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r') { On_Filt_Refresh(); } } void CFSmsEmail::OnRclickSmsemailFilt(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenuF(); } void CFSmsEmail::ShowRMenuE() { if (!m_pMainFrame->GetUserPurview(PURVIEW_SMSEMAIL,false)) //没有查看权限 return ; CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelectedE(); if ( lItem >= 0 ) bLock = isLockItemE( lItem , false ); //取得是否正在锁定 //添加 menu.AppendMenu(MF_STRING , MENU_EMAIL_ADD, _T(" 添加Email ") ); menu.AppendMenu(MF_SEPARATOR ); //修改 if ( lItem >=0 && !bLock) { menu.AppendMenu(MF_STRING , MENU_EMAIL_MODIFY, _T(" 修 改 ") ); menu.AppendMenu(MF_STRING , MENU_EMAIL_DELETE, _T(" 删 除 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_EMAIL_MODIFY, _T(" 修 改 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_EMAIL_DELETE, _T(" 删 除 ") ); } menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_EMAIL_REFRESH, _T(" 刷 新 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } void CFSmsEmail::ShowRMenuF() { if (!m_pMainFrame->GetUserPurview(PURVIEW_SMSEMAIL,false)) //没有查看权限 return ; CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelectedF(); if ( lItem >= 0 ) bLock = isLockItemF( lItem , false ); //取得是否正在锁定 //添加 menu.AppendMenu(MF_STRING , MENU_FILT_ADD, _T(" 添加通知条件 ") ); menu.AppendMenu(MF_SEPARATOR ); //修改 if ( lItem >=0 && !bLock) { menu.AppendMenu(MF_STRING , MENU_FILT_MODIFY, _T(" 修 改 ") ); menu.AppendMenu(MF_STRING , MENU_FILT_DELETE, _T(" 删 除 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_FILT_MODIFY, _T(" 修 改 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_FILT_DELETE, _T(" 删 除 ") ); } menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_FILT_REFRESH, _T(" 刷 新 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } long CFSmsEmail::GetCurrentSelectedE() { POSITION pos = m_wndEmail.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndEmail.GetNextSelectedItem(pos); } return -1; } long CFSmsEmail::GetCurrentSelectedF() { POSITION pos = m_wndFilt.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndFilt.GetNextSelectedItem(pos); } return -1; } void CFSmsEmail::On_Email_Add() { if (!m_pMainFrame->GetUserPurview(PURVIEW_SMSEMAIL,false)) //没有查看权限 return ; long lCount = m_wndEmail.GetItemCount(); if ( lCount > 10 ) { MessageBox( _T("每位用户最多只能设置10条短信邮差!") , _T("错误") , MB_ICONWARNING ); return ; } ANS_Email_MailData data={0}; data.lStatus = 1; //默认启动 data.lCheckTime=5; //默认是5分钟 DLG_SmsEmail_Add dlg(this); dlg.SetParam(m_strMobile,data); if ( dlg.DoModal()==IDOK ) { REQ_Email_Add * pAdd = new REQ_Email_Add; memset(pAdd,0,sizeof(REQ_Email_Add)); pAdd->lCorpID = m_pMainFrame->m_lCorpID; pAdd->lUserID = m_pMainFrame->m_lUserID; pAdd->lStatus = dlg.m_bEnable; pAdd->lCheckTime=dlg.m_lCheckTime*60; //因为服务器是按秒计的 _tcscpy(pAdd->szName , dlg.m_strName ); _tcscpy(pAdd->szIP , dlg.m_strIP ); _tcscpy(pAdd->szUser , dlg.m_strUser ); _tcscpy(pAdd->szPasswd, dlg.m_strPasswd ); m_pMainFrame->SendFrame( SMSFUNC_EMAIL_ADD , (BYTE*)pAdd , sizeof( REQ_Email_Add ) ); //发送取资料的请求 //发送短信息通知 REQ_SendSms * pSms = new REQ_SendSms; memset(pSms,0,sizeof(REQ_SendSms)); pSms->lCorpID = m_pMainFrame->m_lCorpID; pSms->lUserID = m_pMainFrame->m_lUserID; _tcscpy( pSms->szMobile , m_strMobile); #ifdef MOBSET_OEM _stprintf(pSms->szMsg , _T("欢迎使用短信邮差服务,您已成功设置名称为“%s”的短信邮件提醒功能!"),dlg.m_strName); #else _stprintf(pSms->szMsg , _T("欢迎使用短信邮差服务,您已成功设置名称为“%s”的短信邮件提醒功能,需要帮助请咨询:400-111-0168!"),dlg.m_strName); #endif m_pMainFrame->SendFrame( SMSFUNC_SENDSMS , (BYTE*)pSms , sizeof( REQ_SendSms ) ); //发送取资料的请求 } } void CFSmsEmail::On_Email_Modify() { if (!m_pMainFrame->GetUserPurview(PURVIEW_SMSEMAIL,false)) //没有查看权限 return ; long lItem = this->GetCurrentSelectedE(); if ( lItem < 0 ) return ; ANS_Email_MailData data=GetEmailData(lItem); DLG_SmsEmail_Add dlg(this); dlg.SetParam(m_strMobile,data); if ( dlg.DoModal()==IDOK ) { REQ_Email_Modify * pModify = new REQ_Email_Modify; memset(pModify,0,sizeof(REQ_Email_Modify)); pModify->bOnlyStatus = false; //修改所有项目,不只是状态 pModify->lItemID = lItem; pModify->lEmailID= data.lEmailID; pModify->lCorpID = m_pMainFrame->m_lCorpID; pModify->lUserID = m_pMainFrame->m_lUserID; pModify->lStatus = dlg.m_bEnable; pModify->lCheckTime=dlg.m_lCheckTime*60; //因为服务器是按秒计的 _tcscpy(pModify->szName , dlg.m_strName ); _tcscpy(pModify->szIP , dlg.m_strIP ); _tcscpy(pModify->szUser , dlg.m_strUser ); _tcscpy(pModify->szPasswd, dlg.m_strPasswd ); m_pMainFrame->SendFrame( SMSFUNC_EMAIL_MODIFY , (BYTE*)pModify , sizeof( REQ_Email_Modify ) ); //发送取资料的请求 } } void CFSmsEmail::On_Email_Delete() { if (!m_pMainFrame->GetUserPurview(PURVIEW_SMSEMAIL,false)) //没有查看权限 return ; long lCount = m_wndEmail.GetSelectedCount(); long lSize = sizeof(REQ_Email_Del)+sizeof(ANS_Email_DelData)*lCount; BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize); REQ_Email_Del * pDel = (REQ_Email_Del *)pDelSend; //头 ANS_Email_DelData * pDelData = (ANS_Email_DelData *)(pDelSend+sizeof(REQ_Email_Del)); pDel->lCount = lCount; POSITION pos = m_wndEmail.GetFirstSelectedItemPosition(); while(pos) { pDelData->lItem = m_wndEmail.GetNextSelectedItem(pos); pDelData->lEmailID= m_wndEmail.GetItemData(pDelData->lItem); pDelData ++; } m_pMainFrame->SendFrame( SMSFUNC_EMAIL_DEL , pDelSend , lSize ); } void CFSmsEmail::On_Email_Refresh() { this->RefreshInfo(); } void CFSmsEmail::On_Filt_Add() { if (!m_pMainFrame->GetUserPurview(PURVIEW_SMSEMAIL,false)) //没有查看权限 return ; long lItem = this->GetCurrentSelectedE(); if ( lItem <0 ) { MessageBox( _T("请先选中Email,再添加通知条件!") , _T("错误") , MB_ICONWARNING ); return ; } long lEmailID = m_wndEmail.GetItemData(lItem); DLG_SmsEmailFilt_Add dlg(this); dlg.SetParam("",true); if ( dlg.DoModal()==IDOK ) { REQ_EmailFilt_Add * pAdd = new REQ_EmailFilt_Add; memset(pAdd,0,sizeof(REQ_EmailFilt_Add)); pAdd->lCorpID = m_pMainFrame->m_lCorpID; pAdd->lUserID = m_pMainFrame->m_lUserID; pAdd->lEmailID= lEmailID; pAdd->lStatus = dlg.m_bEnable; _tcscpy(pAdd->szName , dlg.m_strName ); m_pMainFrame->SendFrame( SMSFUNC_EMAILFILT_ADD , (BYTE*)pAdd , sizeof( REQ_EmailFilt_Add ) ); //发送取资料的请求 } } void CFSmsEmail::On_Filt_Modify() { if (!m_pMainFrame->GetUserPurview(PURVIEW_SMSEMAIL,false)) //没有查看权限 return ; long lItem = this->GetCurrentSelectedF(); if ( lItem < 0 ) return ; ANS_Email_FiltData data=GetFiltData(lItem); DLG_SmsEmailFilt_Add dlg(this); dlg.SetParam(data.szName,data.lStatus); if ( dlg.DoModal()==IDOK ) { REQ_EmailFilt_Modify * pModify = new REQ_EmailFilt_Modify; memset(pModify,0,sizeof(REQ_EmailFilt_Modify)); pModify->bOnlyStatus = false; //修改所有项目,不只是状态 pModify->lItemID = lItem; pModify->lEmailFiltID= data.lEmailFiltID; pModify->lCorpID = m_pMainFrame->m_lCorpID; pModify->lUserID = m_pMainFrame->m_lUserID; pModify->lStatus = dlg.m_bEnable; _tcscpy(pModify->szName , dlg.m_strName ); m_pMainFrame->SendFrame( SMSFUNC_EMAILFILT_MODIFY , (BYTE*)pModify , sizeof( REQ_EmailFilt_Modify ) ); //发送取资料的请求 } } void CFSmsEmail::On_Filt_Delete() { if (!m_pMainFrame->GetUserPurview(PURVIEW_SMSEMAIL,false)) //没有查看权限 return ; long lCount = m_wndFilt.GetSelectedCount(); long lSize = sizeof(REQ_EmailFilt_Del)+sizeof(ANS_EmailFilt_DelData)*lCount; BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize); REQ_EmailFilt_Del * pDel = (REQ_EmailFilt_Del *)pDelSend; //头 ANS_EmailFilt_DelData * pDelData = (ANS_EmailFilt_DelData *)(pDelSend+sizeof(REQ_EmailFilt_Del)); pDel->lCount = lCount; POSITION pos = m_wndFilt.GetFirstSelectedItemPosition(); while(pos) { pDelData->lItem = m_wndFilt.GetNextSelectedItem(pos); pDelData->lEmailFiltID= m_wndFilt.GetItemData(pDelData->lItem); pDelData ++; } m_pMainFrame->SendFrame( SMSFUNC_EMAILFILT_DEL , pDelSend , lSize ); } void CFSmsEmail::On_Filt_Refresh() { this->RefreshInfo(); } BOOL CFSmsEmail::isLockItemE(long lItem, BOOL bShowWarning) { BOOL b = (m_wndEmail.GetIconIndex(lItem) == 1); if ( b && bShowWarning ) { MessageBox( _T("记录被锁定,请等待服务器返回后再操作!") , _T("锁定中") , MB_ICONINFORMATION ); } return b; } BOOL CFSmsEmail::isLockItemF(long lItem, BOOL bShowWarning) { BOOL b = (m_wndFilt.GetIconIndex(lItem) == 1); if ( b && bShowWarning ) { MessageBox( _T("记录被锁定,请等待服务器返回后再操作!") , _T("锁定中") , MB_ICONINFORMATION ); } return b; } void CFSmsEmail::SetLockItemE(long lItem, BOOL bLock) { if ( bLock ) m_wndEmail.SetIconIndex( lItem , 1 ); else m_wndEmail.SetIconIndex( lItem , 0 ); } void CFSmsEmail::SetLockItemF(long lItem, BOOL bLock) { if ( bLock ) m_wndFilt.SetIconIndex( lItem , 1 ); else m_wndFilt.SetIconIndex( lItem , 0 ); } ANS_Email_MailData CFSmsEmail::GetEmailData(long lItem) { ANS_Email_MailData data= {0}; long lID = m_wndEmail.GetItemData(lItem); CString strSelect; strSelect.Format( _T("select * from email where EmailID=%d") , lID ); if ( m_AdoRS.Open(strSelect) && m_AdoRS.GetRecordCount() ) { m_AdoRS.MoveFirst(); data.lEmailID = lID; m_AdoRS.GetCollect(_T("CorpID") , data.lCorpID ); m_AdoRS.GetCollect(_T("UserID") , data.lUserID ); m_AdoRS.GetCollect(_T("Status") , data.lStatus ); m_AdoRS.GetCollect(_T("Name") , data.szName ); m_AdoRS.GetCollect(_T("IP") , data.szIP ); m_AdoRS.GetCollect(_T("UserName") , data.szUser ); m_AdoRS.GetCollect(_T("Passwd") , data.szPasswd ); m_AdoRS.Close(); } strSelect = m_wndEmail.GetItemText(lItem,4); data.lCheckTime = _ttol(strSelect); return data; } void CFSmsEmail::OnItemchangedSmsemailEmail(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0; if ( m_wndEmail.GetSelectedCount() > 1 ) //大于1,不处理 return ; if ( m_bRefresh2 ) return ; //原是禁用,现在是启用 if ( pNMListView->uNewState==8192 && pNMListView->uOldState== 4096 ) { REQ_Email_Modify * pModify = new REQ_Email_Modify; memset(pModify,0,sizeof(REQ_Email_Modify)); pModify->bOnlyStatus = true; //修改所有项目,不只是状态 pModify->lItemID = pNMListView->iItem; pModify->lEmailID = m_wndEmail.GetItemData(pNMListView->iItem); pModify->lCorpID = m_pMainFrame->m_lCorpID; pModify->lUserID = m_pMainFrame->m_lUserID; pModify->lStatus = 1; //启用 m_pMainFrame->SendFrame( SMSFUNC_EMAIL_MODIFY , (BYTE*)pModify , sizeof( REQ_Email_Modify ) ); //发送取资料的请求 return ; } //原是启用,现在是禁用 if ( pNMListView->uNewState==4096 && pNMListView->uOldState== 8192 ) { REQ_Email_Modify * pModify = new REQ_Email_Modify; memset(pModify,0,sizeof(REQ_Email_Modify)); pModify->bOnlyStatus = true; //修改所有项目,不只是状态 pModify->lItemID = pNMListView->iItem; pModify->lEmailID = m_wndEmail.GetItemData(pNMListView->iItem); pModify->lCorpID = m_pMainFrame->m_lCorpID; pModify->lUserID = m_pMainFrame->m_lUserID; pModify->lStatus = 0; //禁用 m_pMainFrame->SendFrame( SMSFUNC_EMAIL_MODIFY , (BYTE*)pModify , sizeof( REQ_Email_Modify ) ); //发送取资料的请求 return ; } if ( pNMListView->uNewState==3 && pNMListView->uOldState==0) { long lItem = this->GetCurrentSelectedE(); if ( lItem >= 0 ) { long lEmailID = this->m_wndEmail.GetItemData(lItem); REQ_EmailFilt_See * pSee = new REQ_EmailFilt_See; memset(pSee,0,sizeof(REQ_EmailFilt_See)); pSee->lCorpID = m_pMainFrame->m_lCorpID; pSee->lUserID = m_pMainFrame->m_lUserID; pSee->lEmailID= lEmailID; m_pMainFrame->SendFrame( SMSFUNC_EMAILFILT_SEE , (BYTE*)pSee , sizeof( REQ_EmailFilt_See ) ); //发送取资料的请求 m_wndFilt.DeleteAllItems(); } } } ANS_Email_FiltData CFSmsEmail::GetFiltData(long lItem) { ANS_Email_FiltData data= {0}; long lID = m_wndFilt.GetItemData(lItem); CString strSelect; strSelect.Format( _T("select * from emailfilt where EmailFiltID=%d") , lID ); if ( m_AdoRS.Open(strSelect) && m_AdoRS.GetRecordCount() ) { m_AdoRS.MoveFirst(); data.lEmailFiltID = lID; m_AdoRS.GetCollect(_T("CorpID") , data.lCorpID ); m_AdoRS.GetCollect(_T("UserID") , data.lUserID ); m_AdoRS.GetCollect(_T("Status") , data.lStatus ); m_AdoRS.GetCollect(_T("Name") , data.szName ); m_AdoRS.Close(); } return data; } void CFSmsEmail::OnItemchangedSmsemailFilt(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0; if ( m_wndFilt.GetSelectedCount() > 1 ) //大于1,不处理 return ; if ( m_bRefresh2 ) return ; //原是禁用,现在是启用 if ( pNMListView->uNewState==8192 && pNMListView->uOldState== 4096 ) { REQ_EmailFilt_Modify * pModify = new REQ_EmailFilt_Modify; memset(pModify,0,sizeof(REQ_EmailFilt_Modify)); pModify->bOnlyStatus = true; //修改所有项目,不只是状态 pModify->lItemID = pNMListView->iItem; pModify->lEmailFiltID = m_wndFilt.GetItemData(pNMListView->iItem); pModify->lCorpID = m_pMainFrame->m_lCorpID; pModify->lUserID = m_pMainFrame->m_lUserID; pModify->lStatus = 1; //启用 m_pMainFrame->SendFrame( SMSFUNC_EMAILFILT_MODIFY , (BYTE*)pModify , sizeof( REQ_EmailFilt_Modify ) ); //发送取资料的请求 } //原是启用,现在是禁用 if ( pNMListView->uNewState==4096 && pNMListView->uOldState== 8192 ) { REQ_EmailFilt_Modify * pModify = new REQ_EmailFilt_Modify; memset(pModify,0,sizeof(REQ_EmailFilt_Modify)); pModify->bOnlyStatus = true; //修改所有项目,不只是状态 pModify->lItemID = pNMListView->iItem; pModify->lEmailFiltID = m_wndFilt.GetItemData(pNMListView->iItem); pModify->lCorpID = m_pMainFrame->m_lCorpID; pModify->lUserID = m_pMainFrame->m_lUserID; pModify->lStatus = 0; //禁用 m_pMainFrame->SendFrame( SMSFUNC_EMAILFILT_MODIFY , (BYTE*)pModify , sizeof( REQ_EmailFilt_Modify ) ); //发送取资料的请求 } } void CFSmsEmail::OnOK() { //CDialog::OnOK(); } void CFSmsEmail::OnCancel() { //CDialog::OnCancel(); }