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

1373 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.

// FQXBox_Log.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "FQXBox_Log.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFQXBox_Log dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_BAK.h"
//#include "DLG_Find_Fail.h"
//#include "DLG_Find_QXBOX_LOG.h"
//#include "DLG_SMSLog_Export.h"
CFQXBox_Log::CFQXBox_Log(CWnd* pParent /*=NULL*/)
: CDialog(CFQXBox_Log::IDD, pParent)
{
//{{AFX_DATA_INIT(CFQXBox_Log)
// 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;
m_bShowProcess = false;
m_lIconCount = 0;
}
void CFQXBox_Log::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFQXBox_Log)
DDX_Control(pDX, IDD_QXBOX_LOG_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFQXBox_Log, CDialog)
//{{AFX_MSG_MAP(CFQXBox_Log)
ON_WM_SIZE()
ON_NOTIFY(NM_RCLICK, IDD_QXBOX_LOG_LIST, OnRclickSmslogList)
ON_NOTIFY(NM_DBLCLK, IDD_QXBOX_LOG_LIST, OnDblclkSmslogList)
ON_NOTIFY(LVN_KEYDOWN, IDD_QXBOX_LOG_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_SHOWALLRECORD , On_User_Refresh_All)
ON_COMMAND( MENU_LOG_DOWNLOAD_SUCCESS , On_User_Download_Success)
ON_COMMAND( MENU_LOG_DOWNLOAD_FAIL , On_User_Download_Fail)
ON_WM_TIMER()
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFQXBox_Log message handlers
BOOL CFQXBox_Log::OnInitDialog()
{
CDialog::OnInitDialog();
//ȡ<>ù<EFBFBD><C3B9>ò<EFBFBD><C3B2><EFBFBD>
//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 );
//<2F><>ʼ<EFBFBD><CABC>List
m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_MMSDF) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_MMS_SEND) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_MMSJS) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_MMSSB) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMS_UNREAD) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMS_READ) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; ״̬,70;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,120;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,120;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,130;<3B><><EFBFBD><EFBFBD>,60;<3B><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>,80;<3B>ܺ<EFBFBD><DCBA><EFBFBD>,80;<3B>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>,80; <20><><EFBFBD><EFBFBD>,250;"));
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 CFQXBox_Log::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFQXBox_Log::ReShow(BOOL bRefresh)
{
USES_CONVERSION;
m_AdoRS.Close();
if ( m_strBakDBName.GetLength()<=0 )
{
m_adoConnection.Close();
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 ) ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD>´<EFBFBD><C2B4><EFBFBD>
{
MessageBox( _T("<EFBFBD>򿪱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
m_bShowToday = true;
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
}
else
{
m_bShowToday = false;
m_AdoRS.SetAdoConnection( &m_adoConnection ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh || m_bNewDB )
{
RefreshInfo();
m_bNewDB = false;
}
return true;
}
BOOL CFQXBox_Log::RefreshInfo()
{
m_wndList.ShowWindow( SW_HIDE ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
m_bRefresh = true;
m_wndList.DeleteAllItems();
TCHAR szSelect[256]={0};
CString strTop;
if ( !m_bShowAllRecord && m_pMainFrame->m_Setup.lTopRecord>0 )
{
strTop.Format(_T(" top %d "),m_pMainFrame->m_Setup.lTopRecord );
}
if ( m_bShowToday )
{
//<2F><><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SYSTEMTIME t;::GetLocalTime(&t);
if ( m_pMainFrame->m_Setup.bSQLUse )
_stprintf( szSelect , _T("select %s * from QXLog where SubTime>='%04d%02d%02d' %s order by SubTime desc"),strTop,t.wYear,t.wMonth,t.wDay,m_strFindAdd ); //<2F><>ѯ<EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD>
else
_stprintf( szSelect , _T("select %s * from QXLog where SubTime>=#%04d-%02d-%02d# %s order by SubTime desc"),strTop,t.wYear,t.wMonth,t.wDay,m_strFindAdd ); //<2F><>ѯ<EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD><EFBFBD><EFBFBD>
}
else
{
if ( m_strFindAdd.GetLength()>0 )
_stprintf( szSelect , _T("select * from QXLog where 1 %s order by SubTime desc"),m_strFindAdd ); //<2F><>ѯ<EFBFBD><D1AF><EFBFBD>ռ<EFBFBD>¼
else
_stprintf( szSelect , _T("select * from QXLog order by SubTime desc") ); //<2F><>ѯ<EFBFBD><D1AF>־,<2C><>ʾȫ<CABE><C8AB><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ʾͷ<CABE><CDB7><EFBFBD><EFBFBD>
}
BOOL b = m_AdoRS.Open( szSelect );
long lSendID=0;
long lStatus=0;
TCHAR szStatus[32]={0};
CString strSubTime;
CString strMsgType;
CString strMsgDataType;
CString strMobileAll;
CString strMobileSent;
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; //<2F><>ʾ<EFBFBD><CABE>һ<EFBFBD>κ󣬲<CEBA><F3A3ACB2><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>ʾ
CString strSender;
CString strRecver;
CString strStatus;
if ( b && lCount )
{
CAdoQXLog adoSms;
m_AdoRS.RecordBinding( adoSms );
m_AdoRS.MoveFirst();
long iItem = 0;
while( !m_AdoRS.IsEOF() && iItem<lCount )
{
long lIcon = GetStatusText2( adoSms.m_Status , szStatus );
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() );
}
strMsgType = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
if ( adoSms.m_MsgType ==4 )
{
strMsgType=_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
if ( adoSms.m_Reader ==0 )
{
lIcon = 4;
_tcscpy(szStatus , _T(" δ<><CEB4>") );
}
else
{
lIcon = 5;
_tcscpy(szStatus , _T(" <20>Ѷ<EFBFBD>") );
}
}
strMsgDataType = _T("<EFBFBD>ı<EFBFBD>");
if ( adoSms.m_MsgDataType == 1 )
strMsgDataType = _T("ͼƬ");
strMobileAll.Format(_T("%d") , adoSms.m_MobileAll);
strMobileSent.Format(_T("%d") , adoSms.m_MobileSent);
strRecver=adoSms.m_GroupName;
strSender = adoSms.m_Sender;
if ( _tcslen(adoSms.m_Mobile)>0 )
{
if ( adoSms.m_MsgType ==4 )
strSender.Format(_T("%s(%s)") , adoSms.m_Sender,adoSms.m_Mobile);
else
strRecver = adoSms.m_Mobile;
}
else
{
strSender = adoSms.m_Sender;
}
m_wndList.InsertItemAndCol( iItem , _itot( lCount-iItem,szSelect,10) , szStatus,strSender,strRecver,strSubTime,strMsgType,strMsgDataType,strMobileAll,strMobileSent,adoSms.m_MsgData);
m_wndList.SetItemData( iItem, adoSms.m_Rtx_GroupTaskID );
m_wndList.SetIconIndex( iItem , lIcon );
iItem++;
memset(&adoSms,0,sizeof(adoSms));
m_AdoRS.MoveNext();
}
}
RefreshStatus();
m_wndList.ShowWindow( SW_SHOW ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
if ( strTop.GetLength()>0 && lCount>=m_pMainFrame->m_Setup.lTopRecord) //<2F><>ʾ<EFBFBD><CABE>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>м<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
{
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_LOG_SHOWALLRECORD, _T(" <20><>ʾ<EFBFBD><CABE><EFBFBD>м<EFBFBD>¼ ") );
menu.AppendMenu(MF_SEPARATOR );
CRect rect;
GetWindowRect(&rect);
//ClientToScreen(&rect);
//<2F><>ʾ<EFBFBD>˵<EFBFBD>
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();
}
RecvQX(); //<2F><><EFBFBD><EFBFBD>Q<EFBFBD><51>
FlashIcon(true,false); //<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
return true;
}
void CFQXBox_Log::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
long CFQXBox_Log::GetStatusText(long lStatus, TCHAR *pStatus)
{
_tcscpy( pStatus , _T("δ֪״̬") );
long lIcon = 0;
switch(lStatus)
{
case SEND_STATUS_SUB_OK:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD>ɹ<EFBFBD>") );
break;
case SEND_STATUS_SUB_FILT:
//_tcscpy( pStatus , _T("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD>ɹ<EFBFBD>") );
break;
case SEND_STATUS_SUB_ERROR:
case SEND_STATUS_SUB_USERNOSMS:
case SEND_STATUS_SUB_CORPNOSMS:
case SEND_STATUS_SUB_CORPOVRDATE:
_tcscpy( pStatus , _T("<EFBFBD>ύʧ<EFBFBD><EFBFBD>") );
lIcon = 3;
break;
case SEND_STATUS_SUB_NUMNOSUP:
_tcscpy( pStatus , _T("Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
lIcon = 3;
break;
case SEND_STATUS_FILT_ERROR:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") );
lIcon = 3;
break;
case SEND_STATUS_SEND_OK:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD>ͳɹ<EFBFBD>") );
lIcon = 1;
break;
case SEND_STATUS_SEND_ERROR:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") );
lIcon = 3;
break;
case SEND_STATUS_RECV_OK:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
lIcon = 2;
break;
case SEND_STATUS_RECV_ERROR:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") );
lIcon = 3;
break;
case 20:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>") );
lIcon = 1;
break;
}
return lIcon;
}
void CFQXBox_Log::OnRclickSmslogList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CFQXBox_Log::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 )
{
menu.AppendMenu(MF_STRING , MENU_LOG_SEE , _T(" <20><> <20><> ") );
//menu.AppendMenu(MF_STRING , MENU_LOG_SEND, _T(" <20>ٴη<D9B4><CEB7><EFBFBD> ") );
menu.AppendMenu(MF_STRING , MENU_LOG_DEL , _T(" ɾ <20><> ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_LOG_DOWNLOAD_SUCCESS , _T(" <20><><EFBFBD>سɹ<D8B3><C9B9><EFBFBD><EFBFBD><EFBFBD>") );
menu.AppendMenu(MF_STRING , MENU_LOG_DOWNLOAD_FAIL , _T(" <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_SEE , _T(" <20><> <20><> ") );
//menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_SEND, _T(" <20>ٴη<D9B4><CEB7><EFBFBD> ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_LOG_DEL, _T(" ɾ <20><> ") );
}
/*
menu.AppendMenu(MF_SEPARATOR );
//<2F><><EFBFBD><EFBFBD>
menu.AppendMenu(MF_STRING , MENU_LOG_EXPORT, _T(" <20><><EFBFBD><EFBFBD>... ") );
//ˢ<><CBA2>
menu.AppendMenu(MF_STRING , MENU_LOG_FIND , _T(" <20><><EFBFBD><EFBFBD>... ") );
menu.AppendMenu(MF_SEPARATOR );
if ( lItem >= 0 )
menu.AppendMenu(MF_STRING , MENU_LOG_BAK , _T(" <20><><EFBFBD><EFBFBD>... ") );
else
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED, MENU_LOG_BAK , _T(" <20><><EFBFBD><EFBFBD>... ") );
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(" <20><>ʧ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD> ") );
menu.AppendMenu(MF_SEPARATOR );
}
*/
//ˢ<><CBA2>
menu.AppendMenu(MF_STRING , MENU_LOG_REFRESH, _T(" ˢ <20><> ") );
if ( !bNoStatus ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ״̬<D7B4><CCAC>û<EFBFBD><C3BB>ˢ<EFBFBD><CBA2>״̬<D7B4>IJ˵<C4B2>
{
//ˢ<><CBA2>
menu.AppendMenu(MF_STRING , MENU_LOG_REFSTATUS, _T(" ˢ<><CBA2>״̬ ") );
}
//<2F><>ʾ<EFBFBD>˵<EFBFBD>
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
long CFQXBox_Log::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CFQXBox_Log::On_User_See2(long lItem,long lRtxGroupTaskID)
{
CString str;
str.Format( _T("select * from QXlog where Rtx_GroupTaskID=%d ") , lRtxGroupTaskID );
if ( m_AdoRS.Open( str ) && !m_AdoRS.IsEOF() )
{
long lQXLogID=0;
long lMsgType=0;
ANS_QXBox_Group_SeeData send={0};
send.lCorpID = this->m_pMainFrame->m_lCorpID;
send.lUserID = this->m_pMainFrame->m_lUserID;
m_AdoRS.GetCollect(_T("QXLogID") , lQXLogID);
m_AdoRS.GetCollect(_T("Rtx_GroupID") , send.lRtx_GroupID);
m_AdoRS.GetCollect(_T("GroupID") , send.szGroupID);
m_AdoRS.GetCollect(_T("MsgType") , lMsgType);
_tcscpy(send.szCreateUser,this->m_pMainFrame->m_pCurUser->szUser);
if ( _ttol(send.szGroupID)<=0 )
m_AdoRS.GetCollect(_T("Mobile") , send.szMobile);
if ( _ttol(send.szMobile)>0 )
m_AdoRS.GetCollect(_T("Sender") , send.szCreateUser);
m_AdoRS.GetCollect(_T("GroupName") , send.szName);
if ( lMsgType==4 )
{
long lReader=1;
m_AdoRS.GetCollect(_T("Reader") ,lReader ); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD>δ<EFBFBD><CEB4>
if ( lReader==0 ) //δ<><CEB4><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ϊ<EFBFBD>Ѷ<EFBFBD>
{
str.Format(_T("update QXLog set Reader=1 where QXLogID=%d") , lQXLogID );
m_AdoRS.Open( str );
}
if ( lItem>=0 ) //<2F><><EFBFBD>յģ<D5B5><C4A3><EFBFBD>Ϊ<EFBFBD>Ѷ<EFBFBD>
m_wndList.SetIconIndex( lItem , 5 ); //<2F><>ʾ<EFBFBD>Ѷ<EFBFBD>ͼ<EFBFBD><CDBC>
}
m_pMainFrame->m_pBaseView->m_dlgQXBoxGroup.On_DS_Chat_Add(send);
}
/*
SMS_See sms = GetSms(lItem);
sms.lType = SMS_SEE_TYPE_LOG;
DLG_QXBOX_LOGSee dlg(this);
dlg.SetParam(sms);
dlg.DoModal();
*/
}
void CFQXBox_Log::On_User_See()
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
CString str;
long lSendID = m_wndList.GetItemData( lItem );
On_User_See2(lItem , lSendID);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
FlashIcon(true,false);
}
void CFQXBox_Log::On_User_Send()
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
/*
if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //<2F>½<EFBFBD><C2BD>б<EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( _T("\"%Memo%\"") );
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
long lCount = m_wndList.GetSelectedCount();
if ( lCount <= 0 )
return ;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 smslog where SendID=%d"), lSendID );
BOOL b = m_AdoRS.Open( szSelect );
if ( b && m_AdoRS.GetRecordCount() )
{
m_AdoRS.MoveFirst();
m_AdoRS.GetCollect( _T("Recver") , pUser->szName);
m_AdoRS.GetCollect( _T("RecvNum") , pUser->szMobile);
m_AdoRS.GetCollect( _T("Msg") , pUser->szBZ);
}
}
else
{
m_wndList.GetItemText(lItem,3,pUser->szMobile,sizeof(pUser->szMobile));
m_wndList.GetItemText(lItem,4,pUser->szBZ,sizeof(pUser->szBZ));
}
pUser ++;
}
m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS);
delete pS;
}
*/
}
void CFQXBox_Log::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];
//<2F><>תɾ<D7AA><C9BE>
m_wndList.ShowWindow( SW_HIDE ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ٶ<EFBFBD>
for ( i = lCount ; i>0 ; i-- )
{
lSendID = m_wndList.GetItemData( lDel[i-1] );
_stprintf( szSelect , _T("delete from QXlog where Rtx_GroupTaskID=%d ") , lSendID );
BOOL b = m_AdoRS.Open( szSelect );
if ( b && m_AdoRS.GetRecordCount() )
{
m_wndList.DeleteItem(lDel[i-1]); //<2F><><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ɾ<EFBFBD><C9BE>
}
}
m_wndList.ShowWindow( SW_SHOW ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ٶ<EFBFBD>
delete lDel;
}
void CFQXBox_Log::On_User_Export()
{
/*
//<2F><><EFBFBD><EFBFBD>Ҫ״̬<D7B4>Ķ<EFBFBD><C4B6><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ء<EFBFBD><D8A1><EFBFBD><EFBFBD>ͳɹ<CDB3><C9B9><EFBFBD><EFBFBD><EFBFBD>
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 CFQXBox_Log::On_User_Refresh()
{
RefreshInfo();
}
void CFQXBox_Log::On_User_QueryFail()
{
/*
DLG_Find_Fail dlg(this);
if ( dlg.DoModal() == IDOK )
{
m_wndList.ShowWindow(SW_HIDE ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
m_wndList.DeleteAllItems();
m_wndList.ShowWindow(SW_SHOW ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
REQ_List * pList = new REQ_List;
memset(pList , 0 , sizeof(REQ_List));
_tcscpy( pList->szMobile , _T("FAIL") );
dlg.m_tQBegin.GetAsSystemTime(pList->tBegin);
dlg.m_tQEnd.GetAsSystemTime(pList->tEnd);
pList->lCorpID = m_pMainFrame->m_lCorpID;
pList->lMobileType = -1;
pList->lMsgType = -1;
pList->lMsgType = -1;
pList->bJF = false;
m_pMainFrame->SendFrame( SMSFUNC_LIST , (BYTE*)pList , sizeof(REQ_List) );
}
*/
}
void CFQXBox_Log::On_User_Find()
{
/*
CString strTemp;
DLG_Find_QXBOX_LOG 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# AND SubTime<=#%04d-%02d-%02d 23:59:59#"),dlg.m_TBegin.GetYear(),dlg.m_TBegin.GetMonth(),dlg.m_TBegin.GetDay(),dlg.m_TEnd.GetYear(),dlg.m_TEnd.GetMonth(),dlg.m_TEnd.GetDay());
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(""); //ˢ<>º󣬲<C2BA>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
}
*/
}
void CFQXBox_Log::On_User_Bak()
{
/*
long lCount = m_wndList.GetSelectedCount();
DLG_BAK dlg(this);
dlg.SetParam(lCount);
if ( dlg.DoModal() == IDOK )
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
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); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>˵
_stprintf(szNewDB , _T("%s\\QXBOX_LOG_%s.bak"),szPath,dlg.m_strTitle);
if ( !CopyFile( szOldDB , szNewDB , false ) ) //copy<70>ļ<EFBFBD>ʧ<EFBFBD><CAA7>
{
MessageBox( _T("ϵͳ<CFB5>ļ<EFBFBD><C4BC><EFBFBD>ʧ1<CAA7><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>װ!") , _T("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
return ;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>µı<C2B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
CAdoConnection bakadoConnection;
CAdoRecordSet bakAdoRS;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 ) ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD>´<EFBFBD><C2B4><EFBFBD>
{
MessageBox( _T("ϵͳ<CFB5>ļ<EFBFBD><C4BC><EFBFBD>ʧ2<CAA7><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>װ!") , _T("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
return;
}
bakAdoRS.SetAdoConnection( &bakadoConnection ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ( !bakAdoRS.Open(_T("smslog"),adCmdTable) )
{
MessageBox( _T("ϵͳ<CFB5>ļ<EFBFBD><C4BC><EFBFBD>ʧ3<CAA7><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°<EFBFBD>װ!") , _T("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , 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() )
{
CAdoUBoxLog adoSms;
m_AdoRS.RecordBinding( adoSms );
m_AdoRS.MoveFirst();
//<2F><><EFBFBD><EFBFBD><EBB5BD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
BOOL b = bakAdoRS.RecordBinding( adoSms );
b = bakAdoRS.AddNew(adoSms);
b = bakAdoRS.Update();
}
}
lDelCount ++;
}
//<2F><>תɾ<D7AA><C9BE>
m_wndList.ShowWindow( SW_HIDE ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ٶ<EFBFBD>
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]); //<2F><><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ɾ<EFBFBD><C9BE>
}
}
m_wndList.ShowWindow( SW_SHOW ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ٶ<EFBFBD>
delete lDel;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString strName;
strName.Format( _T("<22><><EFBFBD><EFBFBD>_%s") , dlg.m_strTitle );
m_pMainFrame->m_pFuncView->AddBak_QXBOX_LOG(strName);
}
*/
}
void CFQXBox_Log::On_User_Download_Success()
{
On_User_Download(0);
}
void CFQXBox_Log::On_User_Download_Fail()
{
On_User_Download(1);
}
void CFQXBox_Log::On_User_Download(long lQueryType)
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
CString strDefFileName=_T("Success.txt");
if ( lQueryType==1 )
strDefFileName=_T("Fail.txt");
#define FILE_FILTER_TEXT \
TEXT("txt<78>ı<EFBFBD><C4B1>ļ<EFBFBD> (*.txt)\0*.txt\0")\
TEXT("Excel csv <20>ļ<EFBFBD> (*.csv)\0*.csv\0")\
TEXT("<22><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> (*.*)\0*.*;\0\0")
TCHAR szFile[ 256 ];
TCHAR szFileB[ 256 ];
*szFileB = NULL;
_stprintf( szFile , strDefFileName );
OPENFILENAME sOpen;
sOpen.lStructSize = sizeof( sOpen );
sOpen.hwndOwner = this->m_hWnd ;
sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
sOpen.lpstrFilter = FILE_FILTER_TEXT;
sOpen.lpstrDefExt = _T("txt");
sOpen.lpstrCustomFilter = NULL;
sOpen.nMaxCustFilter = 0;
sOpen.lpstrFile = szFile;
sOpen.nMaxFile = sizeof( szFile );
sOpen.lpstrFileTitle = szFileB;
sOpen.nMaxFileTitle = sizeof( szFileB );
sOpen.lpstrInitialDir = NULL;
sOpen.lpstrTitle = _T("ѡ<EFBFBD>񱣴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>");
if ( !::GetSaveFileName( &sOpen ) )
{
return ;
}
m_strExportName = sOpen.lpstrFile;
REQ_QXBox_Group_SendData sms = GetSendData(lItem);
if ( sms.lRtx_GroupID>0 )
{
REQ_QqtLogMobile * pMobile = new REQ_QqtLogMobile;
memset(pMobile , 0 , sizeof(REQ_QqtLogMobile));
pMobile->lCorpID = m_pMainFrame->m_lCorpID;
pMobile->lUserID = m_pMainFrame->m_lUserID;
pMobile->lRtx_GroupID = sms.lRtx_GroupID;
pMobile->lRtx_GroupTaskID = sms.lRtx_GroupTaskID;
pMobile->lType = lQueryType;
m_pMainFrame->SendFrame(SMSFUNC_QQTLOGMOBILE,(BYTE*)pMobile , sizeof(REQ_QqtLogMobile));
m_bShowProcess = true;
m_DlgProcess.SetProcessTitle(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."));
if ( m_DlgProcess.DoModal() != IDOK ) //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//ȡ<><C8A1><EFBFBD>ϲ<EFBFBD><CFB2>ɹ<EFBFBD>
return ;
}
m_bShowProcess = false;
}
}
void CFQXBox_Log::On_User_RefStatus()
{
RefreshStatus();
}
void CFQXBox_Log::On_User_Refresh_All()
{
m_bShowAllRecord = true;
On_User_Refresh();
}
void CFQXBox_Log::RefreshStatus(BOOL bBegin)
{
BOOL bNoStatus = m_pMainFrame->m_Setup.bSDK & SDK_NOSTATUS ? true:false;
if ( bNoStatus ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2>״̬
return ;
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬Ϊδ<CEAA>̶<EFBFBD><CCB6>Ķ<EFBFBD><C4B6><EFBFBD>
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++ ) //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ1000<30><30><EFBFBD><EFBFBD>¼
{
long lStatus = GetItemStatus(i);
if ( lStatus == SEND_STATUS_SUB_OK || //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ȡ״̬
lStatus == SEND_STATUS_SUB_FILT ||
lStatus == SEND_STATUS_SEND_OK ||
lStatus == SEND_STATUS_SEND_ERROR ||
lStatus == 20)
{
pSendID[lCount2] = i;
lCount2 ++;
pSendID[lCount2] = m_wndList.GetItemData( i ); //ȡ<><C8A1>SendID
lCount2 ++;
pSendID[lCount2] =lStatus;
lCount2 ++;
}
if ( lCount2 >= STATUS_MAX_QUERY*3 ) //<2F><><EFBFBD><EFBFBD>1000<30><30><EFBFBD><EFBFBD>
break;
}
lCount = lCount2/3; //ȡ<><C8A1><EFBFBD><EFBFBD>Ҫȡ״̬<D7B4>ĸ<EFBFBD><C4B8><EFBFBD>
if ( lCount > 0 )
{
long lSize = sizeof(REQ_QqtStatus)+sizeof(ANS_QqtStatus_Data2)*lCount;
BYTE * pData = new BYTE[lSize];memset(pData,0,lSize);
REQ_QqtStatus * pStatus = (REQ_QqtStatus *)pData;
ANS_QqtStatus_Data2 * pStatusData = (ANS_QqtStatus_Data2 *)(pData+sizeof(REQ_QqtStatus));
pStatus->lCorpID = m_pMainFrame->m_lCorpID;
pStatus->lCount = lCount;
for ( i=0;i<lCount;i++)
{
pStatusData->lItemID = pSendID[i*3];
pStatusData->lRtx_GroupTaskID = pSendID[i*3+1];
pStatusData->lStatus = pSendID[i*3+2];
pStatusData++;
}
m_pMainFrame->SendFrame( SMSFUNC_QQTSTATUS , pData , lSize );
}
delete pSendID;
}
long CFQXBox_Log::GetItemStatus(long iItem)
{
TCHAR szStatus[16]={0};
TCHAR szTime[32]={0};
m_wndList.GetItemText( iItem , 1 , szStatus , sizeof(szStatus) );
m_wndList.GetItemText( iItem , 4 , 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<><32>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return SEND_STATUS_UNKNOW;
}
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD>ɹ<EFBFBD>") ) )
return SEND_STATUS_SUB_OK;
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") ) )
return SEND_STATUS_SUB_FILT;
if ( !_tcscmp( szStatus , _T("<EFBFBD>ύʧ<EFBFBD><EFBFBD>") ) )
return SEND_STATUS_SUB_ERROR;
if ( !_tcscmp( szStatus , _T("Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") ) )
return SEND_STATUS_SUB_NUMNOSUP;
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") ) )
return SEND_STATUS_FILT_ERROR;
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD>ͳɹ<EFBFBD>") ) )
return SEND_STATUS_SEND_OK;
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") ) )
return SEND_STATUS_SEND_ERROR;
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD>ճɹ<EFBFBD>") ) )
return SEND_STATUS_RECV_OK;
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") ) )
return SEND_STATUS_RECV_OK;
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") ) )
return SEND_STATUS_RECV_ERROR;
if ( !_tcscmp( szStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>") ) )
return 20;
// if ( !_tcscmp( szStatus , _T("δ֪״̬") ) )
return SEND_STATUS_UNKNOW;
}
BOOL CFQXBox_Log::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
CString str;
//<2F>޸Ĺ<DEB8><C4B9>õ<EFBFBD>ַ<EFBFBD><D6B7>
if (pHead->lFuncType == SMSFUNC_QQTSTATUS)
{
ANS_QqtStatus * pStatus = (ANS_QqtStatus *)pFrame;
ANS_QqtStatus_Data * pData = (ANS_QqtStatus_Data *)(pFrame+sizeof(ANS_QqtStatus));
for ( int i = 0;i<pStatus->lCount;i++)
{
if ( pData->lStatus != -1 ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ-1,֤<><D6A4>״̬û<CCAC><EFBFBD><E4A3AC><EFBFBD>Բ<EFBFBD><D4B2>ظ<EFBFBD><D8B8><EFBFBD>
{
//COleDateTime tSend(pData->tSendTime );
//COleDateTime tRecv(pData->tRecvTime );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
TCHAR szBuf[32];
TCHAR szSelect[128]={0};
CString str;
str.Format(_T("update QXLog set Status=%d,MobileAll=%d,MobileSent=%d where Rtx_GroupTaskID=%d") , pData->lStatus,pData->lMobileAll,pData->lMobileSent,pData->lRtx_GroupTaskID);
m_AdoRS.Open(str);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
if ( pData->lItemID>=0 && pData->lItemID<m_wndList.GetItemCount() )
{
long lSendID = m_wndList.GetItemData(pData->lItemID);
if ( lSendID == pData->lRtx_GroupTaskID ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
{
long lIcon = GetStatusText( pData->lStatus , szBuf );
m_wndList.SetItemText(pData->lItemID,1,szBuf);
m_wndList.SetIconIndex( pData->lItemID , lIcon );
CString str;
str.Format(_T("%d") , pData->lMobileAll);
m_wndList.SetItemText(pData->lItemID,7,str);
str.Format(_T("%d") , pData->lMobileSent);
m_wndList.SetItemText(pData->lItemID,8,str);
}
}
}
pData ++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
}
RefreshStatus( false ); //<2F><>ѯ<EFBFBD><D1AF>1000<30><30><EFBFBD><EFBFBD>״̬
return true;
}
if (pHead->lFuncType == SMSFUNC_QQTLOGMOBILE)
{
if ( !m_bShowProcess )
return true;
ANS_QqtLogMobile * pMobile = (ANS_QqtLogMobile *)pFrame;
ANS_QqtLogMobile_Data * pData = (ANS_QqtLogMobile_Data *)(pFrame+sizeof(ANS_QqtLogMobile));
if ( pMobile->lPageCount==1 ) //<2F><>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
::DeleteFile(m_strExportName);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
HANDLE hFile = INVALID_HANDLE_VALUE;
for ( int i=0; i<20 ; i++ )
{
hFile = CreateFile( this->m_strExportName , GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL );
if ( hFile != INVALID_HANDLE_VALUE )
break;
Sleep(50);
}
if ( hFile == INVALID_HANDLE_VALUE )
{
m_DlgProcess.SetProcess( 100 ,100 ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
str.Format(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>%sʧ<73><CAA7>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!") , m_strExportName);
MessageBox(str,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONWARNING );
return true;
}
SetFilePointer( hFile, 0 , NULL , FILE_END );
str = m_strExportName;
str.MakeLower();
BOOL bWriteName = str.Find(_T("csv"))>=0;
CStringA strA;
for ( int i = 0;i<pMobile->lCount;i++)
{
CString strb;
if ( bWriteName )
{
strb = pData->szName;
strb = strb + CString(_T(","));
}
strb = strb + CString(pData->szMobile);
strb = strb + CString(_T("\r\n"));
#ifdef _UNICODE
strA += CW2A(strb);
#else
strA += strb;
#endif
pData ++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
}
DWORD len=0;
WriteFile( hFile ,strA.GetBuffer(),strA.GetLength(),&len,NULL );
CloseHandle(hFile);
m_DlgProcess.SetProcess( pMobile->lPageAll , pMobile->lPageCount );
return true;
}
if ( pHead->lFuncType == SMSFUNC_QQTRECV ) //<2F>յ<EFBFBD><D5B5><EFBFBD>
{
ANS_QQTRecv * pRecv = (ANS_QQTRecv *)pFrame;
BYTE * pData = (BYTE *)(pFrame+sizeof(ANS_QQTRecv));
long lRecvCount=0;
for ( int i = 0;i<pRecv->lCount;i++)
{
REQ_QXBox_Group_SendData * pSendData = (REQ_QXBox_Group_SendData *)pData;
pData += sizeof(REQ_QXBox_Group_SendData);
//TCHAR * pMsgData = (TCHAR*)pData;
if ( pSendData->lRtx_GroupTaskID>0 )
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><E2B7A2><EFBFBD><EFBFBD>־д<D6BE><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
CString strTimer=_T("NULL");
CString strSubTime=_T("NULL");
if ( COleDateTime(pSendData->tTimer).GetStatus() == COleDateTime::valid)
{
strTimer.Format(_T("#%04d-%02d-%02d %02d:%02d:%02d#") , pSendData->tTimer.wYear,pSendData->tTimer.wMonth,pSendData->tTimer.wDay,pSendData->tTimer.wHour,pSendData->tTimer.wMinute,pSendData->tTimer.wSecond);
}
if ( COleDateTime(pSendData->tSubTime).GetStatus() == COleDateTime::valid)
{
strSubTime.Format(_T("#%04d-%02d-%02d %02d:%02d:%02d#") , pSendData->tSubTime.wYear,pSendData->tSubTime.wMonth,pSendData->tSubTime.wDay,pSendData->tSubTime.wHour,pSendData->tSubTime.wMinute,pSendData->tSubTime.wSecond);
}
CString strDataMsg = (TCHAR*)pData;
BOOL bRead = m_pMainFrame->m_pBaseView->m_dlgQXBoxGroup.On_DS_Chat_Show(*pSendData,strDataMsg);
CString str;
str.Format(_T("insert into QXLog (Rtx_GroupTaskID,Sender,Mobile,Rtx_GroupID,GroupID,GroupName,Status,Timer,MsgType,MsgDataType,MobileAll,MobileSent,SubTime,MsgData,Reader) values (%d,'%s','%s',%d,'%s','%s',%d,%s,%d,%d,%d,%d,%s,'%s',%d)"),
pSendData->lRtx_GroupTaskID,
SqlStr(pSendData->szSender),
SqlStr(pSendData->szMobile),
pSendData->lRtx_GroupID,
pSendData->szGroupID,
SqlStr(pSendData->szGroupName),
pSendData->lStatus,
strTimer,
4, //<2F><><EFBFBD><EFBFBD>
pSendData->lMsgDataType,
pSendData->lMobileAll,
pSendData->lMobileSent,
strSubTime,
SqlStr(strDataMsg),
bRead);
m_AdoRS.Open(str);
if ( !bRead )
{
FlashIcon(false,true); //<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
}
lRecvCount ++;
}
pData += pSendData->lImageLen;
}
if (lRecvCount>0 ) //<2F>ټ<EFBFBD><D9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
{
this->RefreshInfo();
}
return true;
}
return false;
}
REQ_QXBox_Group_SendData CFQXBox_Log::GetSendData(long lItem)
{
REQ_QXBox_Group_SendData sms={0};
long lSendID = m_wndList.GetItemData(lItem);
CString strSelect;
COleDateTime t;
strSelect.Format( _T("select * from QXLog where RTX_GroupTaskID=%d") , lSendID );
if ( m_AdoRS.Open( strSelect ) && !m_AdoRS.IsEOF() )
{
m_AdoRS.GetCollect( _T("Rtx_GroupTaskID") , sms.lRtx_GroupTaskID );
m_AdoRS.GetCollect( _T("Status") , sms.lStatus );
m_AdoRS.GetCollect( _T("Rtx_GroupID") , sms.lRtx_GroupID );
}
return sms;
}
void CFQXBox_Log::OnDblclkSmslogList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_See();
}
void CFQXBox_Log::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 CFQXBox_Log::GetStatusText2(long lStatus, TCHAR *pStatus)
{
_tcscpy( pStatus , _T("δ֪״̬") );
long lIcon = 0;
switch(lStatus)
{
case SEND_STATUS_SUB_OK:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD>ɹ<EFBFBD>") );
break;
case SEND_STATUS_SUB_FILT:
//_tcscpy( pStatus , _T("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD>ɹ<EFBFBD>") );
break;
case SEND_STATUS_SUB_ERROR:
case SEND_STATUS_SUB_USERNOSMS:
case SEND_STATUS_SUB_CORPNOSMS:
case SEND_STATUS_SUB_CORPOVRDATE:
_tcscpy( pStatus , _T("<EFBFBD>ύʧ<EFBFBD><EFBFBD>") );
lIcon = 3;
break;
case SEND_STATUS_SUB_NUMNOSUP:
_tcscpy( pStatus , _T("Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
lIcon = 3;
break;
case SEND_STATUS_FILT_ERROR:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") );
lIcon = 3;
break;
case SEND_STATUS_SEND_OK:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD>ͳɹ<EFBFBD>") );
lIcon = 1;
break;
case SEND_STATUS_SEND_ERROR:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") );
lIcon = 3;
break;
case SEND_STATUS_RECV_OK:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") );
lIcon = 1;
break;
case SEND_STATUS_RECV_ERROR:
_tcscpy( pStatus , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>") );
lIcon = 3;
break;
}
return lIcon;
}
void CFQXBox_Log::OnOK()
{
//CDialog::OnOK();
}
void CFQXBox_Log::OnCancel()
{
//CDialog::OnCancel();
}
void CFQXBox_Log::SetToday(BOOL bToday)
{
if ( m_bShowToday != bToday )
{
m_bShowToday = bToday;
m_bRefresh = false;
}
}
void CFQXBox_Log::SetBakDBName(CString strDBName)
{
m_strBakDBName = strDBName;
m_bNewDB = true;
}
void CFQXBox_Log::RecvQX()
{
REQ_QQTRecv * pRecv = new REQ_QQTRecv;
pRecv->lCorpID = m_pMainFrame->m_lCorpID;
pRecv->lUserID = m_pMainFrame->m_lUserID;
m_pMainFrame->SendFrame( SMSFUNC_QQTRECV , (BYTE*)pRecv , sizeof(REQ_QQTRecv));
}
BOOL CFQXBox_Log::FlashIcon(BOOL bCheck, BOOL bFlash)
{
if ( bCheck )
{
CString str;
str=_T("select top 1 * from QXLog where Reader=0 "); //<2F><>ѯδ<D1AF><CEB4><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() )
{
bFlash = true;
}
else
{
bFlash = false;
}
m_AdoRS.Close();
}
if ( bFlash )
{
m_lIconCount = 1;
SetTimer(3 , 400 , NULL);
}
else
{
m_lIconCount = -1;
}
return bFlash;
}
BOOL CFQXBox_Log::ShowNoReaderMsg()
{
CString str;
str=_T("select top 1 * from QXLog where Reader=0 order by SubTime"); //<2F><>ѯδ<D1AF><CEB4><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() )
{
long lRtx_GroupTaskID=0;
m_AdoRS.GetCollect( _T("Rtx_GroupTaskID") , lRtx_GroupTaskID );
m_AdoRS.Close();
On_User_See2(-1,lRtx_GroupTaskID);
return true;
}
FlashIcon(false,false); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ˡ<EFBFBD>
return false;
}
void CFQXBox_Log::OnTimer(UINT_PTR nIDEvent)
{
CDialog::OnTimer(nIDEvent);
if ( nIDEvent == 3 )
{
KillTimer(nIDEvent);
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString strName=m_pMainFrame->GetSoftSName();
NOTIFYICONDATA niData;
if ( m_lIconCount <= 0 )
{
niData.hIcon = AfxGetApp()->LoadIcon( IDR_MAINFRAME );
_stprintf( niData.szTip,strName );
}
else
{
m_lIconCount ++;
if ( m_lIconCount>888888 )
m_lIconCount = 1;
if ( m_lIconCount%2 == 0 )
niData.hIcon = AfxGetApp()->LoadIcon( IDR_MAINFRAME );
else
niData.hIcon = AfxGetApp()->LoadIcon( IDI_NULL );
strName += _T("-<2D>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>");
_stprintf( niData.szTip,strName );
}
niData.cbSize = sizeof( NOTIFYICONDATA );
niData.hWnd = this->m_pMainFrame->m_hWnd;
niData.uID = 125;
niData.uFlags = NIF_ICON|NIF_TIP;
niData.uCallbackMessage = SHELL_ICON_MESS;
Shell_NotifyIcon( NIM_MODIFY,&niData );
if ( m_lIconCount>0 )
SetTimer(3 , 400 , NULL );
return ;
}
}