CorpSms/FSmsLog.cpp
lujiang e17c4ce7ed 重新对窗口布局进行优化,解决缺字的情况。
对图标显示进行了优化,使用gdi+按DPI进行缩放。
2025-04-14 17:24:47 +08:00

1289 lines
36 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// FSmsLog.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "FSmsLog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFSmsLog dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_SMSLog_Export.h"
#include "DLG_Find_SmsLog.h"
#include "DLG_BAK.h"
#include "DLG_Find_Fail.h"
#include "DLG_SmsLog_MO.h"
CFSmsLog::CFSmsLog(CWnd* pParent /*=NULL*/)
: CDialog(CFSmsLog::IDD, pParent)
{
//{{AFX_DATA_INIT(CFSmsLog)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_lRefreshStatusIndex = 0;
m_bShowToday = true;
m_bShowAllRecord = false;
m_bNewDB = true;
}
void CFSmsLog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFSmsLog)
DDX_Control(pDX, IDC_SMSLOG_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFSmsLog, CDialog)
//{{AFX_MSG_MAP(CFSmsLog)
ON_WM_SIZE()
ON_NOTIFY(NM_RCLICK, IDC_SMSLOG_LIST, OnRclickSmslogList)
ON_NOTIFY(NM_DBLCLK, IDC_SMSLOG_LIST, OnDblclkSmslogList)
ON_NOTIFY(LVN_KEYDOWN, IDC_SMSLOG_LIST, OnKeydownSmslogList)
//}}AFX_MSG_MAP
ON_COMMAND( MENU_LOG_DEL , On_User_Del )
ON_COMMAND( MENU_LOG_SEE , On_User_See )
ON_COMMAND( MENU_LOG_SEND , On_User_Send )
ON_COMMAND( MENU_LOG_EXPORT , On_User_Export )
ON_COMMAND( MENU_LOG_REFRESH , On_User_Refresh )
ON_COMMAND( MENU_LOG_REFSTATUS , On_User_RefStatus )
ON_COMMAND( MENU_LOG_FIND , On_User_Find )
ON_COMMAND( MENU_LOG_BAK , On_User_Bak )
ON_COMMAND( MENU_LOG_QUERYFAIL , On_User_QueryFail )
ON_COMMAND( MENU_LOG_MO , On_User_MO )
ON_COMMAND( MENU_LOG_SHOWALLRECORD , On_User_Refresh_All)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFSmsLog message handlers
BOOL CFSmsLog::OnInitDialog()
{
CDialog::OnInitDialog();
//È¡µÃ¹²ÓòÎÊý
//CMainFrame * pFrame = static_cast <CMainFrame *>((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_SMSDF) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMS_SEND) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSJS) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSSB) );
m_wndList.SubClassWindow2();
#ifdef STATUS_ENABLE_RECV_TIME
m_wndList.SetHeadings(_T("ÐòºÅ,50; ״̬,70;·¢ÐźÅÂë,100;ÊÕÐźÅÂë,150; ¶ÌÐÅÄÚÈÝ,280;·¢ÐÅʱ¼ä,130;ÊÕÐÅʱ¼ä,130;"));
#else
m_wndList.SetHeadings(_T("ÐòºÅ,50; ״̬,70;·¢ÐźÅÂë,100;ÊÕÐźÅÂë,150; ¶ÌÐÅÄÚÈÝ,280;·¢ÐÅʱ¼ä,130"));
#endif
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
}
BOOL CFSmsLog::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFSmsLog::ReShow(BOOL bRefresh)
{
USES_CONVERSION;
m_AdoRS.Close();
if ( m_strBakDBName.GetLength()<=0 )
{
m_adoConnection.Close();
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
}
else
{
//½âÃÜÂë
char szPasswd[64]={0};strcpy(szPasswd , ACCESS_PASSWD );
char szKey[64]={0};strcpy( szKey , ACCESS_KEY );
char szNew2[64]={0};long lOut=sizeof(szNew2);
TCHAR szNew[64]={0};
CDes des;
des.Decrypt( szPasswd , strlen(szPasswd),szNew2,lOut,szKey,8);
#ifdef UNICODE
_tcscpy(szNew,A2W(szNew2));
#else
_tcscpy(szNew,szNew2);
#endif
m_adoConnection.Close();
if ( !m_adoConnection.ConnectAccess(m_strBakDBName,szNew ) ) //Á¬½ÓÊý¾Ý¿â´íÎó,ÐèÒªÖØÐ´´½¨
{
MessageBox( _T("´ò¿ª±¸·ÝÎļþ´íÎó£¬Çë¼ì²é!") , _T("´íÎó") , MB_ICONWARNING );
m_bShowToday = true;
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
}
else
{
m_bShowToday = false;
m_AdoRS.SetAdoConnection( &m_adoConnection ); //ÉèÖÃÁ¬½Ó
}
}
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh || m_bNewDB )
{
RefreshInfo();
m_bNewDB = false;
}
return true;
}
BOOL CFSmsLog::RefreshInfo()
{
m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
m_bRefresh = true;
m_wndList.DeleteAllItems();
TCHAR szSelect[256]={0};
long lCount2 = m_wndList.GetColumnCount();
if (lCount2>5)
{
for ( int i=lCount2;i>5;i--)
m_wndList.DeleteColumn(i);
}
CString strTop;
if ( !m_bShowAllRecord && m_pMainFrame->m_Setup.lTopRecord>0 )
{
strTop.Format(_T(" top %d "),m_pMainFrame->m_Setup.lTopRecord );
}
if ( m_bShowToday )
{
//½ö²éѯµ±ÌìµÄ
SYSTEMTIME t;::GetLocalTime(&t);
if ( m_pMainFrame->m_Setup.bSQLUse )
_stprintf( szSelect , _T("select %s * from smslog where SubTime>='%04d%02d%02d' %s order by SubTime desc"),strTop,t.wYear,t.wMonth,t.wDay,m_strFindAdd ); //²éѯÒÑ·¢¶ÌÐÅ
else
_stprintf( szSelect , _T("select %s * from smslog where SubTime>=#%04d-%02d-%02d# %s order by SubTime desc"),strTop,t.wYear,t.wMonth,t.wDay,m_strFindAdd ); //²éѯÒÑ·¢¶ÌÐÅ
}
else
{
if ( m_strFindAdd.GetLength()>0 )
_stprintf( szSelect , _T("select * from smslog where 1 %s order by SubTime desc"),m_strFindAdd ); //²éѯ½ÓÊռǼ
else
_stprintf( szSelect , _T("select * from smslog order by SubTime desc") ); //²éѯÈÕÖ¾,ÏÔʾȫ²¿µÄ£¬²»ÓÃÖ»ÏÔʾͷ²¿·Ö
}
BOOL b = m_AdoRS.Open( szSelect );
long lSendID=0;
long lStatus=0;
TCHAR szStatus[24]={0};
TCHAR szSendNum[24]={0};
TCHAR szRecver[64]={0};
TCHAR szRecvNum[64]={0};
COleDateTime tSub;
COleDateTime tRecv;
CString strSubTime;
CString strRecvTime;
long lCount = m_AdoRS.GetRecordCount();
if ( !m_bShowAllRecord && m_pMainFrame->m_Setup.lTopRecord>0 &&
lCount>m_pMainFrame->m_Setup.lTopRecord )
{
lCount = m_pMainFrame->m_Setup.lTopRecord;
}
m_bShowAllRecord = false; //ÏÔʾÍêÒ»´Îºó£¬²»ÓÃÔÙÈ«²¿ÏÔʾ
if ( b && lCount )
{
CAdoSmsLog adoSms;
m_AdoRS.RecordBinding( adoSms );
m_AdoRS.MoveFirst();
long iItem = 0;
while( !m_AdoRS.IsEOF() && iItem<lCount )
{
/*
m_AdoRS.GetCollect( "SendID" , lSendID );
m_AdoRS.GetCollect( "Status" , lStatus );
m_AdoRS.GetCollect( "SendNum" , szSendNum );
m_AdoRS.GetCollect( "Recver" , szRecver );
m_AdoRS.GetCollect( "RecvNum" , szRecvNum );
m_AdoRS.GetCollect( "Msg" , szMsg );
m_AdoRS.GetCollect( "SubTime" , tSub );
m_AdoRS.GetCollect( "RecvTime", tRecv );
//
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ״̬,80;·¢ÐźÅÂë,80;ÊÕÐźÅÂë,120; ¶ÌÐÅÄÚÈÝ,280;·¢ÐÅʱ¼ä,80;ÊÕÐÅʱ¼ä,80;"));
m_wndList.InsertItem( iItem , _itot( lCount-iItem,szSelect,10) , 0 );
m_wndList.SetItemData( iItem,lSendID );
#ifdef STATUS_ENABLE_RECV
long lIcon = GetStatusText( lStatus , szStatus );
#else
long lIcon = GetStatusText2( lStatus , szStatus );
#endif
m_wndList.SetIconIndex( iItem , lIcon );
m_wndList.SetItemText(iItem,1,szStatus);
m_wndList.SetItemText(iItem,2,szSendNum);
if ( _tcslen(szRecver)>0 )
{
_tcscat( szRecvNum , "-" );
_tcscat( szRecvNum , szRecver );
}
m_wndList.SetItemText(iItem,3,szRecvNum);
m_wndList.SetItemText(iItem,4,szMsg);
if ( tSub.GetStatus() == COleDateTime::valid )
{
_stprintf( szMsg , "%04d.%02d.%02d %02d:%02d" , tSub.GetYear(),tSub.GetMonth(),tSub.GetDay(),tSub.GetHour(),tSub.GetMinute() );
m_wndList.SetItemText(iItem,5,szMsg);
}
#ifdef STATUS_ENABLE_RECV
if ( tRecv.GetStatus() == COleDateTime::valid )
{
_stprintf( szMsg , "%04d.%02d.%02d %02d:%02d" , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
m_wndList.SetItemText(iItem,6,szMsg);
}
#endif
*/
#ifdef STATUS_ENABLE_RECV
long lIcon = GetStatusText( adoSms.m_Status , szStatus );
#else
long lIcon = GetStatusText2( adoSms.m_Status , szStatus );
#endif
//ÎÞÐèҪ״̬µÄ¶ÌÐÅͨËùÓж¼·µ»Ø¡°·¢Ëͳɹ¦¡±¡£
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
if ( bNoStatus )
{
_tcscpy( szStatus , _T("·¢Ëͳɹ¦") );
lIcon = 1;
}
_tcscpy(szRecvNum,adoSms.m_RecvNum);
if ( m_pMainFrame->GetUserPurview_HideNum() )
{
szRecvNum[4]='*';
szRecvNum[5]='*';
szRecvNum[6]='*';
szRecvNum[7]='*';
}
if ( _tcslen(adoSms.m_Recver)>0 )
{
_tcscat( szRecvNum , _T("-") );
_tcscat( szRecvNum , adoSms.m_Recver );
}
if ( adoSms.m_SubTime.GetStatus() == COleDateTime::valid )
{
strSubTime.Format(_T("%04d.%02d.%02d %02d:%02d") , adoSms.m_SubTime.GetYear(),adoSms.m_SubTime.GetMonth(),adoSms.m_SubTime.GetDay(),adoSms.m_SubTime.GetHour(),adoSms.m_SubTime.GetMinute() );
}
#ifdef STATUS_ENABLE_RECV_TIME
if ( adoSms.m_RecvTime.GetStatus() == COleDateTime::valid && adoSms.m_RecvTime>COleDateTime(2010,1,1,0,0,0) )
{
strRecvTime.Format(_T("%04d.%02d.%02d %02d:%02d") , adoSms.m_RecvTime.GetYear(),adoSms.m_RecvTime.GetMonth(),adoSms.m_RecvTime.GetDay(),adoSms.m_RecvTime.GetHour(),adoSms.m_RecvTime.GetMinute() );
}
m_wndList.InsertItemAndCol( iItem , _itot( lCount-iItem,szSelect,10) , szStatus,adoSms.m_SendNum,szRecvNum,adoSms.m_Msg,strSubTime,strRecvTime );
#else
m_wndList.InsertItemAndCol( iItem , _itot( lCount-iItem,szSelect,10) , szStatus,adoSms.m_SendNum,szRecvNum,adoSms.m_Msg,strSubTime);
#endif
m_wndList.SetItemData( iItem, adoSms.m_SendID );
m_wndList.SetIconIndex( iItem , lIcon );
iItem++;
memset(&adoSms,0,sizeof(adoSms));
m_AdoRS.MoveNext();
}
}
RefreshStatus();
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
if ( strTop.GetLength()>0 && lCount>=m_pMainFrame->m_Setup.lTopRecord) //ÏÔʾÏÔʾ¡°ÏÔʾËùÓмǼ¡±µÄÑ¡Ïî
{
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_LOG_SHOWALLRECORD, _T(" ÏÔʾËùÓмǼ ") );
menu.AppendMenu(MF_SEPARATOR );
CRect rect;
GetWindowRect(&rect);
//ClientToScreen(&rect);
//ÏÔʾ²Ëµ¥
POINT pt ;
pt.x = rect.Width()/2;
pt.y = rect.Height()/3;
ClientToScreen(&pt);
//menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.TrackPopupMenu(TPM_CENTERALIGN,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
return true;
}
void CFSmsLog::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
long CFSmsLog::GetStatusText(long lStatus, TCHAR *pStatus)
{
_tcscpy( pStatus , _T("δ֪״̬") );
long lIcon = 0;
switch(lStatus)
{
case SEND_STATUS_SUB_OK:
_tcscpy( pStatus , _T("Ìá½»³É¹¦") );
break;
case SEND_STATUS_SUB_FILT:
//_tcscpy( pStatus , _T("ÉóºËÖÐ") );
_tcscpy( pStatus , _T("Ìá½»³É¹¦") );
break;
case SEND_STATUS_SUB_ERROR:
case SEND_STATUS_SUB_USERNOSMS:
case SEND_STATUS_SUB_CORPNOSMS:
case SEND_STATUS_SUB_CORPOVRDATE:
_tcscpy( pStatus , _T("Ìύʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_SUB_NUMNOSUP:
_tcscpy( pStatus , _T("Ä¿±êÓÐÎó") );
lIcon = 3;
break;
case SEND_STATUS_FILT_ERROR:
_tcscpy( pStatus , _T("ÉóºËʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_SEND_OK:
_tcscpy( pStatus , _T("·¢Ëͳɹ¦") );
lIcon = 1;
break;
case SEND_STATUS_SEND_ERROR:
_tcscpy( pStatus , _T("·¢ËÍʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_RECV_OK:
_tcscpy( pStatus , _T("½ÓÊճɹ¦") );
lIcon = 2;
break;
case SEND_STATUS_RECV_ERROR:
_tcscpy( pStatus , _T("½ÓÊÕʧ°Ü") );
lIcon = 3;
break;
}
return lIcon;
}
void CFSmsLog::OnRclickSmslogList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CFSmsLog::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
if ( lItem >= 0 )
{
if ( !m_pMainFrame->GetUserPurview_HideNum() )
{
menu.AppendMenu(MF_STRING , MENU_LOG_SEE , _T(" ²é ¿´ ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_SEE , _T(" ²é ¿´ ") );
}
menu.AppendMenu(MF_STRING , MENU_LOG_SEND, _T(" Ôٴη¢ËÍ ") );
menu.AppendMenu(MF_STRING , MENU_LOG_DEL , _T(" ɾ ³ý ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_SEND, _T(" Ôٴη¢ËÍ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_DEL, _T(" ɾ ³ý ") );
}
menu.AppendMenu(MF_SEPARATOR );
//Æ¥ÅäÉÏÐÐ
if ( !m_pMainFrame->GetUserPurview_HideNum() )
menu.AppendMenu(MF_STRING , MENU_LOG_MO, _T(" Æ¥ÅäÉÏÐÐ... ") );
else
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_MO, _T(" Æ¥ÅäÉÏÐÐ... ") );
//µ¼³ö
if ( !m_pMainFrame->GetUserPurview_HideNum() )
menu.AppendMenu(MF_STRING , MENU_LOG_EXPORT, _T(" µ¼³ö... ") );
else
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_EXPORT, _T(" µ¼³ö... ") );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_LOG_FIND , _T(" ²éÕÒ... ") );
menu.AppendMenu(MF_SEPARATOR );
if ( lItem >= 0 )
menu.AppendMenu(MF_STRING , MENU_LOG_BAK , _T(" ±¸·Ý... ") );
else
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED, MENU_LOG_BAK , _T(" ±¸·Ý... ") );
menu.AppendMenu(MF_SEPARATOR );
BOOL bFindFail = m_pMainFrame->m_Setup.bSDK & SDK_ALLOWFINDFAIL ? true:false;
if ( bFindFail && !bNoStatus )
{
menu.AppendMenu(MF_STRING , MENU_LOG_QUERYFAIL, _T(" ²éʧ°Ü¶ÌÐÅ ") );
menu.AppendMenu(MF_SEPARATOR );
}
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_LOG_REFRESH, _T(" ˢ Р") );
if ( !bNoStatus ) //Èç¹ûÎÞÐèҪ״̬£¬Ã»ÓÐË¢ÐÂ״̬µÄ²Ëµ¥
{
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_LOG_REFSTATUS, _T(" Ë¢ÐÂ״̬ ") );
}
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
long CFSmsLog::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CFSmsLog::On_User_See()
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
SMS_See sms = GetSms(lItem);
sms.lType = SMS_SEE_TYPE_LOG;
if ( m_pMainFrame->GetUserPurview_HideNum() )
{
sms.szRecver[4]='*';
sms.szRecver[5]='*';
sms.szRecver[6]='*';
sms.szRecver[7]='*';
}
DLG_SmsLogSee dlg(this);
dlg.SetParam(sms);
dlg.DoModal();
}
void CFSmsLog::On_User_Send()
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //н¨Áбí
{
//Ìí¼ÓÄÚÈÝ
m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( _T("\"%Memo%\"") );
//Ìí¼ÓºÅÂë
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;
CString strCM;
BOOL bCMFirst = m_pMainFrame->GetQJCM(strCM);
CString strMsg;
TCHAR szSelect[128]={0};
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
while ( pos )
{
long lItem = m_wndList.GetNextSelectedItem( pos );
long lSendID = m_wndList.GetItemData( lItem );
strMsg = _T("");
if ( lSendID > 0 )
{
_stprintf( szSelect , _T("select * from smslog where SendID=%d"), lSendID );
BOOL b = m_AdoRS.Open( szSelect );
if ( b && !m_AdoRS.IsEOF() )
{
m_AdoRS.GetCollect( _T("Recver") , pUser->szName);
m_AdoRS.GetCollect( _T("RecvNum") , pUser->szMobile);
m_AdoRS.GetCollect( _T("Msg") , strMsg);
}
}
else
{
CString strTemp22;
strTemp22 = m_wndList.GetItemText(lItem,3);
strMsg = m_wndList.GetItemText(lItem,4);
CStringArray strTemp23;
long lSplit = SplitString(strTemp23,strTemp22,_T("-"));
if ( strTemp23.GetCount()>=1 )
_tcscpy(pUser->szMobile,strTemp23.GetAt(0));
if ( strTemp23.GetCount()>=2 )
_tcscpy(pUser->szName,strTemp23.GetAt(1));
}
_tcscpy(pUser->szBZ,strMsg);
if ( strCM.GetLength()>0 )
{
if ( strMsg.Find(strCM) ==0 ) //¿ªÍ·ÊÇÇ©Ãû£¬È¥³ý
{
memset(pUser->szBZ,0,sizeof(pUser->szBZ));
_tcscpy(pUser->szBZ,((const TCHAR*)strMsg)+strCM.GetLength());
}
if ( strMsg.Find(strCM) == strMsg.GetLength()-strCM.GetLength() ) //½áβÊÇÇ©Ãû£¬È¥³ý
{
memset(pUser->szBZ,0,sizeof(pUser->szBZ));
_tcsncpy(pUser->szBZ,strMsg,strMsg.GetLength()-strCM.GetLength());
}
}
pUser ++;
}
m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS);
delete pS;
}
}
void CFSmsLog::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 smslog 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 CFSmsLog::On_User_MO()
{
long lCount = m_wndList.GetSelectedCount();
if ( lCount<=0 )
{
MessageBox(_T("ÇëÏÈÑ¡ÔñÐèҪƥÅäÉÏÐеļǼ£¬¿É¶àÑ¡."),_T("ÐÅÏ¢"),MB_ICONINFORMATION);
return ;
}
COleDateTime tBegin=COleDateTime::GetCurrentTime();
long *lDel = new long[lCount+2];
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
long i = 0;
while(pos)
{
lDel[i]= m_wndList.GetNextSelectedItem(pos);
CString str=m_wndList.GetItemText(lDel[i],5); //È¡·¢ËÍʱ¼ä
try
{
COleDateTime t;
str = str+CString(_T(":00"));
str.Replace( _T(".") , _T("-") );
t.ParseDateTime(str);
if ( t.GetStatus()==COleDateTime::valid && t<tBegin)
{
tBegin = t;
}
}
catch(...)
{
}
i ++;
}
long lMoCount=0;
long lMO_TimeItem=6;
long lMO_MsgItem=7;
DLG_SmsLog_MO dlg(this);
dlg.SetParam(tBegin,tBegin+COleDateTimeSpan(0,2,0,0)); //Æ¥Åä2СʱÄÚµÄÉÏÐÐ
if ( dlg.DoModal() == IDOK )
{
long lCount2 = m_wndList.GetColumnCount();
if ( lCount2<=7 )
{
lMO_TimeItem = m_wndList.InsertColumn( lCount2 , _T("»Ø¸´Ê±¼ä") , LVCFMT_LEFT , 140 , 0);
lMO_MsgItem = m_wndList.InsertColumn( lCount2+1 , _T("»Ø¸´ÄÚÈÝ") , LVCFMT_LEFT , 300 , 0);
}
SYSTEMTIME tBegin;dlg.m_ttBegin.GetAsSystemTime(tBegin);
SYSTEMTIME tEnd;dlg.m_ttEnd.GetAsSystemTime(tEnd);
CString str;
for ( int i=0 ; i<lCount ; i++ )
{
CString strMOTime;
CString strMOMsg;
long lSendID = m_wndList.GetItemData( lDel[i] );
str.Format(_T("select * from smslog where SendID=%d ") , lSendID );
if ( m_AdoRS.Open( str ) && !m_AdoRS.IsEOF() )
{
CString strRecvNum;
m_AdoRS.GetCollect(_T("RecvNum"),strRecvNum); //È¡·¢ËͺÅÂë¡£
if ( strRecvNum.GetLength()>0 )
{
str.Format(_T("select * from smsrecv where SendNum='%s' and RecvTime>=#%04d-%02d-%02d %02d:%02d:%02d# and RecvTime<=#%04d-%02d-%02d %02d:%02d:%02d# order by recvtime") , strRecvNum,tBegin.wYear,tBegin.wMonth,tBegin.wDay,tBegin.wHour,tBegin.wMinute,tBegin.wSecond ,tEnd.wYear,tEnd.wMonth,tEnd.wDay,tEnd.wHour,tEnd.wMinute,tEnd.wSecond );
if ( m_AdoRS.Open( str ) && !m_AdoRS.IsEOF() )
{
SYSTEMTIME tMo={0};
m_AdoRS.GetCollect(_T("Msg"), strMOMsg);
m_AdoRS.GetCollect(_T("RecvTime"), tMo);
strMOTime.Format(_T("%04d.%02d.%02d %02d:%02d") , tMo.wYear,tMo.wMonth,tMo.wDay,tMo.wHour,tMo.wMinute);
lMoCount ++;
}
}
}
m_wndList.SetItemText(lDel[i],lMO_TimeItem,strMOTime);
m_wndList.SetItemText(lDel[i],lMO_MsgItem,strMOMsg);
}
m_wndList.CopySelToClipboard();
str.Format(_T("Æ¥Åä¼Ç¼³É¹¦£¬¹²Ñ¡Ôñ%dÌõ¼Ç¼£¬³É¹¦Æ¥ÅäÉÏÐÐ%dÌõ¡£\r\nÆ¥ÅäÊý¾ÝÒÑ¿½±´ÖÁÕ³Ìù°å£¡"),lCount,lMoCount);
MessageBox(str,_T("ÐÅÏ¢") , MB_ICONINFORMATION);
}
}
void CFSmsLog::On_User_Export()
{
//ÎÞÐèҪ״̬µÄ¶ÌÐÅͨËùÓж¼·µ»Ø¡°·¢Ëͳɹ¦¡±¡£
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
DLG_SMSLog_Export dlg(this);
dlg.SetParam(&m_AdoRS,&m_wndList,bNoStatus);
dlg.DoModal();
}
void CFSmsLog::On_User_Refresh()
{
RefreshInfo();
}
void CFSmsLog::On_User_QueryFail()
{
DLG_Find_Fail dlg(this);
if ( dlg.DoModal() == IDOK )
{
m_wndList.ShowWindow(SW_HIDE ); //¼Ó¿ìÏÔʾËÙ¶È
m_wndList.DeleteAllItems();
m_wndList.ShowWindow(SW_SHOW ); //¼Ó¿ìÏÔʾËÙ¶È
REQ_List * pList = new REQ_List;
memset(pList , 0 , sizeof(REQ_List));
dlg.m_tQBegin.GetAsSystemTime(pList->tBegin);
dlg.m_tQEnd.GetAsSystemTime(pList->tEnd);
pList->lCorpID = m_pMainFrame->m_lCorpID;
pList->bOld = false;
pList->lMobileType = -1;
pList->lMsgType = -1;
pList->lMsgType = -1;
pList->lStatus = -1;
pList->bJF = false;
if ( dlg.m_bNoStatus )
pList->lStatus = 10; //²éѯû״̬µÄ¶ÌÐÅ
if ( dlg.m_strMobile.GetLength()<=0 )
{
_tcscpy( pList->szMobile , _T("FAIL") );
}
else
{
_tcscpy( pList->szMobile , dlg.m_strMobile );
pList->lStatus = -1; //Èç¹ûÓмÈëºÅÂ룬Ôò²éѯËùÓжÌÐÅ
pList->bOld = true;
}
m_pMainFrame->SendFrame( SMSFUNC_LIST , (BYTE*)pList , sizeof(REQ_List) );
}
}
void CFSmsLog::On_User_Find()
{
CString strTemp;
DLG_Find_SmsLog dlg(this);
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
dlg.SetParam(!m_bShowToday , !bNoStatus );
if ( dlg.DoModal() == IDOK )
{
m_strFindAdd = _T("");
//if ( !m_bShowToday )
//{
strTemp.Format( _T(" AND SubTime>=#%04d-%02d-%02d %02d:%02d:%02d# AND SubTime<=#%04d-%02d-%02d %02d:%02d:%02d#"),dlg.m_TBegin.GetYear(),dlg.m_TBegin.GetMonth(),dlg.m_TBegin.GetDay(), dlg.m_TBegin2.GetHour(), dlg.m_TBegin2.GetMinute(), dlg.m_TBegin2.GetSecond(),dlg.m_TEnd.GetYear(),dlg.m_TEnd.GetMonth(),dlg.m_TEnd.GetDay(), dlg.m_TEnd2.GetHour(), dlg.m_TEnd2.GetMinute(), dlg.m_TEnd2.GetSecond());
m_strFindAdd = strTemp;
//}
if ( dlg.m_lStatus>=0 )
{
strTemp.Format( _T(" AND Status=%d"),dlg.m_lStatus );
m_strFindAdd += strTemp;
}
if ( dlg.m_strSendNum.GetLength()>0 )
{
strTemp.Format( _T(" AND SendNum like '%%%s%%'"),dlg.m_strSendNum );
m_strFindAdd += strTemp;
}
if ( dlg.m_strRecvNum.GetLength()>0 )
{
strTemp.Format( _T(" AND RecvNum like '%%%s%%'"),dlg.m_strRecvNum );
m_strFindAdd += strTemp;
}
if ( dlg.m_strMsg.GetLength()>0 )
{
strTemp.Format( _T(" AND Msg like '%%%s%%'"),dlg.m_strMsg );
m_strFindAdd += strTemp;
}
On_User_Refresh();
m_strFindAdd = _T(""); //ˢк󣬲éѯ½áÊø
}
}
void CFSmsLog::On_User_Bak()
{
USES_CONVERSION;
long lCount = m_wndList.GetSelectedCount();
DLG_BAK dlg(this);
dlg.SetParam(lCount);
if ( dlg.DoModal() == IDOK )
{
//¶ÁÈëÊý¾Ý¿â
TCHAR szPath[512]={0};
TCHAR szBakPath[64]={0};
TCHAR szOldDB[512]={0};
TCHAR szNewDB[512]={0};
this->m_pMainFrame->GetCurrentPath( szPath );
_stprintf(szOldDB , _T("%s%s"),szPath,ACCESS_SOURCE);
_stprintf(szBakPath,_T("Bak_%d_%s"),m_pMainFrame->m_lCorpID,m_pMainFrame->m_pCurUser->szUser);
_tcscat(szPath,szBakPath);
::CreateDirectory(szPath,NULL); //²»¹ÜÓÐÀíûÀí£¬ÏÈ´´½¨ÔÙ˵
_stprintf(szNewDB , _T("%s\\SmsLog_%s.bak"),szPath,dlg.m_strTitle);
if ( !CopyFile( szOldDB , szNewDB , false ) ) //copyÎļþʧ°Ü
{
MessageBox( _T("ϵͳÎļþ¶ªÊ§1£¬ÇëÖØÐ°²×°!") , _T("ÖÂÃü´íÎó") , MB_ICONWARNING );
return ;
}
//´ò¿ªÐµı¸·ÝÊý¾Ý¿â
CAdoConnection bakadoConnection;
CAdoRecordSet bakAdoRS;
//½âÃÜÂë
char szPasswd[64]={0};strcpy(szPasswd , ACCESS_PASSWD );
char szKey[64]={0};strcpy( szKey , ACCESS_KEY );
char szNew2[64]={0};long lOut=sizeof(szNew2);
TCHAR szNew[64]={0};
CDes des;
des.Decrypt( szPasswd , strlen(szPasswd),szNew2,lOut,szKey,8);
#ifdef UNICODE
_tcscpy(szNew , A2W(szNew2));
#else
_tcscpy(szNew , szNew2);
#endif
if ( !bakadoConnection.ConnectAccess(szNewDB,szNew ) ) //Á¬½ÓÊý¾Ý¿â´íÎó,ÐèÒªÖØÐ´´½¨
{
MessageBox( _T("ϵͳÎļþ¶ªÊ§2£¬ÇëÖØÐ°²×°!") , _T("ÖÂÃü´íÎó") , MB_ICONWARNING );
return;
}
bakAdoRS.SetAdoConnection( &bakadoConnection ); //ÉèÖÃÁ¬½Ó
//¼ì²âÊý¾Ý¿âÊÇ·ñÐèÒªÉý¼¶
this->m_pMainFrame->UpdateDB(bakadoConnection, bakAdoRS);
if ( !bakAdoRS.Open(_T("smslog"),adCmdTable) )
{
MessageBox( _T("ϵͳÎļþ¶ªÊ§3£¬ÇëÖØÐ°²×°!") , _T("ÖÂÃü´íÎó") , MB_ICONWARNING );
return;
}
long *lDel = new long[lCount+2];
int lDelCount=0;
TCHAR szSelect[256]={0};
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
while ( pos )
{
long lItem = m_wndList.GetNextSelectedItem( pos );
long lSendID = m_wndList.GetItemData( lItem );
lDel[lDelCount]=lItem;
if ( lSendID > 0 )
{
_stprintf( szSelect , _T("select * from smslog where SendID=%d"), lSendID );
BOOL b = m_AdoRS.Open( szSelect );
if ( b && m_AdoRS.GetRecordCount() )
{
CAdoSmsLog adoSms;
m_AdoRS.RecordBinding( adoSms );
m_AdoRS.MoveFirst();
//²åÈëµ½ÁíÒ»¸ö±í
BOOL b = bakAdoRS.RecordBinding( adoSms );
b = bakAdoRS.AddNew(adoSms);
b = bakAdoRS.Update();
}
}
lDelCount ++;
}
//µ¹×ªÉ¾³ý
m_wndList.ShowWindow( SW_HIDE ); //¼Ó¿ìÏÔʾµÄËÙ¶È
for ( int i=lDelCount-1 ; i>=0 ; i-- )
{
long lSendID = m_wndList.GetItemData( lDel[i] );
_stprintf( szSelect , _T("delete from smslog where SendID=%d ") , lSendID );
BOOL b = m_AdoRS.Open( szSelect );
if ( b && m_AdoRS.GetRecordCount() )
{
m_wndList.DeleteItem(lDel[i]); //´ÓÁбíÖÐɾ³ý
}
}
m_wndList.ShowWindow( SW_SHOW ); //¼Ó¿ìÏÔʾµÄËÙ¶È
delete lDel;
//ÔÚÊ÷ÖÐÌí¼Ó
CString strName;
strName.Format( _T("±¸·Ý_%s") , dlg.m_strTitle );
m_pMainFrame->m_pFuncView->AddBak_SmsLog(strName);
}
}
void CFSmsLog::On_User_RefStatus()
{
RefreshStatus();
}
void CFSmsLog::On_User_Refresh_All()
{
m_bShowAllRecord = true;
On_User_Refresh();
}
void CFSmsLog::RefreshStatus(BOOL bBegin)
{
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
if ( bNoStatus ) //Èç¹ûÎÞÐèҪ״̬£¬²»ÓÃË¢ÐÂ״̬
return ;
//µÚÒ»²½£¬²éÕÒ״̬Ϊδ¹Ì¶¨µÄ¶ÌÐÅ
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<lCount;i++ ) //ÿ´Î×î¶à²éѯ1000Ìõ¼Ç¼
{
long lStatus = GetItemStatus(i);
#ifdef STATUS_ENABLE_RECV
if ( lStatus == SEND_STATUS_SUB_OK || //ÒÔÏÂÈýÖÖ£¬ÐèÒªÖØÐÂȡ״̬
lStatus == SEND_STATUS_SUB_FILT ||
lStatus == SEND_STATUS_SEND_OK ||
lStatus == SEND_STATUS_SEND_ERROR)
#else
if ( lStatus == SEND_STATUS_SUB_OK || //ÒÔÏÂÈýÖÖ£¬ÐèÒªÖØÐÂȡ״̬
lStatus == SEND_STATUS_SUB_FILT ||
lStatus == SEND_STATUS_SEND_OK ||
lStatus == SEND_STATUS_SEND_ERROR )
#endif
{
pSendID[lCount2] = i;
lCount2 ++;
pSendID[lCount2] = m_wndList.GetItemData( i ); //È¡µÃSendID
lCount2 ++;
pSendID[lCount2] =lStatus;
lCount2 ++;
}
if ( lCount2 >= 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;i<lCount;i++)
{
pStatusData->lItemID = 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 CFSmsLog::GetItemStatus(long iItem)
{
TCHAR szStatus[16]={0};
TCHAR szTime[32]={0};
m_wndList.GetItemText( iItem , 1 , 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 t2 = CTime::GetCurrentTime();
if (lYear <= 0 || lMon <= 0 || lDay <= 0)
{
lYear = t2.GetYear();
lMon = t2.GetMonth();
lDay = t2.GetDay();
}
CTime t1(lYear,lMon,lDay,0,0,0);
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;
}
BOOL CFSmsLog::ProcessSocket(Socket_Head *pHead)
{
//Ð޸Ĺ«ÓõØÖ·±¾
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;i<pStatus->lCount;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 smslog where SendID=%d") , pData->lSendID );
if ( m_AdoRS.Open(szSelect) && m_AdoRS.GetRecordCount()>0 )
{
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();
}
//¸üÐÂÏÔʾ
if ( pData->lItemID>=0 && pData->lItemID<m_wndList.GetItemCount() )
{
long lSendID = m_wndList.GetItemData(pData->lItemID);
if ( lSendID == pData->lSendID ) //¸üÐÂÏÔʾÄÚÈÝ
{
#ifdef STATUS_ENABLE_RECV
long lIcon = GetStatusText( pData->lStatus , szBuf );
#else
long lIcon = GetStatusText2(pData->lStatus , szBuf);
#endif
m_wndList.SetItemText(pData->lItemID,1,szBuf);
m_wndList.SetIconIndex( pData->lItemID , lIcon );
#ifdef STATUS_ENABLE_RECV_TIME
if ( tRecv.GetStatus() == COleDateTime::valid && tRecv>COleDateTime(2010,1,1,0,0,0) )
{
_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d") , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
m_wndList.SetItemText(pData->lItemID,6,szBuf);
}
#endif
}
}
}
pData ++; //¼ÌÐø´¦ÀíÏÂÒ»Ìõ
}
RefreshStatus( false ); //²éѯÏÂ1000ÌõµÄ״̬
return true;
}
//Ð޸Ĺ«ÓõØÖ·±¾
if (pHead->lFuncType == SMSFUNC_LIST)
{
ANS_List * pList = (ANS_List *)pHead->pFrame;
ANS_ListData * pData = (ANS_ListData *)(pHead->pFrame+sizeof(ANS_List));
TCHAR szStatus[24]={0};
TCHAR szSelect[64]={0};
COleDateTime tSub;
CString strSubTime,strRecvTime;
for ( int i = 0;i<pList->lCount;i++)
{
long iItem = m_wndList.GetItemCount();
#ifdef STATUS_ENABLE_RECV
long lIcon = GetStatusText( pData->lStatus , szStatus );
#else
long lIcon = GetStatusText2( pData->lStatus , szStatus );
#endif
tSub = COleDateTime(pData->tSubTime);
if ( tSub.GetStatus() == COleDateTime::valid )
{
strSubTime.Format(_T("%04d.%02d.%02d %02d:%02d") , tSub.GetYear(),tSub.GetMonth(),tSub.GetDay(),tSub.GetHour(),tSub.GetMinute() );
}
#ifdef STATUS_ENABLE_RECV_TIME
tSub = COleDateTime(pData->tRecvTime);
if ( tSub.GetStatus() == COleDateTime::valid && tSub>COleDateTime(2010,1,1,0,0,0))
{
strRecvTime.Format(_T("%04d.%02d.%02d %02d:%02d") , tSub.GetYear(),tSub.GetMonth(),tSub.GetDay(),tSub.GetHour(),tSub.GetMinute() );
}
m_wndList.InsertItemAndCol( iItem , _itot( iItem+1,szSelect,10) , szStatus,pData->szSendNum,pData->szRecvNum,pData->szMsg,strSubTime,strRecvTime );
#else
m_wndList.InsertItemAndCol( iItem , _itot( iItem+1,szSelect,10) , szStatus,pData->szSendNum,pData->szRecvNum,pData->szMsg,strSubTime);
#endif
m_wndList.SetItemData( iItem, 0 );
m_wndList.SetIconIndex( iItem , lIcon );
pData ++;
}
return true;
}
return false;
}
SMS_See CFSmsLog::GetSms(long lItem)
{
SMS_See sms={0};
long lSendID = m_wndList.GetItemData(lItem);
CString strSelect;
long lStatus;
TCHAR szSender[16]={0};
TCHAR szRecver[16]={0};
COleDateTime t;
strSelect.Format( _T("select * from smslog where SendID=%d") , lSendID );
if ( m_AdoRS.Open( strSelect ) && m_AdoRS.GetRecordCount() )
{
m_AdoRS.MoveFirst();
m_AdoRS.GetCollect( _T("Status") , lStatus );
m_AdoRS.GetCollect( _T("SendNum") , sms.szSender );
m_AdoRS.GetCollect( _T("Recver") , szRecver );
m_AdoRS.GetCollect( _T("RecvNum") , sms.szRecver );
m_AdoRS.GetCollect( _T("Msg") , sms.szMsg );
m_AdoRS.GetCollect( _T("SubTime") , t );t.GetAsSystemTime(sms.tSend);
m_AdoRS.GetCollect( _T("RecvTime"), t );t.GetAsSystemTime(sms.tRecv);
//#ifdef STATUS_ENABLE_RECV
GetStatusText( lStatus , sms.szStatus );
//#else
// GetStatusText2( lStatus , sms.szStatus );
//#endif
//ÎÞÐèҪ״̬µÄ¶ÌÐÅͨËùÓж¼·µ»Ø¡°·¢Ëͳɹ¦¡±¡£
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
if ( bNoStatus )
{
_tcscpy( sms.szStatus , _T("·¢Ëͳɹ¦") );
}
if ( _tcslen(szSender)>0 )
{
_tcscat( sms.szSender , _T("-") );
_tcscat( sms.szSender , szSender );
}
if ( _tcslen(szRecver)>0 )
{
_tcscat( sms.szRecver , _T("-") );
_tcscat( sms.szRecver , szRecver );
}
}
return sms;
}
void CFSmsLog::OnDblclkSmslogList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_See();
}
void CFSmsLog::OnKeydownSmslogList(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 == 'T' || pLVKeyDow->wVKey == 't')
{
On_User_RefStatus();
}
if ( pLVKeyDow->wVKey == 'F' || pLVKeyDow->wVKey == 'f')
{
On_User_Find();
}
if ( pLVKeyDow->wVKey == 'B' || pLVKeyDow->wVKey == 'b')
{
On_User_Bak();
}
if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a')
{
m_wndList.SelectAllItems();
}
}
long CFSmsLog::GetStatusText2(long lStatus, TCHAR *pStatus)
{
_tcscpy( pStatus , _T("δ֪״̬") );
long lIcon = 0;
switch(lStatus)
{
case SEND_STATUS_SUB_OK:
_tcscpy( pStatus , _T("Ìá½»³É¹¦") );
break;
case SEND_STATUS_SUB_FILT:
_tcscpy( pStatus , _T("ÉóºËÖÐ") );
break;
case SEND_STATUS_SUB_ERROR:
case SEND_STATUS_SUB_USERNOSMS:
case SEND_STATUS_SUB_CORPNOSMS:
case SEND_STATUS_SUB_CORPOVRDATE:
_tcscpy( pStatus , _T("Ìύʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_SUB_NUMNOSUP:
_tcscpy( pStatus , _T("Ä¿±êÓÐÎó") );
lIcon = 3;
break;
case SEND_STATUS_FILT_ERROR:
_tcscpy( pStatus , _T("ÉóºËʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_SEND_OK:
_tcscpy( pStatus , _T("·¢Ëͳɹ¦") );
lIcon = 1;
break;
case SEND_STATUS_SEND_ERROR:
_tcscpy( pStatus , _T("·¢ËÍʧ°Ü") );
lIcon = 3;
break;
case SEND_STATUS_RECV_OK:
_tcscpy( pStatus , _T("·¢Ëͳɹ¦") );
lIcon = 1;
break;
case SEND_STATUS_RECV_ERROR:
_tcscpy( pStatus , _T("½ÓÊÕʧ°Ü") );
lIcon = 3;
break;
}
return lIcon;
}
void CFSmsLog::OnOK()
{
//CDialog::OnOK();
}
void CFSmsLog::OnCancel()
{
//CDialog::OnCancel();
}
void CFSmsLog::SetToday(BOOL bToday)
{
if ( m_bShowToday != bToday )
{
m_bShowToday = bToday;
m_bRefresh = false;
}
}
void CFSmsLog::SetBakDBName(CString strDBName)
{
m_strBakDBName = strDBName;
m_bNewDB = true;
}