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

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

// FMmsJS.cpp : implementation file
//
#include "stdafx.h"
#include "CorpSms.h"
#include "FMmsJS.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFMmsJS dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_RecvSms.h"
#include "DLG_SmsLogSee.h"
//#include "DLG_MMSJS_Export.h"
#include "DLG_TypeSetup.h"
#ifdef SUPPERGSM
#include "..\public\SendThread\SendThread.h"
#endif
#include "DLG_Find_RecvSms.h"
CFMmsJS::CFMmsJS(CWnd* pParent /*=NULL*/)
: CDialog(CFMmsJS::IDD, pParent)
{
//{{AFX_DATA_INIT(CFMmsJS)
// 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 CFMmsJS::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFMmsJS)
DDX_Control(pDX, IDC_MMSJS_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFMmsJS, CDialog)
//{{AFX_MSG_MAP(CFMmsJS)
ON_WM_SIZE()
ON_NOTIFY(LVN_KEYDOWN, IDC_MMSJS_LIST, OnKeydownSmsjsList)
ON_NOTIFY(NM_RCLICK, IDC_MMSJS_LIST, OnRclickSmsjsList)
ON_NOTIFY(NM_DBLCLK, IDC_MMSJS_LIST, OnDblclkSmsjsList)
ON_WM_TIMER()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
ON_COMMAND( MENU_MMSJS_DEL , On_User_Del )
ON_COMMAND( MENU_MMSJS_SEE , On_User_See )
ON_COMMAND( MENU_MMSJS_SEND , On_User_Send )
ON_COMMAND( MENU_MMSJS_ZF , On_User_ZF )
ON_COMMAND( MENU_MMSJS_EXPORT , On_User_Export )
ON_COMMAND( MENU_MMSJS_REFRESH , On_User_Refresh )
ON_COMMAND( MENU_MMSJS_FIND , On_User_Find )
ON_COMMAND( MENU_MMSJS_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()
/////////////////////////////////////////////////////////////////////////////
// CFMmsJS message handlers
BOOL CFMmsJS::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_MMS_UNREAD) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_MMS_READ) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,50; ·¢ËͺÅÂë,120;·¢ËÍÈË,100;½ÓÊÕºÅÂë,120;ÊÕÐÅʱ¼ä,130;ÊÖ»ú¹éÊôµØ,120;²ÊÐÅ´óС,100; ²ÊÐűêÌâ,200;"));
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 CFMmsJS::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFMmsJS::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CFMmsJS::RefreshInfo()
{
return true;
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 CFMmsJS::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
long CFMmsJS::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::On_User_Export()
{
/*
DLG_MMSJS_Export dlg(this);
dlg.SetParam(&m_AdoRS2,&m_wndList);
dlg.DoModal();
*/
}
void CFMmsJS::On_User_Refresh()
{
RefreshInfo();
}
void CFMmsJS::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 CFMmsJS::On_User_TypeSetup()
{
DLG_TypeSetup dlg(this);
dlg.SetParam( &m_AdoRS2 );
dlg.DoModal();
}
void CFMmsJS::OnRclickSmsjsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
return ;
ShowRMenu();
}
void CFMmsJS::OnDblclkSmsjsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
return ;
On_User_See();
}
void CFMmsJS::ShowRMenu()
{
return ;
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_MMSJS_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_MMSJS_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_MMSJS_TYPESETUP , _T(" Àà±ðÉèÖà ") );
#endif
if ( lItem >= 0 )
{
menu.AppendMenu(MF_STRING , MENU_MMSJS_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING , MENU_MMSJS_SEND , _T(" »Ø ¸´ ") );
menu.AppendMenu(MF_STRING , MENU_MMSJS_ZF , _T(" ת ·¢ ") );
menu.AppendMenu(MF_STRING , MENU_MMSJS_DEL , _T(" ɾ ³ý ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_MMSJS_SEE , _T(" ²é ¿´ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_MMSJS_SEND, _T(" »Ø ¸´ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_MMSJS_ZF, _T(" ת ·¢ ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_MMSJS_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_MMSJS_EXPORT, _T(" µ¼³ö... ") );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_MMSJS_FIND , _T(" ²éÕÒ... ") );
menu.AppendMenu(MF_SEPARATOR );
//Ë¢ÐÂ
menu.AppendMenu(MF_STRING , MENU_MMSJS_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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::On_TW_Send(WPARAM wParam , LPARAM lParam )
{
return 1;
}
long CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::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 CFMmsJS::RecvNewSms(ANS_RecvData2 sms,BOOL bShowTip)
{
}
void CFMmsJS::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 CFMmsJS::OnOK()
{
//CDialog::OnOK();
}
void CFMmsJS::OnCancel()
{
//CDialog::OnCancel();
}
void CFMmsJS::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 CFMmsJS::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
if ( nID>= (UINT)(MENU_MMSJS_TYPESETUP+1) && nID<= (UINT)(MENU_MMSJS_TYPESETUP+1+m_lMenuTypeCount) )
{
long lCount = (long)(nID - (MENU_MMSJS_TYPESETUP+1));
On_User_Type(lCount);
}
return CDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
void CFMmsJS::SetToday(BOOL bToday)
{
if ( m_bShowToday != bToday )
{
m_bShowToday = bToday;
m_bRefresh = false;
}
}
void CFMmsJS::ReadSetup()
{
//Á¬½ÓÊÖ»úÌØÊâÉèÖÃ
m_Setup = m_pMainFrame->m_Setup;
}
BOOL CFMmsJS::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 CFMmsJS::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;
}