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

1751 lines
48 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.

// FSmsJS.cpp : implementation file
//
#include "stdafx.h"
#include "CorpSms.h"
#include "FSmsJS.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFSmsJS dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_RecvSms.h"
#include "DLG_SmsLogSee.h"
#include "DLG_SMSJS_Export.h"
#include "DLG_TypeSetup.h"
#ifdef SUPPERGSM
#include "..\public\SendThread\SendThread.h"
#endif
#include "DLG_Find_RecvSms.h"
CFSmsJS::CFSmsJS(CWnd* pParent /*=NULL*/)
: CDialog(CFSmsJS::IDD, pParent)
{
//{{AFX_DATA_INIT(CFSmsJS)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
memset(&m_Setup,0,sizeof(m_Setup));
#ifdef SUPPERGSM
m_pSendThread = NULL;
#endif
m_bOneGetSim = true;
m_lMobileRecvCount = 0;
m_pMenuType = NULL;
m_lMenuTypeCount = 0;
m_bShowToday = true;
m_bRecvFirst = true;
m_lIconCount = 0;
}
void CFSmsJS::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFSmsJS)
DDX_Control(pDX, IDC_SMSJS_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFSmsJS, CDialog)
//{{AFX_MSG_MAP(CFSmsJS)
ON_WM_SIZE()
ON_NOTIFY(LVN_KEYDOWN, IDC_SMSJS_LIST, OnKeydownSmsjsList)
ON_NOTIFY(NM_RCLICK, IDC_SMSJS_LIST, OnRclickSmsjsList)
ON_NOTIFY(NM_DBLCLK, IDC_SMSJS_LIST, OnDblclkSmsjsList)
ON_WM_TIMER()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
ON_COMMAND( MENU_SMSJS_DEL , On_User_Del )
ON_COMMAND( MENU_SMSJS_SEE , On_User_See )
ON_COMMAND( MENU_SMSJS_SEND , On_User_Send )
ON_COMMAND( MENU_SMSJS_ZF , On_User_ZF )
ON_COMMAND( MENU_SMSJS_EXPORT , On_User_Export )
ON_COMMAND( MENU_SMSJS_REFRESH , On_User_Refresh )
ON_COMMAND( MENU_SMSJS_FIND , On_User_Find )
ON_COMMAND( MENU_SMSJS_TYPESETUP , On_User_TypeSetup )
ON_COMMAND(MENU_SMSJS_ALLREAD, On_User_AllRead)
#ifdef SUPPERGSM
ON_MESSAGE( TW_INIT , On_TW_Init ) //´®¿ÚÏ̷߳µ»ØµÄÏûÏ¢
ON_MESSAGE( TW_SEND , On_TW_Send )
ON_MESSAGE( TW_RECV , On_TW_Recv )
ON_MESSAGE( TW_GETSIM , On_TW_GetSim )
ON_MESSAGE( TW_CLEAR , On_TW_Clear )
ON_MESSAGE( TW_DELETE , On_TW_Delete )
#endif
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFSmsJS message handlers
BOOL CFSmsJS::OnInitDialog()
{
USES_CONVERSION;
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 );
m_AdoRS2.SetAdoConnection( &m_pMainFrame->m_adoConnection );
//Á¬½Óµ½ºÅ¶Î±í
TCHAR szPath[512]={0};
m_pMainFrame->GetCurrentPath( szPath );
_tcscat( szPath , _T("SMSData.dat") ); //Êý¾Ý¿âÎļþÃû
//½âÃÜÂë
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
strcpy(szNew,szNew2);
#endif
if ( !m_HDadoConnection.ConnectAccess(szPath,szNew ) ) //Á¬½ÓÊý¾Ý¿â´íÎó,ÐèÒªÖØÐ´´½¨
{
MessageBox( _T("ϵͳÎļþ¶ªÊ§6£¬ÇëÖØÐ°²×°!") , _T("ÖÂÃü´íÎó") , MB_ICONWARNING );
return false;
}
m_HDAdoRS.SetAdoConnection( &m_HDadoConnection ); //ÉèÖÃÁ¬½Ó
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMS_UNREAD) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMS_READ) );
m_wndList.SubClassWindow2();
#ifdef YQ_VER
m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,120;·¢ËÍÈË,100;½ÓÊÕºÅÂë,120; ¶ÌÐÅÄÚÈÝ,280;ÊÕÐÅʱ¼ä,130;¶ÌÐÅ·ÖÀà,100;ÊÖ»ú¹éÊôµØ,120;"));
#else
#ifdef MOBSET_OEM_SNLD
m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,120;·¢ËÍÈË,80;½ÓÊÕºÅÂë,120; ¶ÌÐÅÄÚÈÝ,200;ÊÕÐÅʱ¼ä,130;êdzÆ,80;ÐÔ±ð,50; ÉúÈÕ,90; ¹«Ë¾,80;Ö°Îñ,80;µç»°,80;´«Õæ,80;Email,80;QQ,80;±¸×¢,80;"));
#else
#ifdef MOBSET_OEM_BYSZY
m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,120;·¢ËÍÈË,100;½ÓÊÕºÅÂë,120; ¶ÌÐÅÄÚÈÝ,280;ÊÕÐÅʱ¼ä,130;ÊÖ»ú¹éÊôµØ,120;¹éÊôÓû§×é,120;"));
#else
m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,120;·¢ËÍÈË,100;½ÓÊÕºÅÂë,120; ¶ÌÐÅÄÚÈÝ,280;ÊÕÐÅʱ¼ä,130;ÊÖ»ú¹éÊôµØ,120;"));
#endif
#endif
#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;
//SetTimer( 1 , 1000 , NULL ); //½øÐÐÁ¬½ÓÊÖ»ú²Ù×÷
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CFSmsJS::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFSmsJS::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CFSmsJS::RefreshInfo()
{
m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
m_bRefresh = true;
m_wndList.DeleteAllItems();
TCHAR szSelect[512]={0};
if ( m_bShowToday )
{
//½ö²éѯµ±ÌìµÄ
SYSTEMTIME t;::GetLocalTime(&t);
if ( m_pMainFrame->m_Setup.bSQLUse )
_stprintf( szSelect , _T("select * from smsRecv where RecvTime>='%04d%02d%02d' %s order by RecvTime"),t.wYear,t.wMonth,t.wDay,m_strFindAdd ); //²éѯÒÑ·¢¶ÌÐÅ
else
_stprintf( szSelect , _T("select * from smsRecv where RecvTime>=#%04d-%02d-%02d# %s order by RecvTime"),t.wYear,t.wMonth,t.wDay,m_strFindAdd ); //²éѯÒÑ·¢¶ÌÐÅ
}
else
{
if ( m_strFindAdd.GetLength()>0 )
_stprintf( szSelect , _T("select * from smsRecv where 1 %s order by RecvTime"),m_strFindAdd ); //²éѯ½ÓÊռǼ
else
_stprintf( szSelect , _T("select * from smsRecv order by RecvTime") ); //²éѯ½ÓÊռǼ
}
//_stprintf( szSelect , _T("select * from smsRecv") ); //²éѯ½ÓÊռǼ
BOOL b = m_AdoRS.Open( szSelect );
COleDateTime tRecv;
long lCount = m_AdoRS.GetRecordCount();
if ( b && lCount )
{
m_AdoRS.MoveFirst();
long iItem = 0;
while( !m_AdoRS.IsEOF() )
{
long lRecvID;
BOOL bRead;
TCHAR szSendNum[128]={0};
TCHAR szSender[32]={0};
TCHAR szRecvNum[32]={0};
TCHAR szMsg[180]={0};
TCHAR szType1[64]={0};
TCHAR szType2[32]={0};
TCHAR szProvince[64]={0};
TCHAR szCity[32]={0};
m_AdoRS.GetCollect( _T("RecvID") , lRecvID );
m_AdoRS.GetCollect( _T("Reader") , bRead );
m_AdoRS.GetCollect( _T("SendNum") , szSendNum );
m_AdoRS.GetCollect( _T("Sender") , szSender );
m_AdoRS.GetCollect( _T("RecvNum") , szRecvNum );
m_AdoRS.GetCollect( _T("Msg") , szMsg );
m_AdoRS.GetCollect( _T("RecvTime"), tRecv );
m_AdoRS.GetCollect( _T("Province") , szProvince );
m_AdoRS.GetCollect( _T("City") , szCity );
#ifdef MOBSET_OEM_SNLD
CString NickName;
CString Sex;
COleDateTime Birthday;
CString Ltd;
CString Job;
CString Tel;
CString Fax;
CString Email;
CString QQ;
CString BZ;
m_AdoRS.GetCollect( _T("NickName") , NickName );
m_AdoRS.GetCollect( _T("Sex") , Sex );
m_AdoRS.GetCollect( _T("Birthday") , Birthday );
m_AdoRS.GetCollect( _T("Ltd") , Ltd );
m_AdoRS.GetCollect( _T("Job") , Job );
m_AdoRS.GetCollect( _T("Tel") , Tel );
m_AdoRS.GetCollect( _T("Fax") , Fax );
m_AdoRS.GetCollect( _T("Email") , Email );
m_AdoRS.GetCollect( _T("QQ") , QQ );
m_AdoRS.GetCollect( _T("BZ") , BZ );
#endif
#ifdef MOBSET_OEM_BYSZY
CString Local;
m_AdoRS.GetCollect( _T("LocalGroup") , Local );
#endif
//
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,100;½ÓÊÕºÅÂë,80; ¶ÌÐÅÄÚÈÝ,280;ÊÕÐÅʱ¼ä,120;"));
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,150;½ÓÊÕºÅÂë,120; ¶ÌÐÅÄÚÈÝ,280;ÊÕÐÅʱ¼ä,130;¶ÌÐÅ·ÖÀà,100;ÊÖ»ú¹éÊôµØ,120;"));
m_wndList.InsertItem( 0 , _itot( iItem+1,szSelect,10) , bRead ); //ÒѶÁÓëδ¶Áͼ±ê²»Ò»Ñù
m_wndList.SetItemData( 0,lRecvID );
#ifdef MOBSET_OEM_SNLD
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,120;·¢ËÍÈË,80;½ÓÊÕºÅÂë,120; ¶ÌÐÅÄÚÈÝ,200;ÊÕÐÅʱ¼ä,130;êdzÆ,80;ÐÔ±ð,50; ¹«Ë¾,80;Ö°Îñ,80;µç»°,80;´«Õæ,80;Email,80;QQ,80;±¸×¢,80;"));
m_wndList.SetItemText(0,1,szSendNum);
m_wndList.SetItemText(0,2,szSender);
m_wndList.SetItemText(0,3,szRecvNum);
m_wndList.SetItemText(0,4,szMsg);
if ( tRecv.GetStatus() == COleDateTime::valid )
{
_stprintf( szMsg , _T("%04d.%02d.%02d %02d:%02d") , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
m_wndList.SetItemText(0,5,szMsg);
}
m_wndList.SetItemText(0,6,NickName);
m_wndList.SetItemText(0,7,Sex);
if ( Birthday.GetStatus() == COleDateTime::valid )
{
_stprintf( szMsg , _T("%04d.%02d.%02d") ,Birthday.GetYear(), Birthday.GetMonth(),Birthday.GetDay() );
m_wndList.SetItemText(0,8,szMsg);
}
m_wndList.SetItemText(0,9,Ltd);
m_wndList.SetItemText(0,10,Job);
m_wndList.SetItemText(0,11,Tel);
m_wndList.SetItemText(0,12,Fax);
m_wndList.SetItemText(0,13,Email);
m_wndList.SetItemText(0,14,QQ);
m_wndList.SetItemText(0,15,BZ);
#else
m_wndList.SetItemText(0,1,szSendNum);
m_wndList.SetItemText(0,2,szSender);
m_wndList.SetItemText(0,3,szRecvNum);
m_wndList.SetItemText(0,4,szMsg);
if ( tRecv.GetStatus() == COleDateTime::valid )
{
_stprintf( szMsg , _T("%04d.%02d.%02d %02d:%02d") , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
m_wndList.SetItemText(0,5,szMsg);
}
if ( _tcslen(szCity)>0 )
{
_tcscat( szProvince , _T("-") );
_tcscat( szProvince , szCity );
}
#ifdef YQ_VER
m_AdoRS.GetCollect( _T("Type1") , szType1 );
m_AdoRS.GetCollect( _T("Type2") , szType2 );
if ( _tcslen(szType2)>0 )
{
_tcscat( szType1 , _T("-") );
_tcscat( szType1 , szType2 );
}
m_wndList.SetItemText(0,6,szType1);
m_wndList.SetItemText(0,7,szProvince);
#else
m_wndList.SetItemText(0,6,szProvince);
#endif
#ifdef MOBSET_OEM_BYSZY
m_wndList.SetItemText(0,7,Local);
#endif
#endif
iItem++;
m_AdoRS.MoveNext();
}
}
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
RecvSms(); //ȡеĶÌÐÅÄÚÈÝ
FlashIcon(true,false); //ÉÁ¶¯Í¼±ê
return true;
}
void CFSmsJS::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
long CFSmsJS::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CFSmsJS::OnKeydownSmsjsList(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 == 'Z' || pLVKeyDow->wVKey == 'z')
{
On_User_ZF();
}
if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r')
{
On_User_Refresh();
}
if ( pLVKeyDow->wVKey == 'F' || pLVKeyDow->wVKey == 'f')
{
On_User_Find();
}
if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a')
{
m_wndList.SelectAllItems();
}
}
void CFSmsJS::RecvSms()
{
//ûÓÐȨÏÞ
if ( !m_pMainFrame->GetUserPurview( PURVIEW_RECVG , false ) &&
!m_pMainFrame->GetUserPurview( PURVIEW_RECVP , false ) )
return ;
REQ_Recv2 * pRecv = new REQ_Recv2;
pRecv->lCorpID = m_pMainFrame->m_lCorpID;
pRecv->lUserID = m_pMainFrame->m_lUserID;
m_pMainFrame->SendFrame( SMSFUNC_RECV2 , (BYTE*)pRecv , sizeof(REQ_Recv2));
}
BOOL CFSmsJS::ProcessSocket(Socket_Head *pHead)
{
//ÊÕµ½¶ÌÐÅ
if (pHead->lFuncType == SMSFUNC_RECV)
{
ANS_Recv * pRecv = (ANS_Recv *)pHead->pFrame;
ANS_RecvData * pData = (ANS_RecvData *)(pHead->pFrame+sizeof(ANS_Recv));
m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
//Ìí¼Óµ½Êý¾Ý¿âÀï
for ( int i = 0;i<pRecv->lCount;i++)
{
ANS_RecvData2 sms={0};
sms.lLogID = pData->lLogID;
_tcscpy(sms.szRecvNum , pData->szRecvNum );
_tcscpy(sms.szSendNum , pData->szSendNum );
_tcscpy(sms.szMsg , pData->szMsg );
sms.tRecv = pData->tRecv;
RecvNewSms(sms,i<3?true:false);
pData++; //ÏÔʾÏÂÒ»Ìõ
}
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
if ( m_bRecvFirst && pRecv->lCount <= 0 && !m_pMainFrame->m_Setup.bSmsNoTip) //ûÊÕµ½ÐµĶÌÐÅ
{
m_bRecvFirst = false;
CString str;
str = _T("select count(*) as abc from smsrecv where Reader=0 or Reader is NULL");
if ( m_AdoRS.Open(str) && m_AdoRS.GetRecordCount()>0 )
{
long lRead=0;
m_AdoRS.MoveFirst();
m_AdoRS.GetCollect(_T("abc"),lRead);
m_AdoRS.Close();
if ( lRead>0 )
{
SMS_Recv2 sms2={0};
//_stprintf( sms2.szMsg , _T("ÄãÓÐ%dÌõδ¶Á¶ÌÐÅ!"),lRead );
//_tcscpy( sms2.szSender , _T("¶ÌÐÅÒ×ÌáÐÑ") );
_stprintf( sms2.szTime , _T("ÄãÓÐ%dÌõδ¶Á¶ÌÐÅ!"),lRead );
DLG_RecvSms * dlg = new DLG_RecvSms;
dlg->Create(IDD_RECVSMS , this);
//dlg->SetPara( &sms2,_T("¶ÌÐÅÒ×ÌáÐÑ") );
dlg->SetPara( &sms2,_T("δ¶Á¶ÌÐÅÌáÐÑ") );
dlg->ShowWindow( SW_SHOW);
this->SetFocus();
}
}
}
return true;
}
//ÊÕµ½¶ÌÐÅ
if (pHead->lFuncType == SMSFUNC_RECV2)
{
ANS_Recv2 * pRecv = (ANS_Recv2 *)pHead->pFrame;
ANS_RecvData2 * pData = (ANS_RecvData2 *)(pHead->pFrame+sizeof(ANS_Recv2));
m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
//Ìí¼Óµ½Êý¾Ý¿âÀï
for ( int i = 0;i<pRecv->lCount;i++)
{
RecvNewSms(*pData,i<3?true:false);
pData++; //ÏÔʾÏÂÒ»Ìõ
}
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
if ( m_bRecvFirst && pRecv->lCount <= 0 && !m_pMainFrame->m_Setup.bSmsNoTip) //ûÊÕµ½ÐµĶÌÐÅ
{
m_bRecvFirst = false;
CString str;
str = _T("select count(*) as abc from smsrecv where Reader=0 or Reader is NULL");
if ( m_AdoRS.Open(str) && m_AdoRS.GetRecordCount()>0 )
{
long lRead=0;
m_AdoRS.MoveFirst();
m_AdoRS.GetCollect(_T("abc"),lRead);
m_AdoRS.Close();
if ( lRead>0 )
{
SMS_Recv2 sms2={0};
//_stprintf( sms2.szMsg , _T("ÄãÓÐ%dÌõδ¶Á¶ÌÐÅ!"),lRead );
//_tcscpy( sms2.szSender , _T("¶ÌÐÅÒ×ÌáÐÑ") );
_stprintf( sms2.szTime , _T("ÄãÓÐ%dÌõδ¶Á¶ÌÐÅ!"),lRead );
DLG_RecvSms * dlg = new DLG_RecvSms;
dlg->Create(IDD_RECVSMS , this);
dlg->SetPara( &sms2,_T("δ¶Á¶ÌÐÅÌáÐÑ") );
//dlg->SetPara( &sms2,"¶ÌÐÅÒ×ÌáÐÑ" );
dlg->ShowWindow( SW_SHOW);
this->SetFocus();
}
}
}
return true;
}
return false;
}
void CFSmsJS::On_User_AllRead()
{
CString strSelect;
strSelect = _T("update smsrecv set Reader=1 where Reader<>1");
m_AdoRS.Open(strSelect);
On_User_Refresh();
}
void CFSmsJS::On_User_See()
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
SMS_See sms = GetSms(lItem);
CString strSendNum = sms.szSender;
if ( _tcslen(sms.szSender2) )
{
_tcscat(sms.szSender,_T("-") );
_tcscat(sms.szSender,sms.szSender2);
}
ReadSms(lItem); //״̬±äΪÒѶÁ
DLG_SmsLogSee dlg(this);
sms.lType = SMS_SEE_TYPE_RECV;
dlg.SetParam(sms);
dlg.SetReadSms(true);
if ( dlg.DoModal() == 300 ) //°´ÁËÁ¢¼´»Ø¸´
{
if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //н¨Áбí
{
//Ìí¼ÓÄÚÈÝ
m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( _T("") ); //ÄÚÈÝΪ¿Õ
//Ìí¼ÓºÅÂë
//·ÖÅäÊý¾Ý
long lCount = 1;
long lSize = sizeof(Send_User)*lCount;
BYTE *pS = new BYTE[lSize];
memset( pS , 0 , lSize );
Send_User * pUser = (Send_User * )pS;
_tcscpy(pUser->szName , sms.szSender2 );
_tcscpy(pUser->szMobile , strSendNum );
m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS);
delete pS;
}
}
}
void CFSmsJS::On_User_Send()
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
ReadSms(lItem); //״̬±äΪÒѶÁ
if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //н¨Áбí
{
//Ìí¼ÓºÅÂë
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 lRecvID = m_wndList.GetItemData( lItem );
if ( lRecvID > 0 )
{
_stprintf( szSelect , _T("select * from smsrecv where RecvID=%d"), lRecvID );
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 CFSmsJS::On_User_ZF()
{
long lItem = GetCurrentSelected();
if ( lItem <0 )
return ;
ReadSms(lItem); //״̬±äΪÒѶÁ
SMS_See sms = GetSms(lItem);
if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //н¨Áбí
{
//Ìí¼ÓÄÚÈÝ
m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( sms.szMsg ); //ÄÚÈÝΪ¿Õ
}
}
void CFSmsJS::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 lRecvID = 0;
TCHAR szSelect[128];
//µ¹×ªÉ¾³ý
m_wndList.ShowWindow( SW_HIDE ); //¼Ó¿ìÏÔʾµÄËÙ¶È
for ( i = lCount ; i>0 ; i-- )
{
lRecvID = m_wndList.GetItemData( lDel[i-1] );
_stprintf( szSelect , _T("delete from smsrecv where RecvID=%d ") , lRecvID );
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 CFSmsJS::On_User_Export()
{
DLG_SMSJS_Export dlg(this);
dlg.SetParam(&m_AdoRS2,&m_wndList);
dlg.DoModal();
}
void CFSmsJS::On_User_Refresh()
{
RefreshInfo();
}
void CFSmsJS::On_User_Find()
{
CString strTemp;
DLG_Find_RecvSms dlg(this);
dlg.SetParam(!m_bShowToday);
if ( dlg.DoModal() == IDOK )
{
m_strFindAdd = _T("");
if ( !m_bShowToday )
{
strTemp.Format( _T(" AND RecvTime>=#%04d-%02d-%02d# AND RecvTime<=#%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_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 CFSmsJS::On_User_TypeSetup()
{
DLG_TypeSetup dlg(this);
dlg.SetParam( &m_AdoRS2 );
dlg.DoModal();
}
void CFSmsJS::OnRclickSmsjsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CFSmsJS::OnDblclkSmsjsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_See();
}
void CFSmsJS::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
#ifdef YQ_VER
CMenu MenuType;
MenuType.CreatePopupMenu();
if ( lItem >= 0 )
{
//Éú³É´æÖü¿Õ¼ä
long lCount=0;
if ( m_AdoRS2.Open( _T("RecvType") , adCmdTable ) )
{
lCount = m_AdoRS2.GetRecordCount();
m_AdoRS2.Close();
}
if ( m_pMenuType )
delete m_pMenuType;
m_pMenuType = new Menu_Type[lCount];
memset(m_pMenuType , 0 , sizeof(Menu_Type)*lCount );
m_lMenuTypeCount = 0;
CMenu * pMenu = NULL;
//Éú³ÉMenu¸öÊý
if ( m_AdoRS2.Open( _T("select * from RecvType where Type=1") ) && m_AdoRS2.GetRecordCount()>0 )
{
long lMenuCount=m_AdoRS2.GetRecordCount();
pMenu = new CMenu[lMenuCount];
lMenuCount=0;
m_AdoRS2.MoveFirst();
while( !m_AdoRS2.IsEOF() )
{
long lID;
CString strName;
m_AdoRS2.GetCollect( _T("ID") , lID );
m_AdoRS2.GetCollect( _T("Name") , strName );
//Ïȼì²éÓÐûÓÐ×ÓÀà
CString str;
str.Format( _T("select * from RecvType Where Type=2 and ID2=%d") , lID );
if ( m_AdoRS.Open(str) && m_AdoRS.GetRecordCount()>0 )
{
pMenu[lMenuCount].CreatePopupMenu();
MenuType.AppendMenu( MF_STRING|MF_POPUP,(UINT)pMenu[lMenuCount].GetSafeHmenu(), strName );
m_AdoRS.MoveFirst();
while(!m_AdoRS.IsEOF() )
{
CString strName2;
m_AdoRS.GetCollect( _T("Name") , strName2 );
pMenu[lMenuCount].AppendMenu( MF_STRING , MENU_SMSJS_TYPESETUP+m_lMenuTypeCount+1 , strName2 );
_tcscpy( m_pMenuType[m_lMenuTypeCount].szType1 , strName );
_tcscpy( m_pMenuType[m_lMenuTypeCount].szType2 , strName2 );
m_lMenuTypeCount ++;
m_AdoRS.MoveNext();
}
m_AdoRS.Close();
lMenuCount ++;
}
else
{
MenuType.AppendMenu( MF_STRING,MENU_SMSJS_TYPESETUP+m_lMenuTypeCount+1, strName );
_tcscpy( m_pMenuType[m_lMenuTypeCount].szType1 , strName );
m_lMenuTypeCount ++;
}
m_AdoRS2.MoveNext();
}
m_AdoRS2.Close();
}
MenuType.AppendMenu(MF_SEPARATOR );
}
MenuType.AppendMenu(MF_STRING , MENU_SMSJS_TYPESETUP , _T(" Àà±ðÉèÖà ") );
#endif
if ( lItem >= 0 )
{
menu.AppendMenu(MF_STRING , MENU_SMSJS_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING , MENU_SMSJS_SEND , _T(" »Ø ¸´ ") );
menu.AppendMenu(MF_STRING , MENU_SMSJS_ZF , _T(" ת ·¢ ") );
menu.AppendMenu(MF_STRING , MENU_SMSJS_DEL , _T(" ɾ ³ý ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SMSJS_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SMSJS_SEND, _T(" »Ø ¸´ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SMSJS_ZF, _T(" ת ·¢ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SMSJS_DEL , _T(" ɾ ³ý ") );
}
#ifdef YQ_VER
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING|MF_POPUP,(UINT)MenuType.GetSafeHmenu(), _T(" ·Ö Àà ") );
#endif
menu.AppendMenu(MF_SEPARATOR );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_SMSJS_EXPORT, _T(" µ¼³ö... ") );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_SMSJS_FIND , _T(" ²éÕÒ... ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING, MENU_SMSJS_ALLREAD, _T(" È«²¿±êΪÒѶÁ "));
menu.AppendMenu(MF_SEPARATOR);
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_SMSJS_REFRESH, _T(" ˢ Р") );
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
SMS_See CFSmsJS::GetSms(long lItem,BOOL bID)
{
SMS_See sms={0};
long lRecvID = 0;
if ( bID )
lRecvID = lItem;
else
lRecvID = m_wndList.GetItemData(lItem);
CString strSelect;
COleDateTime t;
strSelect.Format( _T("select * from smsrecv where RecvID=%d") , lRecvID );
if ( m_AdoRS.Open( strSelect ) && m_AdoRS.GetRecordCount() )
{
m_AdoRS.MoveFirst();
m_AdoRS.GetCollect( _T("Sender") , sms.szSender2 );
m_AdoRS.GetCollect( _T("SendNum") , sms.szSender );
m_AdoRS.GetCollect( _T("RecvNum") , sms.szRecver );
m_AdoRS.GetCollect( _T("Msg") , sms.szMsg );
m_AdoRS.GetCollect( _T("RecvTime"), t );t.GetAsSystemTime(sms.tRecv);
sms.tSend = sms.tRecv;
_tcscpy( sms.szStatus , _T("½Ó ÊÕ") );
}
return sms;
}
void CFSmsJS::ReadSms(long lItem)
{
long lRecvID = m_wndList.GetItemData(lItem);
if ( lRecvID > 0 )
{
CString strSelect;
strSelect.Format( _T("update smsrecv set Reader=1 where RecvID=%d") , lRecvID );
if ( m_AdoRS.Open( strSelect ) && m_AdoRS.GetRecordCount() )
{
m_wndList.SetIconIndex( lItem , 1 ); //ÏÔʾÒѶÁͼ±ê
}
}
}
void CFSmsJS::OnTimer(UINT_PTR nIDEvent)
{
CDialog::OnTimer(nIDEvent);
#ifdef SUPPERGSM
if ( nIDEvent == 1 )
{
KillTimer(1);
if ( m_pSendThread )
{
m_pSendThread->Com_Exit();
SMS_Init * pSms = new SMS_Init;
if (m_Setup.lPort == 0)
pSms->lConnectType = CONNECT_IRDA;
else
pSms->lConnectType = CONNECT_CABLE;
pSms->lIndex = 0;
pSms->lMobType = m_Setup.lMobileType;
pSms->lPort = m_Setup.lPort;
pSms->lBuadrate = m_Setup.lBaudrate;
pSms->lTimeOut = COM_TIMOUT;
pSms->pWnd = (CWnd *)this;
m_pSendThread->PostThreadMessage( TH_INIT , (WPARAM)pSms , 0 );
m_pMainFrame->SetStatMsg( _T("ÕýÔÚ¼ì²âÊÖ»ú...") );
}
return ;
}
#endif
if ( nIDEvent == 3 )
{
KillTimer(nIDEvent);
//½«Í¼±ê¼ÓÈëµ½ÈÎÎñÀ¸
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("-ÊÕµ½ÐÂÏûÏ¢");
_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 , 500 , NULL );
return ;
}
}
#ifdef SUPPERGSM
long CFSmsJS::On_TW_Init(WPARAM wParam , LPARAM lParam )
{
long lIndex = (long) wParam;
long lCode = (long) lParam;
if ( lIndex !=0 ) //ÏûÏ¢µÄ¿ÉÄÜÊÇ´íÎóµÄ
return false;
char Buf[64];
switch( lCode ) //Á¬½ÓÇé¿ö
{
case -1:
_tcscpy(Buf , "Á¬½Ó´®¿Úʧ°Ü" );
break;
case -2:
_tcscpy(Buf , "³õʼ»¯ºìÍâÁ¬½Óʧ°Ü" );
break;
case -3:
_tcscpy(Buf , "¼ì²â²»µ½ÊÖ»ú" );
break;
case 0:
_stprintf(Buf , "Á¬½Ó³É¹¦:ÊÖ»úÐͺÅΪ:%s" , m_pSendThread->m_szMobileName );
break;
default:
_tcscpy(Buf , "δ֪´íÎó£¬Á¬½Óʧ°Ü" );
break;
}
m_pMainFrame->SetStatMsg(Buf);
if ( lCode != 0 ) //ûÓгɹ¦µÄ£¬×¼±¸ÖØÐÂÁ¬½Ó
{
Sleep(500);
m_pSendThread->Com_Exit();
SetTimer( 1 , 2000 , NULL ); //ÖØÐÂÁ¬½ÓÊÖ»ú
}
else
{
if (this->m_Setup.bAutoRead) //Èç¹ûÑ¡ÔñÁË×Ô¶¯È¡SIM¿¨¶ÌÐÅ
{
//Ö±½ÓÈ¡SIM¿¨ÖеĶÌÏûÏ¢
m_bOneGetSim = false;
m_pMainFrame->SetStatMsg("ÕýÔÚ²éѯSIM¿¨É϶ÌÏûÏ¢...");
m_pSendThread->PostThreadMessage( TH_GETSIM , 0 , 0 );
}
// else
// if (m_pMainFrame->m_pFuncView->isAutoClear()) //Èç¹ûÑ¡ÔñÁË×Ô¶¯É¾³ý
// {
// //Çå¿ÕSIM¿¨ÖеĶÌÏûÏ¢
// m_bOneGetSim = false;
// SendState_SetMsg( lIndex , "ÕýÔÚÇå¿ÕSIM¿¨É϶ÌÏûÏ¢..." );
// m_pMCom[lIndex].m_lTime = GetTickCount();
// m_pMCom[lIndex].pSendThread->PostThreadMessage( TH_CLEAR , 0 , 0 );
// }
// else //ûÓÐ×Ô¶¯È¡ÓëÇå¿Õ¶ÌÐÅ£¬ÔòÖ±½Ó·¢ËͶÌÐÅ
// {
// SendNextSms(lIndex); //´Ó·¢ËͶÓÁÐÀïÈ¡³öÊý¾Ý¿ªÊ¼·¢ËÍ¡£
// }
}
return 1;
}
long CFSmsJS::On_TW_Send(WPARAM wParam , LPARAM lParam )
{
return 1;
}
long CFSmsJS::On_TW_Recv(WPARAM wParam , LPARAM lParam )
{
long lIndex = (long)wParam;
SMS_Recv * pSms = (SMS_Recv *)lParam;
m_pMainFrame->SetStatMsg("½ÓÊÕµ½ÐµÄÐÅÏ¢£¡" );
if ( pSms->lMsgType == MSGTYPE_REPORT ) //´Ë¶ÌÏûÏ¢ÊÇ״̬±¨¸æ
{
return 1; //ºöÂÔ״̬±¨¸æ
}
m_lMobileRecvCount ++; //½ÓÊÕµ½µÄ¶ÌÐÅ+1;
if ( pSms->lMsgType == MSGTYPE_SMS )
{
ANS_RecvData2 sms={0};
_tcscpy( sms.szSendNum , pSms->szSender );
_tcscpy( sms.szRecvNum , "mobile" );
_tcscpy( sms.szMsg , pSms->szMsg );
::GetLocalTime(&sms.tRecv);
ExMobileGZM(sms.szSendNum);
RecvNewSms(sms,true); //ÊÕµ½ÐµÄÐÅÏ¢;
}
//Èç¹ûËù½ÓÊÕµ½µÄ²»ÊÇSIM¿¨¶ÌÐÅ£¬²¢ÉèÖÃÓÚ×Ô¶¯É¾³ý£¬ÔòÖ±½Óɾ³ýµÚÒ»Ìõ¶ÌÐÅ
if ( !pSms->bSim && m_Setup.bAutoDelete )
{
long lDel = pSms->lIndex > 0 ? pSms->lIndex : 1;
char Buf[64]={0};
_stprintf( Buf , "ÕýÔÚɾ³ýµÚ%dÌõ¶ÌÏûÏ¢..." , lDel );
m_pMainFrame->SetStatMsg(Buf );
m_pSendThread->PostThreadMessage( TH_DELETE , lDel , 0 );
}
return 1;
}
long CFSmsJS::On_TW_GetSim(WPARAM wParam , LPARAM lParam )
{
long lIndex = (long)wParam;
long lCode = (long)lParam;
char Buf[32]={0};
switch( lCode ) //Á¬½ÓÇé¿ö
{
case -4:
_tcscpy(Buf , "½Ó¿Ú»¹Î´³õʼ»¯" );
break;
case -2:
_tcscpy(Buf , "²éѯSIM¿¨¶ÌÐų¬Ê±" );
break;
default:
_stprintf(Buf , "²éѯSIM¿¨¶ÌÐųɹ¦£¬ÕÒµ½%dÌõ¶ÌÐÅ" , lCode);
break;
}
m_pMainFrame->SetStatMsg( Buf );
if ( lCode == -2 ) //³¬Ê±
{
Sleep(500);
m_pSendThread->Com_Exit();
SMS_Init * pSms = new SMS_Init;
if (m_Setup.lPort == 0)
pSms->lConnectType = CONNECT_IRDA;
else
pSms->lConnectType = CONNECT_CABLE;
pSms->lIndex = 0;
pSms->lMobType = m_Setup.lMobileType;
pSms->lPort = m_Setup.lPort;
pSms->lBuadrate = m_Setup.lBaudrate;
pSms->lTimeOut = COM_TIMOUT;
pSms->pWnd = (CWnd *)this;
m_pSendThread->PostThreadMessage( TH_INIT , (WPARAM)pSms , 0 );
m_pMainFrame->SetStatMsg( "ÕýÔÚ¼ì²âÊÖ»ú..." );
}
else
{
Sleep(500);
m_pMainFrame->SetStatMsg( "ÕýÔÚÇå¿ÕSIM¿¨..." );
m_pSendThread->PostThreadMessage( TH_CLEAR , 0 , 0 );
}
// else
// {
// if (m_pMainFrame->m_pFuncView->isAutoClear() && !m_bOneGetSim) //Èç¹ûÑ¡ÔñÁË×Ô¶¯É¾³ý
// {
// //Çå¿ÕSIM¿¨ÖеĶÌÏûÏ¢
// m_bOneGetSim = false;
// SendState_SetMsg( lIndex , "ÕýÔÚÇå¿ÕSIM¿¨É϶ÌÏûÏ¢..." );
// m_pMCom[lIndex].m_lTime = GetTickCount();
// m_pMCom[lIndex].pSendThread->PostThreadMessage( TH_CLEAR , 0 , 0 );
// }
// else
// {
// m_pMCom[lIndex].m_lTime = GetTickCount() + 3600*8*1000; //ÓÐÁ¬½ÓֻΪÁ˽ÓÊÕ£¬ËùÒÔÔÚ8СʱÄÚ²»»á³¬Ê±ÖØÁ¬
// SendNextSms(lIndex); //´Ó·¢ËͶÓÁÐÀïÈ¡³öÊý¾Ý¿ªÊ¼·¢ËÍ¡£
// }
// }
return 1;
}
long CFSmsJS::On_TW_Clear(WPARAM wParam , LPARAM lParam )
{
long lIndex = (long)wParam;
long lCode = (long)lParam;
if ( lCode == -2 ) //³¬Ê±
{
m_pMainFrame->SetStatMsg( "Çå¿Õ¶ÌÐÅʧ°Ü!" );
Sleep(500);
m_pSendThread->Com_Exit();
SMS_Init * pSms = new SMS_Init;
if (m_Setup.lPort == 0)
pSms->lConnectType = CONNECT_IRDA;
else
pSms->lConnectType = CONNECT_CABLE;
pSms->lIndex = 0;
pSms->lMobType = m_Setup.lMobileType;
pSms->lPort = m_Setup.lPort;
pSms->lBuadrate = m_Setup.lBaudrate;
pSms->lTimeOut = COM_TIMOUT;
pSms->pWnd = (CWnd *)this;
m_pSendThread->PostThreadMessage( TH_INIT , (WPARAM)pSms , 0 );
m_pMainFrame->SetStatMsg( "ÕýÔÚ¼ì²âÊÖ»ú..." );
}
else
{
m_pMainFrame->SetStatMsg( "Çå¿Õ¶ÌÐųɹ¦!" );
SetTimer( 1 , 60000*30 , NULL ); //ÿ30·ÖÖØÐÂÁ¬½ÓÓëÈ¡¶ÌÐÅ£¬Çå¿Õ¶ÌÐÅ
}
return 1;
}
long CFSmsJS::On_TW_Delete(WPARAM wParam , LPARAM lParam )
{
long lIndex = (long)wParam;
long lCode = (long)lParam;
if ( lCode == -2 ) //³¬Ê±
{
m_pMainFrame->SetStatMsg( "ɾ³ý¶ÌÐÅʧ°Ü!" );
Sleep(500);
m_pSendThread->Com_Exit();
SMS_Init * pSms = new SMS_Init;
if (m_Setup.lPort == 0)
pSms->lConnectType = CONNECT_IRDA;
else
pSms->lConnectType = CONNECT_CABLE;
pSms->lIndex = 0;
pSms->lMobType = m_Setup.lMobileType;
pSms->lPort = m_Setup.lPort;
pSms->lBuadrate = m_Setup.lBaudrate;
pSms->lTimeOut = COM_TIMOUT;
pSms->pWnd = (CWnd *)this;
m_pSendThread->PostThreadMessage( TH_INIT , (WPARAM)pSms , 0 );
m_pMainFrame->SetStatMsg( "ÕýÔÚ¼ì²âÊÖ»ú..." );
}
else
{
m_pMainFrame->SetStatMsg( "ɾ³ý¶ÌÐųɹ¦!" );
Sleep(500);
if ( m_Setup.lAutoClearCount>0 && m_lMobileRecvCount > 0 && m_lMobileRecvCount%m_Setup.lAutoClearCount==0 ) //ÿ½ÓÊÕµ½10Ìõ¶ÌÐÅ£¬×Ô¶¯Çå¿ÕSIM¿¨
{
m_pMainFrame->SetStatMsg( "ÕýÔÚÇå¿ÕSIM¿¨..." );
m_pSendThread->PostThreadMessage( TH_CLEAR , 0 , 0 );
}
}
return 1;
}
#endif
void CFSmsJS::OnDestroy()
{
#ifdef SUPPERGSM
if ( m_pSendThread )
{
m_pSendThread->Com_Exit();
m_pSendThread->PostThreadMessage( WM_QUIT , 0 , 0 );
m_pSendThread = NULL;
}
#endif
if ( m_pMenuType )
delete m_pMenuType;
CDialog::OnDestroy();
}
void CFSmsJS::RecvNewSms(ANS_RecvData2 sms,BOOL bShowTip)
{
try
{
TCHAR szName[64]={0};
TCHAR szName2[64]={0};
CString NickName;
CString Sex;
COleDateTime Birthday;
CString Ltd;
CString Job;
CString Tel;
CString Fax;
CString Email;
CString QQ;
CString BZ;
#ifdef MOBSET_OEM_BYSZY
TCHAR szGroupID[32]={0};
TCHAR szLocal[128]={0};
#endif
CString strSelect;
BOOL bGetAddress=false;
//½ÓÊÕµ½ÐµĶÌÐÅ£¬ÏȲéѯÆäÔڵ绰±¾ÀïµÄÐÕÃû
if ( !bGetAddress && m_pMainFrame->GetUserPurview( PURVIEW_PADDRESS,false ) ) //ÓÐ˽È˵绰±¾²é¿´È¨ÏÞ
{
#ifdef MOBSET_OEM_SNLD
strSelect.Format( _T("select * from paddress where Mobile like '%%%s' and (GroupID is null or len(GroupID)=0)") , sms.szSendNum ); //ÏÉÄÝÀ׵£¬½ö²éѯ¸ùĿ¼
#endif
strSelect.Format( _T("select * from paddress where Mobile like '%%%s'") , sms.szSendNum );
if ( m_AdoRS2.Open(strSelect) && m_AdoRS2.GetRecordCount() )
{
m_AdoRS2.GetCollect( _T("Name") , szName );
#ifdef MOBSET_OEM_SNLD
m_AdoRS2.GetCollect( _T("NickName") , NickName );
m_AdoRS2.GetCollect( _T("Sex") , Sex );
m_AdoRS2.GetCollect( _T("Birthday") , Birthday );
m_AdoRS2.GetCollect( _T("Ltd") , Ltd );
m_AdoRS2.GetCollect( _T("Job") , Job );
m_AdoRS2.GetCollect( _T("Tel") , Tel );
m_AdoRS2.GetCollect( _T("Fax") , Fax );
m_AdoRS2.GetCollect( _T("Email") , Email );
m_AdoRS2.GetCollect( _T("QQ") , QQ );
m_AdoRS2.GetCollect( _T("BZ") , BZ );
#endif
#ifdef MOBSET_OEM_BYSZY
m_AdoRS2.GetCollect( _T("GroupID") , szGroupID );
this->m_pMainFrame->m_pBaseView->m_dlgPAddress.GetLocal(szLocal,szGroupID);
#endif
bGetAddress = true;
}
}
if ( !bGetAddress && m_pMainFrame->GetUserPurview( PURVIEW_GADDRESS_SEE,false ) ) //Óй«Óõ绰±¾²é¿´È¨ÏÞ
{
strSelect.Format( _T("select * from gaddress where Mobile like '%%%s'") , sms.szSendNum );
if ( m_AdoRS2.Open(strSelect) && m_AdoRS2.GetRecordCount() )
{
m_AdoRS2.GetCollect( _T("Name") , szName );
#ifdef MOBSET_OEM_SNLD
m_AdoRS2.GetCollect( _T("NickName") , NickName );
m_AdoRS2.GetCollect( _T("Sex") , Sex );
m_AdoRS2.GetCollect( _T("Birthday") , Birthday );
//m_AdoRS2.GetCollect( _T("Ltd") , Ltd );
m_AdoRS2.GetCollect( _T("Job") , Job );
m_AdoRS2.GetCollect( _T("Tel") , Tel );
m_AdoRS2.GetCollect( _T("Fax") , Fax );
m_AdoRS2.GetCollect( _T("Email") , Email );
m_AdoRS2.GetCollect( _T("QQ") , QQ );
m_AdoRS2.GetCollect( _T("BZ") , BZ );
#endif
#ifdef MOBSET_OEM_BYSZY
m_AdoRS2.GetCollect( _T("GroupID") , szGroupID );
this->m_pMainFrame->m_pBaseView->m_dlgGAddress2.GetLocal(szLocal,szGroupID);
#endif
}
}
#ifdef YQ_VER
#ifndef YQ_VER_JL
strSelect.Format( _T("select * from kaddress where Mobile like '%%%s'") , sms.szSendNum );
if ( !bGetAddress && m_AdoRS2.Open(strSelect) && m_AdoRS2.GetRecordCount() )
{
m_AdoRS2.GetCollect( _T("Name") , szName );
}
#endif
#endif
//²éÕҺŶιéÊô
CString str;
CString strProvince=_T("δ֪¹éÊôµØ");
CString strCity=_T("");
strProvince = sms.szProv;
strCity = sms.szCity;
#ifdef SUPPER_IM_MAS
_tcscpy( szName2 , sms.szSendNum );
szName2[7]=0;
str.Format( _T("select * from HDB where Head='%s'"),szName2);
if ( m_HDAdoRS.Open(str) && m_HDAdoRS.GetRecordCount()>0 )
{
m_HDAdoRS.MoveFirst();
m_HDAdoRS.GetCollect( _T("Province") , strProvince );
m_HDAdoRS.GetCollect( _T("City") , strCity );
m_HDAdoRS.Close();
}
#endif
long lRecvID=0;
BOOL b = m_AdoRS.Open( _T("smsrecv") , adCmdTable ); //´ò¿ªÊý¾Ý¿â£¬×¼±¸Ìí¼Ó
if ( b )
{
m_AdoRS.AddNew();
m_AdoRS.PutCollect(_T("SendNum") ,sms.szSendNum);
m_AdoRS.PutCollect(_T("Sender") ,szName);
m_AdoRS.PutCollect(_T("RecvNum") ,sms.szRecvNum);
m_AdoRS.PutCollect(_T("Msg") ,sms.szMsg);
m_AdoRS.PutCollect(_T("RecvTime") ,sms.tRecv );
//#ifdef YQ_VER
m_AdoRS.PutCollect(_T("Province") ,strProvince );
m_AdoRS.PutCollect(_T("City") ,strCity);
//#endif
#ifdef MOBSET_OEM_SNLD
m_AdoRS.PutCollect( _T("NickName") , NickName );
m_AdoRS.PutCollect( _T("Sex") , Sex );
m_AdoRS.PutCollect( _T("Birthday") , Birthday );
m_AdoRS.PutCollect( _T("Ltd") , Ltd );
m_AdoRS.PutCollect( _T("Job") , Job );
m_AdoRS.PutCollect( _T("Tel") , Tel );
m_AdoRS.PutCollect( _T("Fax") , Fax );
m_AdoRS.PutCollect( _T("Email") , Email );
m_AdoRS.PutCollect( _T("QQ") , QQ );
m_AdoRS.PutCollect( _T("BZ") , BZ );
#endif
#ifdef MOBSET_OEM_BYSZY
m_AdoRS.PutCollect( _T("LocalGroup") , szLocal );
#endif
m_AdoRS.Update();
m_AdoRS.GetCollect( _T("RecvID") , lRecvID );
m_AdoRS.Close();
}
//ÏÔʾÐÂÊÕµ½µÄ¶ÌÐÅ
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,100;½ÓÊÕºÅÂë,80; ¶ÌÐÅÄÚÈÝ,280;ÊÕÐÅʱ¼ä,120;"));
long lCount = m_wndList.GetItemCount();
TCHAR szBuf[32]={0};
m_wndList.InsertItem( 0, _itot( lCount+1,szBuf,10) , 0 );
m_wndList.SetItemData(0,lRecvID );
CString strRecvName;
#ifdef MOBSET_OEM_SNLD
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,120;·¢ËÍÈË,80;½ÓÊÕºÅÂë,120; ¶ÌÐÅÄÚÈÝ,200;ÊÕÐÅʱ¼ä,130;êdzÆ,80;ÐÔ±ð,50; ¹«Ë¾,80;Ö°Îñ,80;µç»°,80;´«Õæ,80;Email,80;QQ,80;±¸×¢,80;"));
m_wndList.SetItemText(0,1,sms.szSendNum);
m_wndList.SetItemText(0,2,szName);
m_wndList.SetItemText(0,3,sms.szRecvNum);
m_wndList.SetItemText(0,4,sms.szMsg);
COleDateTime tRecv(sms.tRecv);
if ( tRecv.GetStatus() == COleDateTime::valid )
{
_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d") , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
m_wndList.SetItemText(0,5,szBuf);
}
m_wndList.SetItemText(0,6,NickName);
m_wndList.SetItemText(0,7,Sex);
if ( Birthday.GetStatus() == COleDateTime::valid )
{
_stprintf( szBuf , _T("%04d.%02d.%02d") , Birthday.GetYear(),Birthday.GetMonth(),Birthday.GetDay() );
m_wndList.SetItemText(0,8,szBuf);
}
m_wndList.SetItemText(0,9,Ltd);
m_wndList.SetItemText(0,10,Job);
m_wndList.SetItemText(0,11,Tel);
m_wndList.SetItemText(0,12,Fax);
m_wndList.SetItemText(0,13,Email);
m_wndList.SetItemText(0,14,QQ);
m_wndList.SetItemText(0,15,BZ);
#else
m_wndList.SetItemText(0,1,sms.szSendNum);
m_wndList.SetItemText(0,2,szName);
m_wndList.SetItemText(0,3,sms.szRecvNum);
m_wndList.SetItemText(0,4,sms.szMsg);
COleDateTime tRecv(sms.tRecv);
if ( tRecv.GetStatus() == COleDateTime::valid )
{
_stprintf( szBuf , _T("%04d.%02d.%02d %02d:%02d") , tRecv.GetYear(),tRecv.GetMonth(),tRecv.GetDay(),tRecv.GetHour(),tRecv.GetMinute() );
m_wndList.SetItemText(0,5,szBuf);
}
if ( strCity.GetLength()>0 )
strProvince = strProvince+"-"+strCity;
#ifdef YQ_VER
m_wndList.SetItemText(0,7,strProvince);
#else
m_wndList.SetItemText(0,6,strProvince);
#endif
#ifdef MOBSET_OEM_BYSZY
m_wndList.SetItemText(0,7,szLocal);
#endif
#endif
//if ( i== 0 ) //ÌáʾµÚÒ»ÌõÊÕµ½µÄ¶ÌÐÅ
if ( bShowTip && !m_pMainFrame->m_Setup.bSmsNoTip)
{
//Ìáʾ´°¿Ú£¬ÏÔʾÐÂÊÕµ½¶ÌÐÅÏ¢
SMS_Recv2 sms2={0};
_tcscpy( sms2.szMsg , sms.szMsg );
_tcscpy( sms2.szSender , strRecvName );
_tcscpy( sms2.szTime , szBuf );
DLG_RecvSms * dlg = new DLG_RecvSms;
dlg->Create(IDD_RECVSMS , this);
dlg->SetPara( &sms2 );
dlg->ShowWindow( SW_SHOW);
this->SetFocus();
}
FlashIcon(false,true); //ÉÁ¶¯Í¼±ê
//·¢³öÉùÒô
if ( m_pMainFrame->m_Setup.bSound )
{
TCHAR szFileName[512]={0};
m_pMainFrame->GetCurrentPath(szFileName);
_tcscat(szFileName , _T("Nokia.wav") );
PlaySound(szFileName,NULL,SND_FILENAME|SND_NODEFAULT|SND_ASYNC);
}
//·¢ËÍ×Ô¶¯»Ø¸´
if ( m_Setup.bAutoRe && _tcslen(m_Setup.szAutoRe)>0 )
{
//ÏÈÅжÏÊÇ·ñΪÉèÖõĹ̶¨ÄÚÈÝ
CString strAutoRecv = m_Setup.szAutoRecv;
if ( strAutoRecv.GetLength() > 0 )
{
if ( m_Setup.szAutoRecv[0] != '*' )
{
CString strRecvMsg = CString(sms.szMsg).Left(strAutoRecv.GetLength());
if ( strAutoRecv.CompareNoCase(strRecvMsg) != 0 )
return ;
}
}
if ( m_Setup.bAutoExRe ) //ÅųýÖØ¸´
{
strSelect.Format( _T("select * from smsrecv where SendNum='%s'"),sms.szSendNum );
if ( m_AdoRS.Open(strSelect) && m_AdoRS.GetRecordCount()> 1 )
return ;
}
//×Ô¶¯¼Ç¼
if ( m_Setup.bAutoRecord && _tcslen(m_Setup.szGroup)>0 )
{
strSelect.Format( _T("select * from paddress where Name='%s' and UserType='0'") , m_Setup.szGroup );
if ( m_AdoRS.Open(strSelect) && m_AdoRS.GetRecordCount()> 0 )
{
TCHAR szGroupID[32]={0};
m_AdoRS.MoveFirst();
m_AdoRS.GetCollect(_T("GroupID") , szGroupID );
m_AdoRS.Close();
BOOL b = m_AdoRS.Open( _T("paddress") , adCmdTable );
if ( b )
{
m_AdoRS.AddNew();
m_AdoRS.PutCollect(_T("UserType") ,_T("1"));
m_AdoRS.PutCollect(_T("GroupID") ,szGroupID);
m_AdoRS.PutCollect(_T("Name") ,_T("×Ô¶¯µÇ¼Ç") );
m_AdoRS.PutCollect(_T("Mobile") ,sms.szSendNum );
m_AdoRS.PutCollect(_T("BZ") ,sms.szMsg);
#ifdef MOBSET_TJJ
m_AdoRS.PutCollect(_T("NickName") ,strProvince );
#endif
m_AdoRS.Update();
}
m_AdoRS.Close();
}
}
#ifdef SUPPER_IM_MAS
if ( this->m_pMainFrame->m_pFuncView->m_DLGSend.Mas_OK() && !_tcscmp(sms.szRecvNum,_T("Mas")) ) //MAS¶ÌÐÅ
{
CStringA strMobile=CW2A(sms.szSendNum);
CStringA strMsg=CW2A(m_Setup.szAutoRe);
CStringA strSendTime;
long lSmID=0; //ÈÕ+ʱ+·Ö+ÐòºÅ
long lSrcID=0;
int iRet = (*this->m_pMainFrame->m_pFuncView->m_DLGSend.m_Mas_sendSMAdvTime)(strMobile, strMsg,strSendTime, lSmID,lSrcID);
}
else
#endif
{
//ÒÔÏÂΪ·¢ËͶÌÐŶø±¸
//ÏÈÉú³ÉÁÙʱ´æÖü¿Õ¼ä
ANS_SendData2 * pTemp = new ANS_SendData2[5];
memset( pTemp , 0 , sizeof(ANS_SendData2)*5 );
long lSendCount=0;
TCHAR szSendMsg[512]={0};
TCHAR szSendMsg2[512]={0};
//·Ö¸ôÐÅÏ¢
long lMaxMsgLen = m_pMainFrame->GetMaxSendMsgLen(); //È¡ÔÊÐíµÄ×î´ó×Ö·ûÊý
CString strCM;
BOOL bCMFirst = m_pMainFrame->GetQJCM(strCM);
long lMsgAll=0;
long lMsgIndex = 1;
BOOL bGetMsg;
_tcscpy( szSendMsg , m_Setup.szAutoRe ); //·¢ËÍÔ´ÐÅÏ¢
while ( true )
{
memset( szSendMsg2 , 0 , sizeof(szSendMsg2) );
if (!_tcsncmp(sms.szSendNum, _T("12"), 2) ||
!_tcsncmp( sms.szSendNum , _T("13") , 2 ) ||
!_tcsncmp( sms.szSendNum , _T("15") , 2 ) ||
!_tcsncmp( sms.szSendNum , _T("14") , 2 ) ||
!_tcsncmp( sms.szSendNum , _T("16") , 2 ) ||
!_tcsncmp( sms.szSendNum , _T("17") , 2 ) ||
!_tcsncmp( sms.szSendNum , _T("18") , 2 ) ||
!_tcsncmp( sms.szSendNum , _T("19") , 2 ))
{
//ÊÖ»úºÅÂë¿ÉÒÔÖ§³Ö70¸öºº×Ö
//if ( isChinese( m_szSendMsg,_tcslen(szSendMsg) ) )
//{
bGetMsg = GetSpiltUnicodeMsg( szSendMsg , szSendMsg2 , lMsgIndex , lMaxMsgLen ,lMsgAll);
//}
//else
//{
// bGetMsg = GetSpiltAsciiMsg( szSendMsg , szSendMsg2 , lMsgIndex , lMaxMsgLen*2+lMaxMsgLen*2/7 ,lMsgAll);
//}
}
else
{
//СÁéͨÊÖ»úºÅÂë¿ÉÒÔÖ§³Ö58¸öºº×Ö
//if ( isChinese( m_szSendMsg,_tcslen(szSendMsg) ) )
//{
bGetMsg = GetSpiltUnicodeMsg( szSendMsg , szSendMsg2 , lMsgIndex , lMaxMsgLen-12 ,lMsgAll);
//}
//else
//{
// bGetMsg = GetSpiltAsciiMsg( szSendMsg , szSendMsg2 , lMsgIndex , MOBILE_TYPE_PHS_MAXLEN ,lMsgAll);
//}
}
if ( bGetMsg ) //ÄÜÈ¡µ½ÐÅÏ¢£¬·¢ËÍ
{
pTemp[lSendCount].lCorpID = m_pMainFrame->m_lCorpID;
pTemp[lSendCount].lUserID = m_pMainFrame->m_lUserID;
pTemp[lSendCount].lItem = 0;
pTemp[lSendCount].lItemID = 0; //ItemID;
if ( bCMFirst )
_stprintf( pTemp[lSendCount].szMsg ,_T("%s%s") , strCM,szSendMsg2);
else
_stprintf( pTemp[lSendCount].szMsg ,_T("%s%s") , szSendMsg2,strCM);
_tcscpy( pTemp[lSendCount].szName , _T("") );
_tcscpy( pTemp[lSendCount].szMobile , sms.szSendNum);
lSendCount ++; //¼Ç¼ºÅ¼Ó1
lMsgIndex ++; //·Ö¸ô¼Ó1
}
else
{
break;
}
}
//·¢ËÍÐÅÏ¢
if ( lSendCount > 0 )
{
//·¢³öÖ¸Á·¢ËÍ
long lSize = sizeof(REQ_Send2)+sizeof(ANS_SendData2)*lSendCount;
BYTE * pData = new BYTE[lSize];
REQ_Send2 * pSendSend = (REQ_Send2 *)pData;
ANS_SendData2 * pDataSend = (ANS_SendData2 *)(pData + sizeof(REQ_Send2));
pSendSend->lCount = lSendCount;
//ÄÚÈÝ
memcpy( pDataSend , pTemp , sizeof(ANS_SendData2)*lSendCount );
m_pMainFrame->SendFrame( SMSFUNC_SEND2 , pData , lSize );
}
delete pTemp; //ɾ³ýÁÙʱ±äÁ¿
}
}
}
catch(...)
{
return ;
}
}
void CFSmsJS::ConnectMobile()
{
#ifdef SUPPERGSM
//Á¬½ÓÊÖ»úÌØÊâÉèÖÃ
m_Setup = m_pMainFrame->m_Setup;
m_pSendThread = new CSendThread;
m_pSendThread->CreateThread();
SMS_Init * pSms = new SMS_Init;
if (m_Setup.lPort == 0)
pSms->lConnectType = CONNECT_IRDA;
else
pSms->lConnectType = CONNECT_CABLE;
pSms->lIndex = 0;
pSms->lMobType = m_Setup.lMobileType;
pSms->lPort = m_Setup.lPort;
pSms->lBuadrate = m_Setup.lBaudrate;
pSms->lTimeOut = COM_TIMOUT;
pSms->pWnd = (CWnd *)this;
m_pSendThread->PostThreadMessage( TH_INIT , (WPARAM)pSms , 0 );
m_pMainFrame->SetStatMsg( _T("ÕýÔÚ¼ì²âÊÖ»ú...") );
#endif
}
void CFSmsJS::OnOK()
{
//CDialog::OnOK();
}
void CFSmsJS::OnCancel()
{
//CDialog::OnCancel();
}
void CFSmsJS::On_User_Type(long lIndex)
{
#ifndef YQ_VER
return ;
#endif
long lItem = this->GetCurrentSelected();
if ( lItem <0 )
return ;
long lID = m_wndList.GetItemData(lItem);
CString strSelect;
strSelect.Format( _T("select * from smsrecv where RecvID=%d") , lID );
if ( m_AdoRS.Open( strSelect ) && m_AdoRS.GetRecordCount() )
{
m_AdoRS.MoveFirst();
m_AdoRS.PutCollect( _T("Type1") , m_pMenuType[lIndex].szType1 );
m_AdoRS.PutCollect( _T("Type2") , m_pMenuType[lIndex].szType2 );
m_AdoRS.Update();
m_AdoRS.Close();
CString str = m_pMenuType[lIndex].szType1;
if ( _tcslen(m_pMenuType[lIndex].szType2) >0 )
{
str += _T("-");
str += m_pMenuType[lIndex].szType2;
}
m_wndList.SetItemText( lItem , 6 , str );
}
}
BOOL CFSmsJS::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
if ( nID>= (UINT)(MENU_SMSJS_TYPESETUP+1) && nID<= (UINT)(MENU_SMSJS_TYPESETUP+1+m_lMenuTypeCount) )
{
long lCount = (long)(nID - (MENU_SMSJS_TYPESETUP+1));
On_User_Type(lCount);
}
return CDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
void CFSmsJS::SetToday(BOOL bToday)
{
if ( m_bShowToday != bToday )
{
m_bShowToday = bToday;
m_bRefresh = false;
}
}
void CFSmsJS::ReadSetup()
{
//Á¬½ÓÊÖ»úÌØÊâÉèÖÃ
m_Setup = m_pMainFrame->m_Setup;
}
BOOL CFSmsJS::FlashIcon(BOOL bCheck, BOOL bFlash)
{
if ( bCheck )
{
CString str;
str=_T("select count(*) as abc from smsRecv where Reader=0 "); //²éѯδ¶ÁµÄ¶ÌÐÅ
if ( m_AdoRS.Open(str) && m_AdoRS.GetRecordCount()>0 )
{
long lCount;
m_AdoRS.MoveFirst();
m_AdoRS.GetCollect( _T("abc") , lCount );
if ( lCount >0 )
bFlash = true;
else
bFlash = false;
}
else
{
bFlash = false;
}
m_AdoRS.Close();
}
if ( bFlash )
{
m_lIconCount = 1;
SetTimer(3 , 500 , NULL);
}
else
{
m_lIconCount = -1;
}
return bFlash;
}
BOOL CFSmsJS::ShowNoReaderMsg()
{
CString str;
SMS_See sms={0};
long lRecvID = 0;
COleDateTime t;
str=_T("select top 1 * from smsRecv where Reader=0 order by RecvTime"); //²éѯδ¶ÁµÄ¶ÌÐÅ
if ( m_AdoRS.Open(str) && m_AdoRS.GetRecordCount()>0 )
{
m_AdoRS.MoveFirst();
TCHAR szSender[32]={0};
TCHAR szSendNum[32]={0};
m_AdoRS.GetCollect( _T("RecvID") , lRecvID);
m_AdoRS.GetCollect( _T("SendNum") , szSendNum );
m_AdoRS.GetCollect( _T("Sender") , szSender );
m_AdoRS.GetCollect( _T("RecvNum") , sms.szRecver );
m_AdoRS.GetCollect( _T("Msg") , sms.szMsg );
m_AdoRS.GetCollect( _T("RecvTime"), t );t.GetAsSystemTime(sms.tRecv);
m_AdoRS.Close();
sms.tSend = sms.tRecv;
_tcscpy( sms.szStatus , _T("½Ó ÊÕ") );
if ( _tcslen(szSender)>0 )
_stprintf(sms.szSender , _T("%s-%s") , szSendNum,szSender );
else
_tcscpy(sms.szSender , szSendNum );
//״̬±äΪÒѶÁ
str.Format( _T("update smsrecv set Reader=1 where RecvID=%d") , lRecvID );
if ( m_AdoRS.Open( str ) && m_AdoRS.GetRecordCount() )
{
//²éÕÒ£¬¸Ä±äͼ±ê
long lCount = m_wndList.GetItemCount();
long lRecvID2 = 0;
for ( int i=0 ; i<lCount ; i++ )
{
lRecvID2 = m_wndList.GetItemData(i);
if ( lRecvID == lRecvID2 )
{
m_wndList.SetIconIndex( i , 1 ); //ÏÔʾÒѶÁͼ±ê
break;
}
}
}
sms.lType = SMS_SEE_TYPE_RECV;
DLG_SmsLogSee dlg(this);
dlg.SetParam(sms);
dlg.SetReadSms(true);
if ( dlg.DoModal() == 300 ) //°´ÁËÁ¢¼´»Ø¸´
{
if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //н¨Áбí
{
//Ìí¼ÓºÅÂë
//·ÖÅäÊý¾Ý
long lCount = 1;
long lSize = sizeof(Send_User)*lCount;
BYTE *pS = new BYTE[lSize];
memset( pS , 0 , lSize );
Send_User * pUser = (Send_User * )pS;
_tcscpy(pUser->szName , szSender );
_tcscpy(pUser->szMobile , szSendNum );
m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS);
delete pS;
}
}
//ÉÁ¶¯Í¼±ê
FlashIcon(true,false);
return true;
}
FlashIcon(false,false); //²»ÉÁ¶¯Í¼±êÁË¡£
return false;
}