// FSmsQueryLog.cpp : implementation file // #include "stdafx.h" #include "corpsms.h" #include "FSmsQueryLog.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CFSmsQueryLog dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "FSmsLog.h" #include "DLG_SmsQueryLog_See.h" #include "DLG_SmsQueryLog_Export.h" CFSmsQueryLog::CFSmsQueryLog(CWnd* pParent /*=NULL*/) : CDialog(CFSmsQueryLog::IDD, pParent) { //{{AFX_DATA_INIT(CFSmsQueryLog) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; m_bShowToday = true; m_lRefreshStatusIndex = 0; } void CFSmsQueryLog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFSmsQueryLog) DDX_Control(pDX, IDC_SMSQUERYLOG_LIST, m_wndList); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFSmsQueryLog, CDialog) //{{AFX_MSG_MAP(CFSmsQueryLog) ON_WM_SIZE() ON_NOTIFY(LVN_KEYDOWN, IDC_SMSQUERYLOG_LIST, OnKeydownSmsquerylogList) ON_NOTIFY(NM_RCLICK, IDC_SMSQUERYLOG_LIST, OnRclickSmsquerylogList) ON_NOTIFY(NM_DBLCLK, IDC_SMSQUERYLOG_LIST, OnDblclkSmsquerylogList) //}}AFX_MSG_MAP ON_COMMAND( MENU_QUERYLOG_SEE , On_User_See ) ON_COMMAND( MENU_QUERYLOG_SEND , On_User_Send ) ON_COMMAND( MENU_QUERYLOG_DEL , On_User_Del ) ON_COMMAND( MENU_QUERYLOG_EXPORT , On_User_Export ) ON_COMMAND( MENU_QUERYLOG_REFRESH , On_User_Refresh ) ON_COMMAND( MENU_QUERYLOG_REFSTATUS , On_User_RefStatus ) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFSmsQueryLog message handlers BOOL CFSmsQueryLog::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 ); m_AdoRS2.SetAdoConnection( &m_pMainFrame->m_adoConnection ); //初始化List m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSDF) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSYF) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSJS) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSSB) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,50; 查询者,150;发送内容,120; 回复内容,280;状态,80;发送时间,130;")); m_wndList.SetGridLines(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 CFSmsQueryLog::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if ( m_bInit ) { m_wndList.MoveWindow( 0 , 0 , cx,cy); } } void CFSmsQueryLog::SetToday(BOOL bToday) { if ( m_bShowToday != bToday ) { m_bShowToday = bToday; m_bRefresh = false; } } void CFSmsQueryLog::ShowRMenu() { CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelected(); if ( lItem >= 0 ) { menu.AppendMenu(MF_STRING , MENU_QUERYLOG_SEE , _T(" 查 看 ") ); menu.AppendMenu(MF_STRING , MENU_QUERYLOG_SEND, _T(" 发送短信 ") ); menu.AppendMenu(MF_STRING , MENU_QUERYLOG_DEL , _T(" 删 除 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QUERYLOG_SEE , _T(" 查 看 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QUERYLOG_SEND, _T(" 发送短信 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QUERYLOG_DEL, _T(" 删 除 ") ); } menu.AppendMenu(MF_SEPARATOR ); //导出 menu.AppendMenu(MF_STRING , MENU_QUERYLOG_EXPORT, _T(" 导 出 ") ); menu.AppendMenu(MF_SEPARATOR ); //刷新 menu.AppendMenu(MF_STRING , MENU_QUERYLOG_REFRESH, _T(" 刷 新 ") ); //刷新 menu.AppendMenu(MF_STRING , MENU_QUERYLOG_REFSTATUS, _T(" 刷新状态 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } BOOL CFSmsQueryLog::ProcessSocket(Socket_Head *pHead) { //收到短信 if (pHead->lFuncType == SMSFUNC_QUERYLOG_SEE) { ANS_QueryLog_See * pRecv = (ANS_QueryLog_See *)pHead->pFrame; ANS_QueryLog_Data * pData = (ANS_QueryLog_Data *)(pHead->pFrame+sizeof(ANS_QueryLog_See)); m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 //添加到数据库里 for ( int i = 0;ilCount;i++) { ANS_QueryLog_Data sms={0}; sms = *pData; RecvNewQueryLog(sms); pData++; //显示下一条 } m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 return true; } if (pHead->lFuncType == SMSFUNC_SENDSTATUS) { ANS_SendStatus * pStatus = (ANS_SendStatus *)pHead->pFrame; ANS_SendStatus_Data * pData = (ANS_SendStatus_Data *)(pHead->pFrame+sizeof(ANS_SendStatus)); for ( int i = 0;ilCount;i++) { if ( pData->lStatus != -1 ) //如果其值为-1,证明状态没变,所以不必更改 { COleDateTime tSend(pData->tSendTime ); COleDateTime tRecv(pData->tRecvTime ); //将结果先入数据库 TCHAR szBuf[32]; TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("select * from QueryLog where SendID=%d") , pData->lSendID ); if ( m_AdoRS.Open(szSelect) && m_AdoRS.GetRecordCount() ) { m_AdoRS.MoveFirst(); m_AdoRS.PutCollect( _T("Status") , pData->lStatus ); //m_AdoRS.PutCollect( _T("SendTime") , tSend ); //m_AdoRS.PutCollect( _T("RecvTime") , tRecv ); m_AdoRS.Update(); m_AdoRS.Close(); } //更新显示 long lSendID = m_wndList.GetItemData(pData->lItemID); if ( lSendID == pData->lSendID ) //更新显示内容 { #ifdef STATUS_ENABLE_RECV long lIcon = CFSmsLog::GetStatusText( pData->lStatus , szBuf ); #else long lIcon = CFSmsLog::GetStatusText2(pData->lStatus , szBuf); #endif m_wndList.SetItemText(pData->lItemID,4,szBuf); m_wndList.SetIconIndex( pData->lItemID , lIcon ); } } pData ++; //继续处理下一条 } RefreshStatus( false ); //查询下1000条的状态 return true; } return false; } long CFSmsQueryLog::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } BOOL CFSmsQueryLog::RefreshInfo() { BOOL bQuery = m_pMainFrame->m_Setup.bSDK & SDK_AUTOQUERY ? true:false; if ( bQuery ) //有自动查询服务 { m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 m_bRefresh = true; m_wndList.DeleteAllItems(); TCHAR szSelect[128]={0}; if ( m_bShowToday ) { //仅查询当天的 SYSTEMTIME t;::GetLocalTime(&t); if ( m_pMainFrame->m_Setup.bSQLUse ) _stprintf( szSelect , _T("select * from QueryLog where SendTime>='%04d%02d%02d' order by SendTime"),t.wYear,t.wMonth,t.wDay ); //查询已发短信 else _stprintf( szSelect , _T("select * from QueryLog where SendTime>=#%04d-%02d-%02d# order by SendTime"),t.wYear,t.wMonth,t.wDay ); //查询已发短信 } else { _stprintf( szSelect , _T("select * from QueryLog order by SendTime") ); //查询接收记录 } //_stprintf( szSelect , _T("select * from smsRecv") ); //查询接收记录 BOOL b = m_AdoRS.Open( szSelect ); long lCount = m_AdoRS.GetRecordCount(); if ( b && lCount ) { m_AdoRS.MoveFirst(); long iItem = 0; while( !m_AdoRS.IsEOF() ) { long lSendID; long lStatus; BOOL bRead; TCHAR szSendNum[128]={0}; TCHAR szSender[32]={0}; TCHAR szRecvMsg[180]={0}; TCHAR szRetMsg[256]={0}; TCHAR szStatus[24]={0}; COleDateTime tSend; m_AdoRS.GetCollect( _T("SendID") , lSendID ); m_AdoRS.GetCollect( _T("Status") , lStatus ); m_AdoRS.GetCollect( _T("Reader") , bRead ); m_AdoRS.GetCollect( _T("SendNum") , szSendNum ); m_AdoRS.GetCollect( _T("Sender") , szSender ); m_AdoRS.GetCollect( _T("RecvMsg") , szRecvMsg ); m_AdoRS.GetCollect( _T("RetMsg") , szRetMsg ); #ifdef STATUS_ENABLE_RECV long lIcon = CFSmsLog::GetStatusText( lStatus , szStatus ); #else long lIcon = CFSmsLog::GetStatusText2( lStatus , szStatus ); #endif //m_wndList.SetIconIndex( iItem , lIcon ); m_AdoRS.GetCollect( _T("SendTime"), tSend ); if ( _tcslen(szSender)>0 ) { _tcscat( szSendNum , _T("-") ); _tcscat( szSendNum , szSender ); } //_T("序号,50; 手机号码,150;发送内容,120; 回复内容,280;状态,60;发送时间,130;")); //m_wndList.InsertItem( 0 , _itot( iItem+1,szSelect,10) , bRead ); //已读与未读图标不一样 m_wndList.InsertItem( 0 , _itot( iItem+1,szSelect,10) , lIcon ); m_wndList.SetItemData( 0,lSendID ); m_wndList.SetItemText(0,1,szSendNum); m_wndList.SetItemText(0,2,szRecvMsg); m_wndList.SetItemText(0,3,szRetMsg); m_wndList.SetItemText(0,4,szStatus); if ( tSend.GetStatus() == COleDateTime::valid ) { _stprintf( szRetMsg , _T("%04d.%02d.%02d %02d:%02d") , tSend.GetYear(),tSend.GetMonth(),tSend.GetDay(),tSend.GetHour(),tSend.GetMinute() ); m_wndList.SetItemText(0,5,szRetMsg); } iItem++; m_AdoRS.MoveNext(); } } m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 RecvQueryLog(); //取新的查询内容 RefreshStatus(); } return true; } BOOL CFSmsQueryLog::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CFSmsQueryLog::ReHide() { ShowWindow( SW_HIDE ); return true; } void CFSmsQueryLog::RecvQueryLog() { BOOL bQuery = m_pMainFrame->m_Setup.bSDK & SDK_AUTOQUERY ? true:false; if ( bQuery ) //有自动查询服务 { REQ_QueryLog_See * pRecv = new REQ_QueryLog_See; pRecv->lCorpID = m_pMainFrame->m_lCorpID; pRecv->lUserID = m_pMainFrame->m_lUserID; m_pMainFrame->SendFrame( SMSFUNC_QUERYLOG_SEE , (BYTE*)pRecv , sizeof(REQ_QueryLog_See)); } } void CFSmsQueryLog::RecvNewQueryLog(ANS_QueryLog_Data sms) { TCHAR szName[64]={0}; TCHAR szName2[64]={0}; CString strSelect; BOOL bGetAddress=false; //接收到新的短信,先查询其在电话本里的姓名 if ( !bGetAddress && m_pMainFrame->GetUserPurview( PURVIEW_PADDRESS,false ) ) //有私人电话本查看权限 { strSelect.Format( _T("select * from paddress where Mobile like '%%%s'") , sms.szMobile ); if ( m_AdoRS2.Open(strSelect) && m_AdoRS2.GetRecordCount() ) { m_AdoRS2.GetCollect( _T("Name") , szName ); } } if ( !bGetAddress && m_pMainFrame->GetUserPurview( PURVIEW_USER_MANAGER,false ) ) //有公用电话本查看权限 { strSelect.Format( _T("select * from gaddress where Mobile like '%%%s'") , sms.szMobile ); if ( m_AdoRS2.Open(strSelect) && m_AdoRS2.GetRecordCount() ) { m_AdoRS2.GetCollect( _T("Name") , szName ); } } long lSendID=sms.lSendID; BOOL b = m_AdoRS.Open( _T("QueryLog") , adCmdTable ); //打开数据库,准备添加 if ( b ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect(_T("QueryLogID") ,sms.lQueryLogID); m_AdoRS.PutCollect(_T("QueryID") ,sms.lQueryID); m_AdoRS.PutCollect(_T("CorpID") ,sms.lCorpID); m_AdoRS.PutCollect(_T("UserID") ,sms.lUserID); m_AdoRS.PutCollect(_T("SendID") ,sms.lSendID); m_AdoRS.PutCollect(_T("Status") ,0); m_AdoRS.PutCollect(_T("SendNum") ,sms.szMobile); m_AdoRS.PutCollect(_T("Sender") ,szName); m_AdoRS.PutCollect(_T("RecvMsg") ,sms.szRecvMsg); m_AdoRS.PutCollect(_T("RetMsg") ,sms.szRetMsg); m_AdoRS.PutCollect(_T("SendTime") ,sms.tSendTime ); m_AdoRS.Update(); m_AdoRS.Close(); } //显示新收到的短信 //_T("序号,50; 手机号码,150;发送内容,120; 回复内容,280;状态,60;发送时间,130;")); long lCount = m_wndList.GetItemCount(); TCHAR szBuf[32]={0}; TCHAR szStatus[32]={0}; m_wndList.InsertItem( 0, _itot( lCount+1,szBuf,10) , 0 ); m_wndList.SetItemData(0,lSendID ); if ( _tcslen(szName)>0 ) { _stprintf( szBuf , _T("%s-%s") , sms.szMobile , szName ); m_wndList.SetItemText(0,1,szBuf); } else { m_wndList.SetItemText(0,1,sms.szMobile); } m_wndList.SetItemText(0,2,sms.szRecvMsg); m_wndList.SetItemText(0,3,sms.szRetMsg); #ifdef STATUS_ENABLE_RECV long lIcon = CFSmsLog::GetStatusText( 0 , szStatus ); #else long lIcon = CFSmsLog::GetStatusText2( 0 , szStatus ); #endif m_wndList.SetItemText(0,4,szStatus); COleDateTime tSend(sms.tSendTime); if ( tSend.GetStatus() == COleDateTime::valid ) { _stprintf( szStatus , _T("%04d.%02d.%02d %02d:%02d") , tSend.GetYear(),tSend.GetMonth(),tSend.GetDay(),tSend.GetHour(),tSend.GetMinute() ); m_wndList.SetItemText(0,5,szStatus); } } void CFSmsQueryLog::OnKeydownSmsquerylogList(NMHDR* pNMHDR, LRESULT* pResult) { LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR; *pResult = 0; if ( pLVKeyDow->wVKey == VK_DELETE ) { On_User_Del(); } if ( pLVKeyDow->wVKey == VK_SPACE) { On_User_See(); } if ( pLVKeyDow->wVKey == 'S' || pLVKeyDow->wVKey == 's') { On_User_Send(); } if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r') { On_User_Refresh(); } if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a') { m_wndList.SelectAllItems(); } } void CFSmsQueryLog::OnRclickSmsquerylogList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenu(); } void CFSmsQueryLog::OnDblclkSmsquerylogList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_User_See(); } void CFSmsQueryLog::On_User_See() { long lItem = GetCurrentSelected(); if ( lItem< 0 ) return ; CString strStatus; CString strSender; CString strSendTime; CString strRecvMsg; CString strRetMsg; strStatus = m_wndList.GetItemText(lItem,4); strSender = m_wndList.GetItemText(lItem,1); strSendTime = m_wndList.GetItemText(lItem,5); strRecvMsg = m_wndList.GetItemText(lItem,2); strRetMsg = m_wndList.GetItemText(lItem,3); DLG_SmsQueryLog_See dlg( this ); dlg.m_strStatus = strStatus; dlg.m_strSender = strSender; dlg.m_strSendTime= strSendTime; dlg.m_strRecvMsg = strRecvMsg; dlg.m_strRetMsg = strRetMsg; dlg.DoModal(); } void CFSmsQueryLog::On_User_Send() { long lItem = GetCurrentSelected(); if ( lItem <0 ) return ; //ReadSms(lItem); //状态变为已读 if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //新建列表 { //添加内容 m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( _T("") ); //内容为空 //添加号码 long lCount = m_wndList.GetSelectedCount(); if ( lCount <= 0 ) return ; //分配数据 long lSize = sizeof(Send_User)*lCount; BYTE *pS = new BYTE[lSize]; memset( pS , 0 , lSize ); Send_User * pUser = (Send_User * )pS; TCHAR szSelect[128]={0}; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); while ( pos ) { long lItem = m_wndList.GetNextSelectedItem( pos ); long lSendID = m_wndList.GetItemData( lItem ); if ( lSendID > 0 ) { _stprintf( szSelect , _T("select * from QueryLog where SendID=%d"), lSendID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Sender") , pUser->szName); m_AdoRS.GetCollect( _T("SendNum") , pUser->szMobile); } } pUser ++; } m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS); delete pS; } } void CFSmsQueryLog::On_User_Del() { long lCount = m_wndList.GetSelectedCount(); long *lDel = new long[lCount+2]; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long i = 0; while(pos) { lDel[i]= m_wndList.GetNextSelectedItem(pos); i ++; } long lSendID = 0; TCHAR szSelect[128]; //倒转删除 m_wndList.ShowWindow( SW_HIDE ); //加快显示的速度 for ( i = lCount ; i>0 ; i-- ) { lSendID = m_wndList.GetItemData( lDel[i-1] ); _stprintf( szSelect , _T("delete from QueryLog where SendID=%d ") , lSendID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { m_wndList.DeleteItem(lDel[i-1]); //从列表中删除 } } m_wndList.ShowWindow( SW_SHOW ); //加快显示的速度 delete lDel; } void CFSmsQueryLog::On_User_Export() { DLG_SmsQueryLog_Export dlg(this); dlg.SetParam(&m_AdoRS2,&m_wndList); dlg.DoModal(); } void CFSmsQueryLog::On_User_Refresh() { RefreshInfo(); } void CFSmsQueryLog::On_User_RefStatus() { RefreshStatus(); } void CFSmsQueryLog::RefreshStatus(BOOL bBegin) { //第一步,查找状态为未固定的短信 long lCount = m_wndList.GetItemCount(); long * pSendID= new long[STATUS_MAX_QUERY*3+100]; long lCount2=0; if ( bBegin ) m_lRefreshStatusIndex = 0; else m_lRefreshStatusIndex ++; for ( int i=m_lRefreshStatusIndex*STATUS_MAX_QUERY;i= STATUS_MAX_QUERY*3 ) //超过1000条了 break; } lCount = lCount2/3; //取得需要取状态的个数 if ( lCount > 0 ) { long lSize = sizeof(REQ_SendStatus)+sizeof(ANS_SendStatus_Data)*lCount; BYTE * pData = new BYTE[lSize];memset(pData,0,lSize); REQ_SendStatus * pStatus = (REQ_SendStatus *)pData; ANS_SendStatus_Data * pStatusData = (ANS_SendStatus_Data *)(pData+sizeof(REQ_SendStatus)); pStatus->lCorpID = m_pMainFrame->m_lCorpID; pStatus->lCount = lCount; for ( i=0;ilItemID = pSendID[i*3]; pStatusData->lSendID = pSendID[i*3+1]; pStatusData->lStatus = pSendID[i*3+2]; pStatusData++; } m_pMainFrame->SendFrame( SMSFUNC_SENDSTATUS , pData , lSize ); } delete pSendID; } long CFSmsQueryLog::GetItemStatus(long iItem) { TCHAR szStatus[16]={0}; TCHAR szTime[32]={0}; m_wndList.GetItemText( iItem , 4 , szStatus , sizeof(szStatus) ); m_wndList.GetItemText( iItem , 5 , szTime ,sizeof(szTime)); szTime[4]=0; szTime[7]=0; szTime[10]=0; long lYear=_ttol(szTime); long lMon =_ttol(szTime+5); long lDay =_ttol(szTime+8); CTime t1(lYear,lMon,lDay,0,0,0); CTime t2 = CTime::GetCurrentTime(); CTime t3 = t1 + CTimeSpan( 10, 0, 0, 0 ); if ( t3 < t2 ) //2日前的信息,跳过 { return SEND_STATUS_UNKNOW; } if ( !_tcscmp( szStatus , _T("提交成功") ) ) return SEND_STATUS_SUB_OK; if ( !_tcscmp( szStatus , _T("审核中") ) ) return SEND_STATUS_SUB_FILT; if ( !_tcscmp( szStatus , _T("提交失败") ) ) return SEND_STATUS_SUB_ERROR; if ( !_tcscmp( szStatus , _T("目标有误") ) ) return SEND_STATUS_SUB_NUMNOSUP; if ( !_tcscmp( szStatus , _T("审核失败") ) ) return SEND_STATUS_FILT_ERROR; if ( !_tcscmp( szStatus , _T("发送成功") ) ) return SEND_STATUS_SEND_OK; if ( !_tcscmp( szStatus , _T("发送失败") ) ) return SEND_STATUS_SEND_ERROR; if ( !_tcscmp( szStatus , _T("接收成功") ) ) return SEND_STATUS_RECV_OK; if ( !_tcscmp( szStatus , _T("接收失败") ) ) return SEND_STATUS_RECV_ERROR; // if ( !_tcscmp( szStatus , _T("未知状态") ) ) return SEND_STATUS_UNKNOW; }