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

1361 lines
35 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.

// FFaxJS.cpp : implementation file
//
#include "stdafx.h"
#include "CorpSms.h"
#include "FFaxJS.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFFaxJS dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_RecvSms.h"
#include "DLG_SmsLogSee.h"
//#include "DLG_FAXJS_Export.h"
#include "DLG_TypeSetup.h"
#ifdef SUPPERGSM
#include "..\public\SendThread\SendThread.h"
#endif
#include "DLG_Find_RecvSms.h"
CFFaxJS::CFFaxJS(CWnd* pParent /*=NULL*/)
: CDialog(CFFaxJS::IDD, pParent)
{
//{{AFX_DATA_INIT(CFFaxJS)
// 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 CFFaxJS::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFFaxJS)
DDX_Control(pDX, IDC_FAXJS_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFFaxJS, CDialog)
//{{AFX_MSG_MAP(CFFaxJS)
ON_WM_SIZE()
ON_NOTIFY(LVN_KEYDOWN, IDC_FAXJS_LIST, OnKeydownSmsjsList)
ON_NOTIFY(NM_RCLICK, IDC_FAXJS_LIST, OnRclickSmsjsList)
ON_NOTIFY(NM_DBLCLK, IDC_FAXJS_LIST, OnDblclkSmsjsList)
ON_WM_TIMER()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
ON_COMMAND( MENU_FAXJS_DEL , On_User_Del )
ON_COMMAND( MENU_FAXJS_SEE , On_User_See )
ON_COMMAND( MENU_FAXJS_SEND , On_User_Send )
ON_COMMAND( MENU_FAXJS_ZF , On_User_ZF )
ON_COMMAND( MENU_FAXJS_EXPORT , On_User_Export )
ON_COMMAND( MENU_FAXJS_REFRESH , On_User_Refresh )
ON_COMMAND( MENU_FAXJS_FIND , On_User_Find )
ON_COMMAND( MENU_FAXJS_TYPESETUP , On_User_TypeSetup )
#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()
/////////////////////////////////////////////////////////////////////////////
// CFFaxJS message handlers
BOOL CFFaxJS::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_SMSDF) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSJS) );
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 CFFaxJS::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFFaxJS::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CFFaxJS::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 CFFaxJS::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
long CFFaxJS::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CFFaxJS::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 CFFaxJS::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 CFFaxJS::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_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_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 CFFaxJS::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 CFFaxJS::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 CFFaxJS::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 CFFaxJS::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 CFFaxJS::On_User_Export()
{
/*
DLG_FAXJS_Export dlg(this);
dlg.SetParam(&m_AdoRS2,&m_wndList);
dlg.DoModal();
*/
}
void CFFaxJS::On_User_Refresh()
{
RefreshInfo();
}
void CFFaxJS::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 CFFaxJS::On_User_TypeSetup()
{
DLG_TypeSetup dlg(this);
dlg.SetParam( &m_AdoRS2 );
dlg.DoModal();
}
void CFFaxJS::OnRclickSmsjsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CFFaxJS::OnDblclkSmsjsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_See();
}
void CFFaxJS::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_FAXJS_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_FAXJS_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_FAXJS_TYPESETUP , _T(" Àà±ðÉèÖà ") );
#endif
if ( lItem >= 0 )
{
menu.AppendMenu(MF_STRING , MENU_FAXJS_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING , MENU_FAXJS_SEND , _T(" »Ø ¸´ ") );
menu.AppendMenu(MF_STRING , MENU_FAXJS_ZF , _T(" ת ·¢ ") );
menu.AppendMenu(MF_STRING , MENU_FAXJS_DEL , _T(" ɾ ³ý ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_FAXJS_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_FAXJS_SEND, _T(" »Ø ¸´ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_FAXJS_ZF, _T(" ת ·¢ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_FAXJS_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_FAXJS_EXPORT, _T(" µ¼³ö... ") );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_FAXJS_FIND , _T(" ²éÕÒ... ") );
menu.AppendMenu(MF_SEPARATOR );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_FAXJS_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 CFFaxJS::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 CFFaxJS::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 CFFaxJS::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 CFFaxJS::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 CFFaxJS::On_TW_Send(WPARAM wParam , LPARAM lParam )
{
return 1;
}
long CFFaxJS::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 CFFaxJS::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 CFFaxJS::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 CFFaxJS::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 CFFaxJS::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 CFFaxJS::RecvNewSms(ANS_RecvData2 sms,BOOL bShowTip)
{
}
void CFFaxJS::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 CFFaxJS::OnOK()
{
//CDialog::OnOK();
}
void CFFaxJS::OnCancel()
{
//CDialog::OnCancel();
}
void CFFaxJS::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 CFFaxJS::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
if ( nID>= (UINT)(MENU_FAXJS_TYPESETUP+1) && nID<=(UINT)(MENU_FAXJS_TYPESETUP+1+m_lMenuTypeCount) )
{
long lCount = (long)(nID - (MENU_FAXJS_TYPESETUP+1));
On_User_Type(lCount);
}
return CDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
void CFFaxJS::SetToday(BOOL bToday)
{
if ( m_bShowToday != bToday )
{
m_bShowToday = bToday;
m_bRefresh = false;
}
}
void CFFaxJS::ReadSetup()
{
//Á¬½ÓÊÖ»úÌØÊâÉèÖÃ
m_Setup = m_pMainFrame->m_Setup;
}
BOOL CFFaxJS::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 CFFaxJS::ShowNoReaderMsg()
{
CString str;
SMS_See sms={0};
long lRecvID = 0;
COleDateTime t;
str="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;
}