// FSmsSP.cpp : implementation file // #include "stdafx.h" #include "corpsms.h" #include "FSmsSP.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CFSmsSP dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_SP_See.h" CFSmsSP::CFSmsSP(CWnd* pParent /*=NULL*/) : CDialog(CFSmsSP::IDD, pParent) { //{{AFX_DATA_INIT(CFSmsSP) //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; m_bRefresh2= false; } void CFSmsSP::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFSmsSP) DDX_Control(pDX, IDC_SMSSP_S2, m_S_S2); DDX_Control(pDX, IDC_SMSSP_S1, m_S_S1); DDX_Control(pDX, IDC_SMSSP_LIST, m_wndList); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFSmsSP, CDialog) //{{AFX_MSG_MAP(CFSmsSP) ON_WM_SIZE() ON_NOTIFY(NM_DBLCLK, IDC_SMSSP_LIST, OnDblclkSmsspList) ON_NOTIFY(NM_RCLICK, IDC_SMSSP_LIST, OnRclickSmsspList) ON_NOTIFY(LVN_KEYDOWN, IDC_SMSSP_LIST, OnKeydownSmsspList) ON_NOTIFY(LVN_ITEMCHANGED, IDC_SMSSP_LIST, OnItemchangedSmsspList) //}}AFX_MSG_MAP ON_COMMAND( MENU_SP_SEE , On_SP_See ) ON_COMMAND( MENU_SP_DZ , On_SP_DZ ) ON_COMMAND( MENU_SP_QXDZ , On_SP_QXDZ ) ON_COMMAND( MENU_SP_TEST , On_SP_Test ) ON_COMMAND( MENU_SP_REFRESH, On_SP_Refresh ) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFSmsSP message handlers BOOL CFSmsSP::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_SMSSP) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,50; 栏目名称,100;订阅,50;扣费条数,70;发送条数,70;每天发送,70; 星 期,100; 业务说明,400;指令,0;生日,0;")); m_wndList.SetGridLines(true); // m_wndList.SetCheckboxes(true); m_wndList.SetImageList(&m_Image,LVSIL_SMALL); //m_wndList.SetBkColor( RGB(237,191,175) ); //m_wndList.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 CFSmsSP::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if ( m_bInit ) { m_wndList.MoveWindow( 0 , 0 , cx,cy-50); CRect rect,rect2; m_S_S1.GetWindowRect(&rect); rect2.top = cy-40; rect2.bottom = rect2.top+rect.Height(); rect2.left = (cx-rect.Width())/2; rect2.right= rect2.left+rect.Width(); m_S_S1.MoveWindow(&rect2); m_S_S2.GetWindowRect(&rect); rect2.top = cy-20; rect2.bottom = rect2.top+rect.Height(); rect2.left = (cx-rect.Width())/2; rect2.right= rect2.left+rect.Width(); m_S_S2.MoveWindow(&rect2); } } BOOL CFSmsSP::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CFSmsSP::ReHide() { ShowWindow( SW_HIDE ); return true; } BOOL CFSmsSP::RefreshInfo() { if ( m_pMainFrame->GetUserPurview( PURVIEW_SMSSP , 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_S2.SetWindowText(str); #else //设置提示手机号码 CString str; str.Format( _T(""),m_strMobile); m_S_S2.SetWindowText(str); #endif REQ_DZ2_See * pSee = new REQ_DZ2_See; pSee->lCorpID = m_pMainFrame->m_lCorpID; pSee->lUserID = m_pMainFrame->m_lUserID; m_pMainFrame->SendFrame( SMSFUNC_DZ2_SEE , (BYTE*)pSee , sizeof( REQ_DZ2_See ) ); //发送取资料的请求 } return true; } BOOL CFSmsSP::ProcessSocket(Socket_Head *pHead) { //修改公用地址本 if (pHead->lFuncType == SMSFUNC_DZ2_SEE) { m_bRefresh = true; //已刷新 m_bRefresh2 = true; //正在刷新 ANS_DZ2_See * pSee = (ANS_DZ2_See *)pHead->pFrame; ANS_DZ2_Data * pData = (ANS_DZ2_Data *)(pHead->pFrame+sizeof(ANS_DZ2_See)); m_wndList.ShowWindow( SW_HIDE ); //加快显示速度 m_wndList.DeleteAllItems(); TCHAR Buf[32]={0}; for ( int i=0 ; ilCount;i++ ) { //m_wndList.SetHeadings(_T("序号,50; 业务名称,120;费率,55;发送时间,75;每天发送,70; 星 期,200;")); //写到列表 m_wndList.InsertItem( i , _itot(i+1,Buf,10),0); m_wndList.SetItemData(i,pData->lOperCmdID); m_wndList.SetItemText(i,1,pData->szName); //业务名称 if ( pData->bDZ ) m_wndList.SetItemText(i,2, _T(" 是")); else m_wndList.SetItemText(i,2, _T("")); _stprintf(Buf,_T("%2d") , pData->lPrice ); m_wndList.SetItemText(i,3,Buf); //费率 _stprintf(Buf,_T("%2d") , pData->lSendNum ); //发送条数 m_wndList.SetItemText(i,4,Buf); //_stprintf(Buf,"%02d:%02d:%02d" , pData->tDZSendTime1.wHour,pData->tDZSendTime1.wMinute,pData->tDZSendTime1.wSecond ); //m_wndList.SetItemText(i,3,Buf); //发送时间 if ( pData->bWeek ) { m_wndList.SetItemText(i,5,_T(" 否")); memset(Buf,0,sizeof(Buf)); if ( pData->szWeekDay[0] == '1' ) _tcscat(Buf,_T("、日")); if ( pData->szWeekDay[1] == '1' ) _tcscat(Buf,_T("、一")); if ( pData->szWeekDay[2] == '1' ) _tcscat(Buf,_T("、二")); if ( pData->szWeekDay[3] == '1' ) _tcscat(Buf,_T("、三")); if ( pData->szWeekDay[4] == '1' ) _tcscat(Buf,_T("、四")); if ( pData->szWeekDay[5] == '1' ) _tcscat(Buf,_T("、五")); if ( pData->szWeekDay[6] == '1' ) _tcscat(Buf,_T("、六")); m_wndList.SetItemText(i,6,Buf+2); } else { m_wndList.SetItemText(i,5,_T(" 是")); m_wndList.SetItemText(i,6,_T("")); } m_wndList.SetItemText(i,7,pData->szBZ); //业务说明 m_wndList.SetItemText(i,8,pData->szOperCmd); //业务说明 _stprintf(Buf,_T("%04d-%02d-%02d") , pData->tBirthday.wYear,pData->tBirthday.wMonth,pData->tBirthday.wDay ); m_wndList.SetItemText(i,9,Buf); //业务说明 pData ++; } m_wndList.ShowWindow( SW_SHOW ); //加快显示速度 m_bRefresh2 = false; return true; } if ( pHead->lFuncType == SMSFUNC_DZ_ADD ) { ANS_DZ_Add * pAdd = (ANS_DZ_Add *)pHead->pFrame; if ( pAdd->bOK ) { m_wndList.SetItemText( pAdd->lItemID , 2 , _T(" 是") ); MessageBox( _T("订阅实用短信成功,明天起你将会收到来自平台的娱乐短消息!"),_T("提示"),MB_ICONINFORMATION); } else { MessageBox( _T("订阅实用短信失败,请与管理员联系!"),_T("错误"),MB_ICONWARNING); } return true; } if ( pHead->lFuncType == SMSFUNC_DZ_ADD2 ) { ANS_DZ_Add2 * pAdd = (ANS_DZ_Add2 *)pHead->pFrame; if ( pAdd->bOK ) { m_wndList.SetItemText( pAdd->lItemID , 2 , _T(" 是") ); CString strBrithday; strBrithday.Format(_T("%04d-%02d-%02d") , pAdd->tBirthday.wYear,pAdd->tBirthday.wMonth,pAdd->tBirthday.wDay ); m_wndList.SetItemText(pAdd->lItemID,9,strBrithday); //业务说明 MessageBox( _T("订阅育儿短信成功,明天起你将会收到来自平台的育儿短消息!"),_T("提示"),MB_ICONINFORMATION); } else { MessageBox( _T("订阅育儿短信失败,请与管理员联系!"),_T("错误"),MB_ICONWARNING); } return true; } if ( pHead->lFuncType == SMSFUNC_DZ_DEL ) { ANS_DZ_Del * pDel = (ANS_DZ_Del *)pHead->pFrame; if ( pDel->bOK ) { m_wndList.SetItemText( pDel->lItemID , 2 , _T("") ); MessageBox( _T("取消订阅实用短信成功!"),_T("提示"),MB_ICONINFORMATION); } else { MessageBox( _T("取消订阅实用短信失败,请与管理员联系!"),_T("错误"),MB_ICONWARNING); } return true; } if ( pHead->lFuncType == SMSFUNC_DZ_TEST ) { ANS_DZ_Test * pTest = (ANS_DZ_Test *)pHead->pFrame; if ( pTest->bOK ) { MessageBox( _T("演示信息发送成功,请留意查看手机的短消息!"),_T("提示"),MB_ICONINFORMATION); } else { MessageBox( _T("演示信息发送失败,请与管理员联系!"),_T("错误"),MB_ICONWARNING); } return true; } return false; } void CFSmsSP::ShowRMenu() { if (!m_pMainFrame->GetUserPurview(PURVIEW_SMSSP,false)) //没有查看权限 return ; CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelected(); CString str; if ( lItem >= 0 ) { bLock = isLockItem( lItem , false ); //取得是否正在锁定 str = m_wndList.GetItemText(lItem,2); str.TrimLeft(); str.TrimRight(); } BOOL bXD = false; str = m_wndList.GetItemText(lItem,8); if ( str == CString(_T("XD")) ) bXD = true; //查看 if ( lItem >=0 && !bLock ) { menu.AppendMenu(MF_STRING , MENU_SP_SEE, _T(" 查 看 ") ); if ( !bXD ) { if ( str=="是" ) menu.AppendMenu(MF_STRING , MENU_SP_QXDZ, _T(" 取消订阅 ") ); else menu.AppendMenu(MF_STRING , MENU_SP_DZ, _T(" 订 阅 ") ); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_SP_TEST, _T(" 演示信息 ") ); } } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SP_SEE , _T(" 查 看 ") ); if ( !bXD ) { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SP_DZ , _T(" 订 阅 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SP_QXDZ , _T(" 取消订阅 ") ); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SP_TEST, _T(" 演示信息 ") ); } } menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_SP_REFRESH, _T(" 刷 新 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } long CFSmsSP::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void CFSmsSP::OnDblclkSmsspList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_SP_See(); } void CFSmsSP::OnRclickSmsspList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenu(); } void CFSmsSP::OnKeydownSmsspList(NMHDR* pNMHDR, LRESULT* pResult) { LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR; // TODO: Add your control notification handler code here *pResult = 0; } void CFSmsSP::OnItemchangedSmsspList(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0; if ( m_wndList.GetSelectedCount() > 1 ) //大于1,不处理 return ; if ( m_bRefresh2 ) return ; //原是禁用,现在是启用 if ( pNMListView->uNewState==8192 && pNMListView->uOldState== 4096 ) { REQ_DZ_Add * pAdd = new REQ_DZ_Add; memset(pAdd,0,sizeof(REQ_DZ_Add)); pAdd->lItemID = pNMListView->iItem; pAdd->lOperCmdID = m_wndList.GetItemData(pNMListView->iItem); pAdd->lCorpID = m_pMainFrame->m_lCorpID; pAdd->lUserID = m_pMainFrame->m_lUserID; m_pMainFrame->SendFrame( SMSFUNC_DZ_ADD , (BYTE*)pAdd , sizeof( REQ_DZ_Add ) ); //发送取资料的请求 } //原是启用,现在是禁用 if ( pNMListView->uNewState==4096 && pNMListView->uOldState== 8192 ) { REQ_DZ_Del * pDel = new REQ_DZ_Del; memset(pDel,0,sizeof(REQ_DZ_Del)); pDel->lItemID = pNMListView->iItem; pDel->lOperCmdID = m_wndList.GetItemData(pNMListView->iItem); pDel->lCorpID = m_pMainFrame->m_lCorpID; pDel->lUserID = m_pMainFrame->m_lUserID; m_pMainFrame->SendFrame( SMSFUNC_DZ_DEL , (BYTE*)pDel , sizeof( REQ_DZ_Del ) ); //发送取资料的请求 } } void CFSmsSP::OnOK() { //CDialog::OnOK(); } void CFSmsSP::OnCancel() { //CDialog::OnCancel(); } void CFSmsSP::SetLockItem(long lItem, BOOL bLock) { if ( bLock ) m_wndList.SetIconIndex( lItem , 1 ); else m_wndList.SetIconIndex( lItem , 0 ); } BOOL CFSmsSP::isLockItem(long lItem, BOOL bShowWarning) { BOOL b = (m_wndList.GetIconIndex(lItem) == 1); if ( b && bShowWarning ) { MessageBox( _T(" 记录被锁定,请等待服务器返回后再操作!") , _T("锁定中") , MB_ICONINFORMATION ); } return b; } void CFSmsSP::On_SP_See() { long lItem = GetCurrentSelected(); if ( lItem <0 ) return ; //m_wndList.SetHeadings(_T("序号,50; 栏目名称,100;订阅,50;费率,55;发送条数,75;每天发送,70; 星 期,200; 业务说明,250")); CString strTemp; DLG_SP_See dlg(this); dlg.m_strMobile= m_strMobile; dlg.m_strName= m_wndList.GetItemText(lItem,1); strTemp = m_wndList.GetItemText(lItem,2);strTemp.TrimLeft();strTemp.TrimRight(); if ( strTemp == _T("是") ) dlg.m_bDZ = true; else dlg.m_bDZ = false; dlg.m_strPrice = m_wndList.GetItemText(lItem,3); dlg.m_strSendCount = m_wndList.GetItemText(lItem,4); strTemp = m_wndList.GetItemText(lItem,5);strTemp.TrimLeft();strTemp.TrimRight(); if ( strTemp == _T("是") ) dlg.m_strBL = _T("每天发送"); else { strTemp = m_wndList.GetItemText(lItem,6); dlg.m_strBL.Format( _T("每星期%s发送"),strTemp); } dlg.m_strMsg = m_wndList.GetItemText(lItem,7); dlg.m_strOperCmd = m_wndList.GetItemText(lItem,8); dlg.m_strBirthday= m_wndList.GetItemText(lItem,9); BOOL bXD = dlg.m_strOperCmd==CString(_T("XD"))?true:false; int iRet = dlg.DoModal(); if ( iRet == SP_SEE_DZ ) { if ( bXD ) { m_tBirthday = dlg.m_tBirthday; On_SP_DZ2(); } else { On_SP_DZ(); } return; } if ( iRet == SP_SEE_QXDZ ) { On_SP_QXDZ(); return; } if ( iRet == SP_SEE_TEST ) { On_SP_Test(); return; } } void CFSmsSP::On_SP_DZ() { if ( m_strMobile.GetLength() <= 0 ) { #ifdef MOBSET_CARD_VER MessageBox( _T("手机号码有误,请联系在用户信息中更改!"),_T("错误"),MB_ICONWARNING ); #else MessageBox( _T("手机号码有误,请联系管理员修改你的资料!"),_T("错误"),MB_ICONWARNING ); #endif return ; } long lItem = GetCurrentSelected(); if ( lItem <0 ) return ; REQ_DZ_Add * pAdd = new REQ_DZ_Add; memset(pAdd,0,sizeof(REQ_DZ_Add)); pAdd->lItemID = lItem; pAdd->lOperCmdID = m_wndList.GetItemData(lItem); pAdd->lCorpID = m_pMainFrame->m_lCorpID; pAdd->lUserID = m_pMainFrame->m_lUserID; m_pMainFrame->SendFrame( SMSFUNC_DZ_ADD , (BYTE*)pAdd , sizeof( REQ_DZ_Add ) ); //发送取资料的请求 } void CFSmsSP::On_SP_DZ2() { if ( m_strMobile.GetLength() <= 0 ) { #ifdef MOBSET_CARD_VER MessageBox( _T("手机号码有误,请联系在用户信息中更改!"),_T("错误"),MB_ICONWARNING ); #else MessageBox( _T("手机号码有误,请联系管理员修改你的资料!"),_T("错误"),MB_ICONWARNING ); #endif return ; } long lItem = GetCurrentSelected(); if ( lItem <0 ) return ; REQ_DZ_Add2 * pAdd = new REQ_DZ_Add2; memset(pAdd,0,sizeof(REQ_DZ_Add2)); pAdd->lItemID = lItem; pAdd->lOperCmdID = m_wndList.GetItemData(lItem); pAdd->lCorpID = m_pMainFrame->m_lCorpID; pAdd->lUserID = m_pMainFrame->m_lUserID; m_tBirthday.GetAsSystemTime(pAdd->tBirthday); m_pMainFrame->SendFrame( SMSFUNC_DZ_ADD2 , (BYTE*)pAdd , sizeof( REQ_DZ_Add2 ) ); //发送取资料的请求 } void CFSmsSP::On_SP_QXDZ() { long lItem = GetCurrentSelected(); if ( lItem <0 ) return ; REQ_DZ_Del * pDel = new REQ_DZ_Del; memset(pDel,0,sizeof(REQ_DZ_Del)); pDel->lItemID = lItem; pDel->lOperCmdID = m_wndList.GetItemData(lItem); pDel->lCorpID = m_pMainFrame->m_lCorpID; pDel->lUserID = m_pMainFrame->m_lUserID; m_pMainFrame->SendFrame( SMSFUNC_DZ_DEL , (BYTE*)pDel , sizeof( REQ_DZ_Del ) ); //发送取资料的请求 } void CFSmsSP::On_SP_Test() { if ( m_strMobile.GetLength() <= 0 ) { #ifdef MOBSET_CARD_VER MessageBox( _T("手机号码有误,请联系在用户信息中更改!"),_T("错误"),MB_ICONWARNING ); #else MessageBox( _T("手机号码有误,请联系管理员修改你的资料!"),_T("错误"),MB_ICONWARNING ); #endif return ; } long lItem = GetCurrentSelected(); if ( lItem <0 ) return ; REQ_DZ_Test * pTest = new REQ_DZ_Test; memset(pTest,0,sizeof(REQ_DZ_Test)); pTest->lItemID = lItem; pTest->lOperCmdID = m_wndList.GetItemData(lItem); pTest->lCorpID = m_pMainFrame->m_lCorpID; pTest->lUserID = m_pMainFrame->m_lUserID; CString strTemp; strTemp = m_wndList.GetItemText(lItem,3);strTemp.TrimLeft();strTemp.TrimRight(); pTest->lPrice = _ttol(strTemp); strTemp = m_wndList.GetItemText(lItem,4);strTemp.TrimLeft();strTemp.TrimRight(); pTest->lSendCount = _ttol(strTemp); _tcscpy(pTest->szMobile , m_strMobile ); m_pMainFrame->SendFrame( SMSFUNC_DZ_TEST , (BYTE*)pTest , sizeof( REQ_DZ_Test ) ); //发送取资料的请求 } void CFSmsSP::On_SP_Refresh() { RefreshInfo(); }