4215 lines
117 KiB
C++
4215 lines
117 KiB
C++
// DLG_Send.cpp : implementation file
|
||
//
|
||
|
||
#include "stdafx.h"
|
||
#include "CorpSms.h"
|
||
#include "DLG_Send.h"
|
||
|
||
|
||
#ifdef _DEBUG
|
||
#define new DEBUG_NEW
|
||
#undef THIS_FILE
|
||
static char THIS_FILE[] = __FILE__;
|
||
#endif
|
||
|
||
#ifdef UNICODE
|
||
class CAdoSmsItem:public CADORecordBinding
|
||
{
|
||
BEGIN_ADO_BINDING(CAdoSmsItem)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(1,adInteger, m_ItemID ,sizeof(m_ItemID), l_ItemIDStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(2,adInteger, m_BoxID ,sizeof(m_BoxID), l_BoxIDStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(3,adVarWChar,m_GroupID ,sizeof(m_GroupID) , l_GroupIDStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(4,adVarWChar,m_Name ,sizeof(m_Name) , l_NameStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(5,adVarWChar, m_NickName ,sizeof(m_NickName) , l_NickNameStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(6,adVarWChar, m_Mobile ,sizeof(m_Mobile) , l_MobileStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(7,adVarWChar, m_BZ ,sizeof(m_BZ) , l_BZStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(8,adVarWChar, m_Status ,sizeof(m_Status) , l_StatusStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(9,adInteger, m_SendID ,sizeof(m_SendID), l_SendIDStatus,false)
|
||
|
||
END_ADO_BINDING()
|
||
public:
|
||
long m_ItemID;
|
||
ULONG l_ItemIDStatus;
|
||
long m_BoxID;
|
||
ULONG l_BoxIDStatus;
|
||
TCHAR m_GroupID[24];
|
||
ULONG l_GroupIDStatus;
|
||
TCHAR m_Name[24];
|
||
ULONG l_NameStatus;
|
||
TCHAR m_NickName[24];
|
||
ULONG l_NickNameStatus;
|
||
TCHAR m_Mobile[24];
|
||
ULONG l_MobileStatus;
|
||
#ifdef CHINABANK_VER
|
||
TCHAR m_BZ[1024];
|
||
#else
|
||
TCHAR m_BZ[184];
|
||
#endif
|
||
ULONG l_BZStatus;
|
||
TCHAR m_Status[4];
|
||
ULONG l_StatusStatus;
|
||
long m_SendID;
|
||
ULONG l_SendIDStatus;
|
||
|
||
CAdoSmsItem()
|
||
{
|
||
m_ItemID = 0;
|
||
m_BoxID = 0;
|
||
memset(m_GroupID,0,sizeof(m_GroupID));
|
||
memset(m_Name,0,sizeof(m_Name));
|
||
memset(m_NickName,0,sizeof(m_NickName));
|
||
memset(m_Mobile,0,sizeof(m_Mobile));
|
||
memset(m_BZ,0,sizeof(m_BZ));
|
||
memset(m_Status,0,sizeof(m_Status));
|
||
m_SendID = 0;
|
||
}
|
||
|
||
};
|
||
#else
|
||
class CAdoSmsItem:public CADORecordBinding
|
||
{
|
||
BEGIN_ADO_BINDING(CAdoSmsItem)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(1,adInteger, m_ItemID ,sizeof(m_ItemID), l_ItemIDStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(2,adInteger, m_BoxID ,sizeof(m_BoxID), l_BoxIDStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(3,adVarChar,m_GroupID ,sizeof(m_GroupID) , l_GroupIDStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(4,adVarChar,m_Name ,sizeof(m_Name) , l_NameStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(5,adVarChar, m_NickName ,sizeof(m_NickName) , l_NickNameStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(6,adVarChar, m_Mobile ,sizeof(m_Mobile) , l_MobileStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(7,adVarChar, m_BZ ,sizeof(m_BZ) , l_BZStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(8,adVarChar, m_Status ,sizeof(m_Status) , l_StatusStatus,false)
|
||
ADO_VARIABLE_LENGTH_ENTRY2(9,adInteger, m_SendID ,sizeof(m_SendID), l_SendIDStatus,false)
|
||
|
||
END_ADO_BINDING()
|
||
public:
|
||
long m_ItemID;
|
||
ULONG l_ItemIDStatus;
|
||
long m_BoxID;
|
||
ULONG l_BoxIDStatus;
|
||
char m_GroupID[24];
|
||
ULONG l_GroupIDStatus;
|
||
char m_Name[24];
|
||
ULONG l_NameStatus;
|
||
char m_NickName[24];
|
||
ULONG l_NickNameStatus;
|
||
char m_Mobile[24];
|
||
ULONG l_MobileStatus;
|
||
char m_BZ[184];
|
||
ULONG l_BZStatus;
|
||
char m_Status[4];
|
||
ULONG l_StatusStatus;
|
||
long m_SendID;
|
||
ULONG l_SendIDStatus;
|
||
|
||
CAdoSmsItem()
|
||
{
|
||
m_ItemID = 0;
|
||
m_BoxID = 0;
|
||
memset(m_GroupID,0,sizeof(m_GroupID));
|
||
memset(m_Name,0,sizeof(m_Name));
|
||
memset(m_NickName,0,sizeof(m_NickName));
|
||
memset(m_Mobile,0,sizeof(m_Mobile));
|
||
memset(m_BZ,0,sizeof(m_BZ));
|
||
memset(m_Status,0,sizeof(m_Status));
|
||
m_SendID = 0;
|
||
}
|
||
|
||
};
|
||
#endif
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// DLG_Send dialog
|
||
#include "MainFrm.h"
|
||
#include "ProcessSocket.h"
|
||
#include "DLG_Send_User.h"
|
||
#include "DLG_Send_Inport.h"
|
||
#include "DLG_FiltWarning.h"
|
||
#include "DLG_SmsDY.h"
|
||
#include "DLG_AddWarning.h"
|
||
#include "DLG_Setup_SZGJ_GetMsg.h"
|
||
#include "DLG_User_InportP2.h"
|
||
#include "DLG_User_Inport_LT.h"
|
||
#include "DLG_AddBack.h"
|
||
#include "..\public\AutoBuffer\AutoBuffer.h"
|
||
|
||
DLG_Send::DLG_Send(CWnd* pParent /*=NULL*/)
|
||
: CDialog(DLG_Send::IDD, pParent)
|
||
{
|
||
//{{AFX_DATA_INIT(DLG_Send)
|
||
//}}AFX_DATA_INIT
|
||
|
||
m_pMainFrame = NULL;
|
||
memset( &m_OldRect , 0 , sizeof(m_OldRect) );
|
||
m_bInit = false;
|
||
m_bModify = false;
|
||
m_lBoxID = 0;
|
||
m_lBoxType = 0;
|
||
|
||
memset( m_szMsg , 0 , sizeof(m_szMsg) );
|
||
memset( m_szMsgEndFilt , 0 , sizeof(m_szMsgEndFilt));
|
||
memset( m_szSendMsg , 0 , sizeof(m_szSendMsg) );
|
||
m_bSend = false;
|
||
m_lSendIndex = 0;
|
||
|
||
m_bShowReMobile = true;
|
||
m_lReMobileType = 0;
|
||
|
||
m_bBackReMobile = true;
|
||
m_lBackReMobileType = 0;
|
||
|
||
m_bSendSR = false;
|
||
|
||
m_dwSendStartTime = 0;
|
||
|
||
m_dwBackCount=0; //黑名单数量
|
||
m_dwNoSupCount=0; //不支持号码数量
|
||
m_dwNoMsgCount=0; //没内容数量
|
||
|
||
m_bSaveList = false;
|
||
m_lPage = 0;
|
||
|
||
m_lInterval = 0;
|
||
m_bNoSupperWord = false;
|
||
|
||
m_bOneToOne = false;
|
||
m_lSendRand = 0; //发送的随机数
|
||
m_pMobileMsg = NULL; //手机号码的分段
|
||
m_pSendData = NULL;
|
||
|
||
#ifdef SUPPER_IM_MAS
|
||
m_Mas_Init = false;
|
||
m_Mas_Lib = NULL;
|
||
m_Mas_initWithDB = NULL;
|
||
m_Mas_release = NULL;
|
||
m_Mas_sendSMAdvTime = NULL;
|
||
m_Mas_receiveSM = NULL;
|
||
m_Mas_receiveRPT = NULL;
|
||
m_Mas_MasEnd = false;
|
||
m_Mas_MobsetEnd = false;
|
||
m_Mas_SendOK = 0;
|
||
m_lMasAllSendCount = 0;
|
||
#endif
|
||
}
|
||
|
||
|
||
void DLG_Send::DoDataExchange(CDataExchange* pDX)
|
||
{
|
||
CDialog::DoDataExchange(pDX);
|
||
//{{AFX_DATA_MAP(DLG_Send)
|
||
DDX_Control(pDX, IDC_SEND_TASK, m_B_Task);
|
||
DDX_Control(pDX, IDC_SEND_lInterval, m_L_lInterval);
|
||
DDX_Control(pDX, IDC_SEND_FD, m_B_FD);
|
||
DDX_Control(pDX, IDC_SEND_NEW2, m_B_New2);
|
||
DDX_Control(pDX, IDC_SEND_LONGSMS, m_B_LongSms);
|
||
DDX_Control(pDX, IDC_SEND_PCOUNT2, m_S_PCount2);
|
||
DDX_Control(pDX, IDC_SEND_SAVESENDLOG, m_B_SaveSendLog);
|
||
DDX_Control(pDX, IDC_SEND_CM_S, m_S_CM2);
|
||
DDX_Control(pDX, IDC_SEND_CM, m_S_CM);
|
||
DDX_Control(pDX, IDC_SEND_GETMSG, m_B_GetMsg);
|
||
DDX_Control(pDX, IDC_SEND_REMOBILE, m_B_ReMobile);
|
||
DDX_Control(pDX, IDC_SEND_DY, m_B_DY);
|
||
DDX_Control(pDX, IDC_SEND_NEW, m_B_New);
|
||
DDX_Control(pDX, IDC_SEND_NUMADD, m_B_Add);
|
||
DDX_Control(pDX, IDC_SEND_NUM, m_E_Num);
|
||
DDX_Control(pDX, IDC_SEND_DS_T, m_D_Time);
|
||
DDX_Control(pDX, IDC_SEND_DS_D, m_D_Date);
|
||
DDX_Control(pDX, IDC_SEND_YL, m_B_YL);
|
||
DDX_Control(pDX, IDC_SEND_WCOUNT, m_S_WCount);
|
||
DDX_Control(pDX, IDC_SEND_STATE, m_B_Status);
|
||
DDX_Control(pDX, IDC_SEND_START, m_B_Start);
|
||
DDX_Control(pDX, IDC_SEND_SAVE, m_B_Save);
|
||
DDX_Control(pDX, IDC_SEND_S1, m_S_S1);
|
||
DDX_Control(pDX, IDC_SEND_REPORT, m_B_Report);
|
||
DDX_Control(pDX, IDC_SEND_PCOUNT, m_S_PCount);
|
||
DDX_Control(pDX, IDC_SEND_NULL, m_B_Null);
|
||
DDX_Control(pDX, IDC_SEND_MSG_LIST, m_S_MsgList);
|
||
DDX_Control(pDX, IDC_SEND_MSG, m_E_Msg);
|
||
DDX_Control(pDX, IDC_SEND_LIST_COUNT, m_S_ListCount);
|
||
DDX_Control(pDX, IDC_SEND_LIST, m_wndList);
|
||
DDX_Control(pDX, IDC_SEND_INMEMO, m_B_Memo);
|
||
DDX_Control(pDX, IDC_SEND_INICENAME, m_B_NickName);
|
||
DDX_Control(pDX, IDC_SEND_INAME, m_B_Name);
|
||
DDX_Control(pDX, IDC_SEND_IFALSH, m_B_Flash);
|
||
DDX_Control(pDX, IDC_SEND_HANDFREE, m_B_HandFree);
|
||
DDX_Control(pDX, IDC_SEND_DS, m_B_DS);
|
||
//}}AFX_DATA_MAP
|
||
}
|
||
|
||
|
||
BEGIN_MESSAGE_MAP(DLG_Send, CDialog)
|
||
//{{AFX_MSG_MAP(DLG_Send)
|
||
ON_WM_SIZE()
|
||
ON_WM_CLOSE()
|
||
ON_EN_CHANGE(IDC_SEND_MSG, OnChangeSendMsg)
|
||
ON_BN_CLICKED(IDC_SEND_DS, OnSendDs)
|
||
ON_BN_CLICKED(IDC_SEND_SAVE, OnSendSave)
|
||
ON_NOTIFY(NM_RCLICK, IDC_SEND_LIST, OnRclickSendList)
|
||
ON_BN_CLICKED(IDC_SEND_NUMADD, OnSendNumadd)
|
||
ON_NOTIFY(NM_DBLCLK, IDC_SEND_LIST, OnDblclkSendList)
|
||
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_SEND_DS_D, OnDatetimechangeSendDsD)
|
||
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_SEND_DS_T, OnDatetimechangeSendDsT)
|
||
ON_BN_CLICKED(IDC_SEND_NEW, OnSendNew)
|
||
ON_BN_CLICKED(IDC_SEND_INAME, OnSendIname)
|
||
ON_BN_CLICKED(IDC_SEND_INICENAME, OnSendInicename)
|
||
ON_BN_CLICKED(IDC_SEND_INMEMO, OnSendInmemo)
|
||
ON_BN_CLICKED(IDC_SEND_IFALSH, OnSendIfalsh)
|
||
ON_BN_CLICKED(IDC_SEND_YL, OnSendYl)
|
||
ON_WM_CREATE()
|
||
ON_BN_CLICKED(IDC_SEND_START, OnSendStart)
|
||
ON_WM_TIMER()
|
||
ON_NOTIFY(LVN_KEYDOWN, IDC_SEND_LIST, OnKeydownSendList)
|
||
ON_BN_CLICKED(IDC_SEND_DY, OnSendDy)
|
||
ON_BN_CLICKED(IDC_SEND_GETMSG, OnSendGetmsg)
|
||
ON_WM_DESTROY()
|
||
ON_BN_CLICKED(IDC_SEND_LONGSMS, OnSendLongsms)
|
||
ON_BN_CLICKED(IDC_SEND_NEW2, OnSendNew2)
|
||
ON_BN_CLICKED(IDC_SEND_FD, OnSendFd)
|
||
ON_BN_CLICKED(IDC_SEND_TASK, OnSendTask)
|
||
//}}AFX_MSG_MAP
|
||
ON_MESSAGE(DROPM_DROP,OnDrop)
|
||
|
||
ON_COMMAND( SEND_USER_ADD , On_User_Add )
|
||
ON_COMMAND( SEND_USER_MODIFY , On_User_Modify )
|
||
ON_COMMAND( SEND_USER_DEL , On_User_Del )
|
||
ON_COMMAND( SEND_USER_CLEAR , On_User_Clear )
|
||
ON_COMMAND( SEND_USER_INPORT , On_User_Inport )
|
||
ON_COMMAND( SEND_USER_EXPORT , On_User_Export )
|
||
ON_COMMAND( SEND_USER_STATUS , On_User_Status )
|
||
ON_COMMAND( SEND_USER_INPORT_LT , On_User_Inport_LT )
|
||
ON_COMMAND( SEND_USER_INPORT_MASSDKDGWL_FP , On_User_Inport_MasSDK_DGWL_FP )
|
||
ON_COMMAND( SEND_USER_INPORT_MASSDKDGWL_SP , On_User_Inport_MasSDK_DGWL_SP )
|
||
ON_COMMAND( SEND_USER_INPORT_MASSDKDGWL_KF , On_User_Inport_MasSDK_DGWL_KF )
|
||
ON_COMMAND( SEND_USER_INPORT_MASSDKDGWL_ZC , On_User_Inport_MasSDK_DGWL_ZC )
|
||
ON_COMMAND( SEND_USER_PASTE , OnSendNumPaste )
|
||
// ON_WM_KEYUP()
|
||
//ON_WM_HOTKEY()
|
||
ON_BN_CLICKED(IDC_SEND_REMOBILE, &DLG_Send::OnClickedSendRemobile)
|
||
END_MESSAGE_MAP()
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
// DLG_Send message handlers
|
||
|
||
BOOL DLG_Send::OnInitDialog()
|
||
{
|
||
CDialog::OnInitDialog();
|
||
|
||
this->SetIcon( AfxGetApp()->LoadIcon(IDI_L_SMSDF),false);
|
||
|
||
m_D_Date.EnableWindow(false);
|
||
m_D_Time.EnableWindow(false);
|
||
|
||
m_B_ReMobile.SetCheck(true); //默认检测重复
|
||
m_B_SaveSendLog.SetCheck(true); //默认写到日志
|
||
|
||
m_B_LongSms.SetCheck(true); //默认以长短信方式发送
|
||
m_B_FD.SetCheck(false); //如果强制了使用长短信,则不能使用分段了
|
||
|
||
|
||
InitItem();
|
||
m_E_Msg.SetFocus();
|
||
if ( !m_pMainFrame->GetUserPurview( PURVIEW_SENDP , false ) )
|
||
{
|
||
m_E_Num.EnableWindow( false ); //没有发送私人电话本的权限
|
||
m_B_Add.EnableWindow( false );
|
||
}
|
||
if ( m_pMainFrame->m_Ans_Login.bCM ) //启用签名
|
||
{
|
||
//this->AddLoveToMsg( _T("\r\n") );
|
||
this->AddLoveToMsg( m_pMainFrame->m_Ans_Login.szCM );
|
||
}
|
||
|
||
CString strCM;
|
||
m_pMainFrame->GetQJCM(strCM);
|
||
if ( strCM.GetLength()>0 )
|
||
{
|
||
strCM = strCM;
|
||
m_S_CM.SetWindowText( strCM );
|
||
m_S_CM.SetTextColor(RGB(128,128,128));
|
||
}
|
||
|
||
m_L_lInterval.SetCurSel(0);
|
||
m_bModify = false;
|
||
|
||
if ( !m_pMainFrame->GetUserPurview( PURVIEW_PL , false ) )
|
||
{
|
||
m_B_Task.EnableWindow(false);
|
||
}
|
||
|
||
#ifdef SMSCENTER_NX
|
||
GetDlgItem(IDC_SEND_FD)->ShowWindow(SW_HIDE);
|
||
#endif
|
||
return TRUE; // return TRUE unless you set the focus to a control
|
||
// EXCEPTION: OCX Property Pages should return FALSE
|
||
}
|
||
|
||
void DLG_Send::InitItem()
|
||
{
|
||
if ( m_bInit ) return ;
|
||
m_bInit = true;
|
||
//限制最大可发送的数据长度
|
||
#ifdef UNICODE
|
||
m_E_Msg.LimitText( MAX_MSG_LEN_UNI );
|
||
#else
|
||
m_E_Msg.LimitText( MAX_MSG_LEN );
|
||
#endif
|
||
#ifdef CHINABANK_VER
|
||
m_E_Msg.LimitText( MAX_MSG_LEN_UNI_BANK );
|
||
#endif
|
||
//创建图像列表
|
||
m_Image.Create( 20 , 20 , ILC_COLOR32|ILC_MASK , 5 , 1);
|
||
CBitmap bmp;
|
||
bmp.LoadBitmap( IDB_L_USER_NOR );
|
||
m_Image.Add( &bmp , RGB(193,193,193) ); //设置
|
||
bmp.DeleteObject();
|
||
bmp.LoadBitmap( IDB_L_USER_EXP );
|
||
m_Image.Add( &bmp , RGB(193,193,193) ); //设置
|
||
//加入图像列表
|
||
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
|
||
m_wndList.SetBkColor( RGB(237,238,188) );
|
||
m_wndList.SetTextBkColor( RGB(237,238,188) );
|
||
|
||
//m_wndList.SubClassWindow2();
|
||
//m_wndList.SetHeadings(_T(" 姓 名,80; 昵 称,80;手机号码,100; 状 态,70; 用户组,80; 备 注,150;"));
|
||
//m_wndList.SetGridLines(true);
|
||
|
||
//设置成热激活形式
|
||
//m_wndList.SetExtendedStyle(LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
|
||
m_wndList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
|
||
|
||
m_wndList.InsertColumn( 0 , _T(" 姓 名") , LVCFMT_LEFT , 100 , 0);
|
||
m_wndList.InsertColumn( 1 , _T(" 昵 称") , LVCFMT_LEFT , 80 , 1);
|
||
if ( this->m_pMainFrame->GetUserPurview_HideNum() )
|
||
{
|
||
m_wndList.InsertColumn( 2 , _T("手机号码") , LVCFMT_LEFT , 70 , 2); //隐藏号码
|
||
CHeaderCtrl* pHeaderCtrl = (CHeaderCtrl*)m_wndList.GetHeaderCtrl();
|
||
pHeaderCtrl->EnableWindow( FALSE ) ;
|
||
}
|
||
else
|
||
{
|
||
m_wndList.InsertColumn( 2 , _T("手机号码") , LVCFMT_LEFT , 100 , 2);
|
||
}
|
||
m_wndList.InsertColumn( 3 , _T(" 状 态") , LVCFMT_LEFT , 80, 3);
|
||
m_wndList.InsertColumn( 4 , _T(" 用户组") , LVCFMT_LEFT , 85 , 4);
|
||
m_wndList.InsertColumn( 5 , _T(" 备 注"), LVCFMT_LEFT , 150, 5);
|
||
|
||
|
||
//初始化图标按扭
|
||
CRect rect;
|
||
m_B_Start.GetWindowRect(&rect);
|
||
this->ScreenToClient(&rect);
|
||
int iHeight = rect.Height(); //按扭高度
|
||
int iWidth = iHeight; //按扭宽度,与高相同,原图像长宽:44*44
|
||
|
||
int iLeftBegin = rect.left;
|
||
m_B_Start.MoveWindow(iLeftBegin, rect.top , iWidth, iHeight, true );
|
||
m_B_Start.SetUnSelToolTip( _T("立即发送") );
|
||
m_B_Start.ActiveToolTip( true );
|
||
m_B_Start.SetUnSelBmp( IDB_B_START );
|
||
m_B_Start.SetFlat();
|
||
|
||
m_B_New2.MoveWindow(iLeftBegin+= iWidth, rect.top , iWidth, iHeight, true );
|
||
m_B_New2.SetUnSelToolTip( _T("重新发送本列表的手机号码") );
|
||
m_B_New2.ActiveToolTip( true );
|
||
m_B_New2.SetUnSelBmp( IDB_B_NEW2 );
|
||
m_B_New2.SetFlat();
|
||
|
||
m_B_New.MoveWindow(iLeftBegin += iWidth, rect.top , iWidth, iHeight, true );
|
||
m_B_New.SetUnSelToolTip( _T("新建发送列表") );
|
||
m_B_New.ActiveToolTip( true );
|
||
m_B_New.SetUnSelBmp( IDB_B_NEW );
|
||
m_B_New.SetFlat();
|
||
|
||
m_B_Save.MoveWindow(iLeftBegin += iWidth, rect.top , iWidth, iHeight, true );
|
||
m_B_Save.SetUnSelToolTip( _T("保存当前发送列表") );
|
||
m_B_Save.ActiveToolTip( true );
|
||
m_B_Save.SetUnSelBmp( IDB_B_SAVE );
|
||
m_B_Save.SetFlat();
|
||
|
||
//m_B_Status.MoveWindow( iLeftBegin+=iWidth , rect.top , iWidth , iHeight , true );
|
||
//m_B_Status.SetUnSelToolTip( _T("刷新发送状态") );
|
||
//m_B_Status.ActiveToolTip( true );
|
||
//m_B_Status.SetUnSelBmp( IDB_B_STATE );
|
||
//m_B_Status.SetFlat();
|
||
|
||
m_B_DY.MoveWindow(iLeftBegin += iWidth, rect.top , iWidth, iHeight, true );
|
||
m_B_DY.SetUnSelToolTip( _T("选择常用短语") );
|
||
m_B_DY.ActiveToolTip( true );
|
||
m_B_DY.SetUnSelBmp( IDB_B_DY );
|
||
m_B_DY.SetFlat();
|
||
|
||
|
||
//画最的一个空按扭
|
||
iLeftBegin += iWidth;
|
||
CRect rect2;
|
||
CWnd * pWnd = (CWnd *)GetDlgItem(IDC_SEND_S1);
|
||
pWnd->GetWindowRect( &rect2 );
|
||
long width = rect2.right - iLeftBegin - 8;
|
||
m_B_Null.MoveWindow(iLeftBegin, rect.top , width , iHeight, true );
|
||
//m_B_Null.SetUnSelToolTip( _T("其它功能,必须在连接后并没有发送时才可使用!") );
|
||
m_B_Null.SetUnSelToolTip( _T("") );
|
||
m_B_Null.ActiveToolTip( true );
|
||
m_B_Null.SetUnSelBmp( IDB_B_NULL );
|
||
m_B_Null.SetFlat();
|
||
m_B_Null.EnableWindow(false);
|
||
m_B_Null.ShowWindow(SW_HIDE);
|
||
|
||
|
||
m_B_Name.GetWindowRect(&rect);
|
||
this->ScreenToClient(&rect);
|
||
iLeftBegin = rect.left;
|
||
iHeight = rect.Height(); //按扭高度
|
||
iWidth = (int)((float)iHeight*(60.0f/48.0f)); //按比例调整宽度
|
||
m_B_Name.MoveWindow(iLeftBegin, rect.top , iWidth, iHeight , true );
|
||
m_B_Name.SetUnSelToolTip( _T("插入姓名,发送时将会自动换成当前用户姓名发送!\r\n注意:插入姓名后,字数统计仅供参考,以实际姓名字数为准。") );
|
||
m_B_Name.ActiveToolTip( true );
|
||
m_B_Name.SetUnSelBmp( IDB_B_INAME );
|
||
m_B_Name.SetFlat();
|
||
|
||
m_B_NickName.MoveWindow(iLeftBegin += iWidth, rect.top, iWidth, iHeight, true);
|
||
m_B_NickName.SetUnSelToolTip( _T("插入昵称,发送时将会自动换成当前用户昵称发送!\r\n注意:插入昵称后,字数统计仅供参考,以实际昵称字数为准。") );
|
||
m_B_NickName.ActiveToolTip( true );
|
||
m_B_NickName.SetUnSelBmp( IDB_B_INICENAME );
|
||
m_B_NickName.SetFlat();
|
||
|
||
m_B_Memo.MoveWindow(iLeftBegin += iWidth, rect.top, iWidth, iHeight, true);
|
||
m_B_Memo.SetUnSelToolTip( _T("插入备注,发送时将会自动换成当前用户的备注内容发送!\r\n注意:插入备注后,字数统计仅供参考,以实际备注字数为准。") );
|
||
m_B_Memo.ActiveToolTip( true );
|
||
m_B_Memo.SetUnSelBmp( IDB_B_INMEMO );
|
||
m_B_Memo.SetFlat();
|
||
|
||
m_B_Flash.MoveWindow(iLeftBegin += iWidth, rect.top, iWidth, iHeight, true);
|
||
m_B_Flash.SetUnSelToolTip( _T("插入闪烁符,对方收到时闪烁符中间的字符会不停闪动!") );
|
||
m_B_Flash.ActiveToolTip( true );
|
||
m_B_Flash.SetUnSelBmp( IDB_B_IFALSH );
|
||
m_B_Flash.SetFlat();
|
||
|
||
|
||
m_B_YL.MoveWindow(iLeftBegin += iWidth, rect.top, iWidth, iHeight, true);
|
||
m_B_YL.SetUnSelToolTip( _T("预览短信!") );
|
||
m_B_YL.ActiveToolTip( true );
|
||
m_B_YL.SetUnSelBmp( IDB_B_YL );
|
||
m_B_YL.SetFlat();
|
||
|
||
//是否显示小灵通短信条数提示
|
||
if ( !m_pMainFrame->isSupportPhs() )
|
||
{
|
||
CRect rect;
|
||
m_S_PCount2.ShowWindow(SW_HIDE);
|
||
|
||
m_S_WCount.GetWindowRect(&rect);
|
||
rect.top+=10;
|
||
rect.bottom+=10;
|
||
ScreenToClient(&rect);
|
||
m_S_WCount.MoveWindow(rect);
|
||
|
||
m_S_PCount.GetWindowRect(&rect);
|
||
rect.top+=13;
|
||
rect.bottom+=13;
|
||
ScreenToClient(&rect);
|
||
m_S_PCount.MoveWindow(rect);
|
||
}
|
||
|
||
|
||
#ifndef MOBSET_SZGJ //如果不是深圳公交集团,不显示取信息按扭。
|
||
m_B_GetMsg.ShowWindow(SW_HIDE);
|
||
#endif
|
||
// m_D_Date.EnableWindow( false );
|
||
// m_D_Time.EnableWindow( false );
|
||
|
||
m_bInit = true;
|
||
//启用保存ID的线程
|
||
::AfxBeginThread((AFX_THREADPROC)AutoSaveLog,(LPVOID)this,/*THREAD_PRIORITY_LOWEST*/THREAD_PRIORITY_BELOW_NORMAL);
|
||
|
||
#ifdef SUPPER_IM_MAS
|
||
if ( Mas_Enable() ) //是否启用Mas
|
||
{
|
||
SetTimer(2 , 5000 , NULL ); //5秒后连接Mas信息机
|
||
}
|
||
#endif
|
||
}
|
||
|
||
void DLG_Send::OnSize(UINT nType, int cx, int cy)
|
||
{
|
||
CDialog::OnSize(nType, cx, cy);
|
||
|
||
if ( !m_bInit ) return;
|
||
|
||
CRect rect;
|
||
this->GetWindowRect(&rect);
|
||
if ( rect.Width()<200 || rect.Height() < 150 ) //当SIZE已很小时则不用再移动窗口
|
||
return;
|
||
|
||
CRect rect3;
|
||
CRect rUser;
|
||
//重置用户列表
|
||
m_wndList.GetWindowRect( &rUser );
|
||
rect3.left = rUser.left;
|
||
rect3.top = rUser.top;
|
||
rect3.right = rect.right - 17;
|
||
rect3.bottom = rect.bottom -17;
|
||
this->ScreenToClient(&rect3);
|
||
m_wndList.MoveWindow(&rect3);
|
||
//重置计数表
|
||
|
||
m_S_ListCount.GetWindowRect( &rUser );
|
||
rect3.left = rUser.left;
|
||
rect3.top = rUser.top;
|
||
rect3.right = rect.right - 17+7;
|
||
rect3.bottom = rect.bottom -17+7;
|
||
this->ScreenToClient(&rect3);
|
||
m_S_ListCount.MoveWindow(&rect3);
|
||
//重置信息栏
|
||
m_E_Msg.GetWindowRect( &rUser );
|
||
rect3.left = rUser.left;
|
||
rect3.top = rUser.top;
|
||
rect3.right = rUser.right;
|
||
rect3.bottom = rect.bottom -39;
|
||
this->ScreenToClient(&rect3);
|
||
m_E_Msg.MoveWindow(&rect3);
|
||
|
||
//重置签名
|
||
m_S_CM2.GetWindowRect( &rUser );
|
||
rect3.left = rUser.left;
|
||
rect3.top = rect.bottom -34;
|
||
rect3.right = rUser.right;
|
||
rect3.bottom = rect3.top+rUser.Height();
|
||
this->ScreenToClient(&rect3);
|
||
m_S_CM2.MoveWindow(&rect3);
|
||
|
||
m_S_CM.GetWindowRect( &rUser );
|
||
rect3.left = rUser.left;
|
||
rect3.top = rect.bottom -34;
|
||
rect3.right = rUser.right;
|
||
rect3.bottom = rect3.top+rUser.Height();
|
||
this->ScreenToClient(&rect3);
|
||
m_S_CM.MoveWindow(&rect3);
|
||
|
||
//重置信息静态控件
|
||
m_S_MsgList.GetWindowRect( &rUser );
|
||
rect3.left = rUser.left;
|
||
rect3.top = rUser.top;
|
||
rect3.right = rUser.right;
|
||
rect3.bottom = rect.bottom -17+7;
|
||
this->ScreenToClient(&rect3);
|
||
m_S_MsgList.MoveWindow(&rect3);
|
||
|
||
}
|
||
|
||
void DLG_Send::OnClose()
|
||
{
|
||
if ( CloseList() )
|
||
{
|
||
CDialog::OnClose();
|
||
}
|
||
}
|
||
|
||
void DLG_Send::RefreshTJ()
|
||
{
|
||
#ifdef UNICODE
|
||
TCHAR szMsg[4096];memset(szMsg , 0 , sizeof(szMsg) );
|
||
long lMaxMsgLen = m_pMainFrame->GetMaxSendMsgLen(); //取允许的最大字符数
|
||
//以下为统计字数
|
||
m_E_Msg.GetWindowText( szMsg , sizeof(szMsg)/2 );
|
||
ExChar( szMsg , _T("\r") ); //去除,防多行
|
||
long lLen=0;
|
||
long lLen2=0;
|
||
long lPage=0;
|
||
long lPage2=0;
|
||
//if ( isChinese( szMsg , _tcslen(szMsg) ) )
|
||
//{
|
||
lLen = _tcslen(szMsg);
|
||
lPage = lLen/lMaxMsgLen;
|
||
if (lPage*lMaxMsgLen!=lLen) lPage++;
|
||
lPage2 = lLen/(lMaxMsgLen-12);
|
||
if (lPage2*(lMaxMsgLen-12)!=lLen) lPage2++;
|
||
//}
|
||
//else
|
||
//{
|
||
// long lPageLen = lMaxMsgLen*2+lMaxMsgLen*2/7;
|
||
// lLen = _tcslen( szMsg );
|
||
// lPage = lLen/lPageLen;
|
||
// if (lPage*lPageLen!=lLen) lPage++;
|
||
//}
|
||
|
||
//长短信方式
|
||
if ( m_B_LongSms.GetCheck() && lLen>lMaxMsgLen)
|
||
{
|
||
long lCMLen=0;
|
||
lMaxMsgLen=m_pMainFrame->GetMaxSendMsgLen_longSms(lCMLen);
|
||
lLen2 = lLen+lCMLen; //原条数加上签名的条数
|
||
|
||
lPage = lLen2/lMaxMsgLen;
|
||
|
||
long lEndMsgLen = lLen2%lMaxMsgLen;
|
||
if (lEndMsgLen!=0) lPage++;
|
||
else lEndMsgLen = lMaxMsgLen;
|
||
|
||
#if defined(SMSCENTER_NX) && !defined(SMSCENTER_GDDX)
|
||
long lNX_CMLen = 6;
|
||
#ifdef SMSCENTER_DGSB
|
||
lNX_CMLen = 6; //签名【东莞人社】
|
||
#endif
|
||
if ( lEndMsgLen+lNX_CMLen > lMaxMsgLen )
|
||
{
|
||
lPage++;
|
||
}
|
||
#endif
|
||
|
||
}
|
||
else
|
||
{
|
||
if ( m_B_FD.GetCheck() )
|
||
{
|
||
if (lLen>lMaxMsgLen)
|
||
{
|
||
lMaxMsgLen-=4; //已大于最大长度,需要分段,每段前要加入分段志,"1/2:",共计4个字节
|
||
lPage = lLen/lMaxMsgLen;
|
||
if (lPage*lMaxMsgLen!=lLen) lPage++;
|
||
lPage2 = lLen/(lMaxMsgLen-12);
|
||
if (lPage2*(lMaxMsgLen-12)!=lLen) lPage2++;
|
||
}
|
||
else
|
||
{
|
||
if ( lLen>(lMaxMsgLen-12) ) //移动的长度不够,小灵通长度超过了。
|
||
{
|
||
lMaxMsgLen-=4; //已大于最大长度,需要分段,每段前要加入分段志,"1/2:",共计4个字节
|
||
lPage2 = lLen/(lMaxMsgLen-12);
|
||
if (lPage2*(lMaxMsgLen-12)!=lLen) lPage2++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
TCHAR Buf[256];
|
||
_stprintf( Buf , _T("字数:%d") , lLen );
|
||
m_S_WCount.SetWindowText(Buf);
|
||
_stprintf( Buf , _T("条数:%d") , lPage );
|
||
m_S_PCount.SetWindowText(Buf);
|
||
_stprintf( Buf , _T("小灵通:%d") , lPage2 );
|
||
m_S_PCount2.SetWindowText(Buf);
|
||
|
||
m_lPage = lPage;
|
||
#else
|
||
long lMaxMsgLen = m_pMainFrame->GetMaxSendMsgLen(); //取允许的最大字符数
|
||
//以下为统计字数
|
||
char szMsg[4096];memset(szMsg , 0 , sizeof(szMsg) );
|
||
char szHex[8192];memset(szHex , 0 , sizeof(szHex) );
|
||
m_E_Msg.GetWindowText( szMsg , sizeof(szMsg) );
|
||
ExChar( szMsg , _T("\r") ); //去除,防多行
|
||
long lLen=0;
|
||
long lLen2=0;
|
||
long lPage=0;
|
||
long lPage2=0;
|
||
//if ( isChinese( szMsg , _tcslen(szMsg) ) )
|
||
//{
|
||
AsciiToUCS2(szMsg , szHex );
|
||
lLen = _tcslen(szHex)/4;
|
||
lPage = lLen/lMaxMsgLen;
|
||
if (lPage*lMaxMsgLen!=lLen) lPage++;
|
||
lPage2 = lLen/(lMaxMsgLen-12);
|
||
if (lPage2*(lMaxMsgLen-12)!=lLen) lPage2++;
|
||
//}
|
||
//else
|
||
//{
|
||
// long lPageLen = lMaxMsgLen*2+lMaxMsgLen*2/7;
|
||
// lLen = _tcslen( szMsg );
|
||
// lPage = lLen/lPageLen;
|
||
// if (lPage*lPageLen!=lLen) lPage++;
|
||
//}
|
||
|
||
//长短信方式
|
||
if ( m_B_LongSms.GetCheck() )
|
||
{
|
||
long lCMLen=0;
|
||
lMaxMsgLen=m_pMainFrame->GetMaxSendMsgLen_longSms(lCMLen);
|
||
lLen2 = lLen+lCMLen; //原条数加上签名的条数
|
||
|
||
lPage = lLen2/lMaxMsgLen;
|
||
long lEndMsgLen = lLen2%lMaxMsgLen;
|
||
|
||
if (lEndMsgLen!=0) lPage++;
|
||
else lEndMsgLen = lMaxMsgLen;
|
||
|
||
#if defined(SMSCENTER_NX) && !defined(SMSCENTER_GDDX)
|
||
long lNX_CMLen = 6;
|
||
#ifdef SMSCENTER_DGSB
|
||
lNX_CMLen = 6; //签名【东莞人社】
|
||
#endif
|
||
if ( lEndMsgLen+lNX_CMLen > lMaxMsgLen )
|
||
{
|
||
lPage++;
|
||
}
|
||
#endif
|
||
|
||
}
|
||
else
|
||
{
|
||
if ( m_B_FD.GetCheck() )
|
||
{
|
||
if (lLen>lMaxMsgLen)
|
||
{
|
||
lMaxMsgLen-=4; //已大于最大长度,需要分段,每段前要加入分段志,"1/2:",共计4个字节
|
||
lPage = lLen/lMaxMsgLen;
|
||
if (lPage*lMaxMsgLen!=lLen) lPage++;
|
||
lPage2 = lLen/(lMaxMsgLen-12);
|
||
if (lPage2*(lMaxMsgLen-12)!=lLen) lPage2++;
|
||
}
|
||
else
|
||
{
|
||
if ( lLen>(lMaxMsgLen-12) ) //移动的长度不够,小灵通长度超过了。
|
||
{
|
||
lMaxMsgLen-=4; //已大于最大长度,需要分段,每段前要加入分段志,"1/2:",共计4个字节
|
||
lPage2 = lLen/(lMaxMsgLen-12);
|
||
if (lPage2*(lMaxMsgLen-12)!=lLen) lPage2++;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
char Buf[256];
|
||
_stprintf( Buf , "字数:%d" , lLen );
|
||
m_S_WCount.SetWindowText(Buf);
|
||
_stprintf( Buf , "条数:%d" , lPage );
|
||
m_S_PCount.SetWindowText(Buf);
|
||
_stprintf( Buf , "小灵通:%d" , lPage2 );
|
||
m_S_PCount2.SetWindowText(Buf);
|
||
m_lPage = lPage;
|
||
#endif
|
||
}
|
||
|
||
void DLG_Send::OnChangeSendMsg()
|
||
{
|
||
m_bModify = true; //已修改过
|
||
|
||
RefreshTJ();
|
||
|
||
}
|
||
|
||
void DLG_Send::OnSendDs()
|
||
{
|
||
m_bModify = true;//已修改过
|
||
BOOL b = m_B_DS.GetCheck();
|
||
if ( b )
|
||
{
|
||
m_D_Date.EnableWindow( true );
|
||
m_D_Time.EnableWindow( true );
|
||
}
|
||
else
|
||
{
|
||
m_D_Date.EnableWindow( false );
|
||
m_D_Time.EnableWindow( false );
|
||
}
|
||
}
|
||
|
||
BOOL DLG_Send::CloseList()
|
||
{
|
||
if (m_bModify)
|
||
{
|
||
long lRet = MessageBox(_T("发送列表已更改,是否保存?") , _T("保存") , MB_ICONQUESTION|MB_YESNOCANCEL);
|
||
if ( lRet == IDYES )
|
||
{
|
||
return List_Save();
|
||
}
|
||
if ( lRet == IDNO )
|
||
{
|
||
//新建一个列表
|
||
EnableModifyWindow( true ); //可以修改
|
||
|
||
m_B_DS.SetCheck(false); //没有定时
|
||
SYSTEMTIME t;::GetLocalTime(&t);
|
||
DateTime_SetSystemtime( m_D_Date.m_hWnd , GDT_VALID , &t );
|
||
DateTime_SetSystemtime( m_D_Time.m_hWnd , GDT_VALID , &t );
|
||
m_wndList.ShowWindow(SW_HIDE);
|
||
m_wndList.DeleteAllItems(); //没有列表
|
||
|
||
//删除临时数据库
|
||
m_strSort.Clear(); //清空数据
|
||
m_wndList.ShowWindow(SW_SHOW);
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
|
||
|
||
m_E_Msg.SetWindowText( _T("") ); //没有内容
|
||
if ( m_pMainFrame->m_Ans_Login.bCM ) //启用签名
|
||
{
|
||
//this->AddLoveToMsg( _T("\r\n") );
|
||
this->AddLoveToMsg( m_pMainFrame->m_Ans_Login.szCM );
|
||
}
|
||
|
||
OnSendDs(); //设置定时
|
||
RefreshTJ(); //刷新显示字数
|
||
m_bModify = false;
|
||
m_lBoxID = 0;
|
||
m_lBoxType = 0; //待发短信
|
||
|
||
m_E_Msg.SetFocus();
|
||
return true;
|
||
}
|
||
else
|
||
return false; //选择了取消
|
||
}
|
||
return true;
|
||
}
|
||
|
||
void DLG_Send::OnSendSave()
|
||
{
|
||
if ( List_Save(true) )
|
||
this->ShowWindow( SW_HIDE );
|
||
}
|
||
|
||
BOOL DLG_Send::List_New()
|
||
{
|
||
if ( IsSend() ) //判断是否在正在发送短信
|
||
return false;
|
||
|
||
if (!CloseList())
|
||
return false;
|
||
/*
|
||
long lCount=0;
|
||
while( m_bSaveList && lCount<50 ) //等待保存列表返回
|
||
{
|
||
Sleep(100);
|
||
}
|
||
*/
|
||
//生日祝福专用
|
||
SetListSR(false);
|
||
|
||
EnableModifyWindow( true ); //可以修改
|
||
|
||
m_B_DS.SetCheck(false); //没有定时
|
||
SYSTEMTIME t;::GetLocalTime(&t);
|
||
DateTime_SetSystemtime( m_D_Date.m_hWnd , GDT_VALID , &t );
|
||
DateTime_SetSystemtime( m_D_Time.m_hWnd , GDT_VALID , &t );
|
||
m_wndList.ShowWindow(SW_HIDE);
|
||
m_wndList.DeleteAllItems(); //没有列表
|
||
//删除临时数据库
|
||
m_strSort.Clear(); //清空数据
|
||
|
||
m_wndList.ShowWindow(SW_SHOW);
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
|
||
|
||
m_E_Msg.SetWindowText( _T("") ); //没有内容
|
||
if ( m_pMainFrame->m_Ans_Login.bCM ) //启用签名
|
||
{
|
||
//this->AddLoveToMsg( _T("\r\n") );
|
||
this->AddLoveToMsg( m_pMainFrame->m_Ans_Login.szCM );
|
||
}
|
||
|
||
OnSendDs(); //设置定时
|
||
RefreshTJ(); //刷新显示字数
|
||
m_bModify = false;
|
||
m_lBoxID = 0;
|
||
m_lBoxType = 0; //待发短信
|
||
m_B_Task.SetCheck(false);// 不是任务方式
|
||
#ifdef SUPPER_IM_MAS
|
||
m_B_SaveSendLog.SetCheck(true);//选中记录日志
|
||
m_B_ReMobile.SetCheck(true);//选中查重
|
||
#endif
|
||
OnSendTask2();
|
||
|
||
m_E_Msg.SetFocus();
|
||
this->SetFocus();
|
||
return true;
|
||
}
|
||
|
||
void DLG_Send::SetMainFrame(CMainFrame *pFrame)
|
||
{
|
||
m_pMainFrame = pFrame;
|
||
m_pSocket = &m_pMainFrame->m_Socket;
|
||
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
|
||
m_AdoRS2.SetAdoConnection( &m_pMainFrame->m_adoConnection );
|
||
m_AdoRS3.SetAdoConnection( &m_pMainFrame->m_adoConnection );
|
||
m_AdoRS4.SetAdoConnection( &m_pMainFrame->m_adoConnection );
|
||
m_AdoRS4.SetCursorLocation(adUseClient);
|
||
m_AdoRS5.SetAdoConnection( &m_pMainFrame->m_adoConnection );
|
||
m_AdoRS5.SetCursorLocation(adUseClient);
|
||
m_AdoRS6.SetAdoConnection( &m_pMainFrame->m_adoConnection );
|
||
}
|
||
|
||
long DLG_Send::GetCurrentSelected()
|
||
{
|
||
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
|
||
if ( pos )
|
||
{
|
||
return m_wndList.GetNextSelectedItem(pos);
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
void DLG_Send::OnRclickSendList(NMHDR* pNMHDR, LRESULT* pResult)
|
||
{
|
||
*pResult = 0;
|
||
|
||
ShowRMenu();
|
||
}
|
||
|
||
void DLG_Send::ShowRMenu()
|
||
{
|
||
if ( m_lBoxType == 1 ) //列表为已发的不能编辑
|
||
return ;
|
||
if ( m_bSend ) //正在发送,不能编辑
|
||
return ;
|
||
CMenu menu;
|
||
menu.CreatePopupMenu();
|
||
BOOL bLock = false;
|
||
long lItem = this->GetCurrentSelected();
|
||
|
||
//添加
|
||
if ( m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false) )
|
||
{
|
||
menu.AppendMenu(MF_STRING , SEND_USER_ADD, _T(" 添加用户 ") );
|
||
menu.AppendMenu(MF_STRING , SEND_USER_PASTE, _T(" 粘贴用户 ") );
|
||
|
||
}
|
||
else
|
||
{
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_ADD , _T(" 添加用户 ") );
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_PASTE , _T(" 粘贴用户 ") );
|
||
}
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
//修改
|
||
if (m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false) && lItem >=0 && !this->m_pMainFrame->GetUserPurview_HideNum())
|
||
{
|
||
menu.AppendMenu(MF_STRING , SEND_USER_MODIFY, _T(" 修 改 ") );
|
||
}
|
||
else
|
||
{
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_MODIFY , _T(" 修 改 ") );
|
||
}
|
||
//删除
|
||
if ( lItem >=0 )
|
||
{
|
||
menu.AppendMenu(MF_STRING , SEND_USER_DEL, _T(" 删 除 ") );
|
||
}
|
||
else
|
||
{
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_DEL , _T(" 删 除 ") );
|
||
}
|
||
//清空
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
menu.AppendMenu(MF_STRING , SEND_USER_CLEAR, _T(" 清 空 ") );
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
if (m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false) )
|
||
{
|
||
menu.AppendMenu(MF_STRING , SEND_USER_INPORT, _T(" 导入列表 ") );
|
||
}
|
||
else
|
||
{
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_INPORT, _T(" 导入列表 ") );
|
||
}
|
||
if ( !this->m_pMainFrame->GetUserPurview_HideNum() )
|
||
menu.AppendMenu(MF_STRING , SEND_USER_EXPORT, _T(" 导出列表 ") );
|
||
else
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_EXPORT, _T(" 导出列表 ") );
|
||
|
||
#ifdef FSLT_VER
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
if (m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false))
|
||
{
|
||
menu.AppendMenu(MF_STRING , SEND_USER_INPORT_LT, _T(" 导入报价 ") );
|
||
}
|
||
else
|
||
{
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_INPORT_LT, _T(" 导入报价 ") );
|
||
}
|
||
#endif
|
||
#ifdef MOBSET_OEM_MASSDKDGWL
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
if (m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false))
|
||
{
|
||
menu.AppendMenu(MF_STRING , SEND_USER_INPORT_MASSDKDGWL_FP, _T(" 发送放盘信息 ") );
|
||
}
|
||
else
|
||
{
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_INPORT_MASSDKDGWL_FP, _T(" 发送放盘信息 ") );
|
||
}
|
||
if (m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false))
|
||
{
|
||
menu.AppendMenu(MF_STRING , SEND_USER_INPORT_MASSDKDGWL_SP, _T(" 发送收盘信息 ") );
|
||
}
|
||
else
|
||
{
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_INPORT_MASSDKDGWL_SP, _T(" 发送收盘信息 ") );
|
||
}
|
||
if (m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false))
|
||
{
|
||
menu.AppendMenu(MF_STRING , SEND_USER_INPORT_MASSDKDGWL_KF, _T(" 发送看房通知 ") );
|
||
}
|
||
else
|
||
{
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_INPORT_MASSDKDGWL_KF, _T(" 发送看房通知 ") );
|
||
}
|
||
if (m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false))
|
||
{
|
||
menu.AppendMenu(MF_STRING , SEND_USER_INPORT_MASSDKDGWL_ZC, _T(" 发送新政策宣传 ") );
|
||
}
|
||
else
|
||
{
|
||
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , SEND_USER_INPORT_MASSDKDGWL_ZC, _T(" 发送新政策宣传 ") );
|
||
}
|
||
#endif
|
||
menu.AppendMenu(MF_SEPARATOR );
|
||
menu.AppendMenu(MF_STRING , SEND_USER_STATUS, _T(" 刷新状态 ") );
|
||
|
||
//显示菜单
|
||
POINT pt ;
|
||
::GetCursorPos( &pt );
|
||
//this->ClientToScreen( &pt);
|
||
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
|
||
menu.DestroyMenu();
|
||
}
|
||
|
||
void DLG_Send::On_User_Add()
|
||
{
|
||
if ( !m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false) )
|
||
return ;
|
||
|
||
Send_User user={0};
|
||
DLG_Send_User dlg(this);
|
||
dlg.SetParam( user );
|
||
if ( dlg.DoModal() == IDOK )
|
||
{
|
||
m_bModify = true; //已修改
|
||
user = dlg.GetParam();
|
||
AddUser( user );
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
}
|
||
}
|
||
void DLG_Send::On_User_Modify()
|
||
{
|
||
if ( !m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false) )
|
||
return ;
|
||
if ( this->m_pMainFrame->GetUserPurview_HideNum() )
|
||
{
|
||
return ; //隐藏号码的,不允许修改
|
||
}
|
||
|
||
long lItem = GetCurrentSelected();
|
||
if ( lItem < 0 )
|
||
return ;
|
||
Send_User user = GetUser(lItem);
|
||
if ( user.szStatus[0] == '1' ) //发送成功
|
||
{
|
||
MessageBox( _T("因为此号码已成功发送短信,所以不能修改!") , _T("错误") , MB_ICONWARNING );
|
||
return ;
|
||
}
|
||
if ( CString(user.szNickName) == CString(_T("任务号码组")) )
|
||
{
|
||
MessageBox( _T("任务号码组,无法修改!") , _T("错误") , MB_ICONWARNING );
|
||
return ;
|
||
}
|
||
DLG_Send_User dlg(this);
|
||
dlg.SetParam( user );
|
||
if ( dlg.DoModal() == IDOK )
|
||
{
|
||
m_bModify = true; //已修改
|
||
user = dlg.GetParam();
|
||
AddUser( user , lItem ); //重新显示内容
|
||
}
|
||
}
|
||
void DLG_Send::On_User_Del()
|
||
{
|
||
CString str;
|
||
long lCount = m_wndList.GetSelectedCount();
|
||
long * pDel = new long[lCount+1];
|
||
memset( pDel , 0 , sizeof(long)*lCount);
|
||
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
|
||
long i=0;
|
||
while ( pos )
|
||
{
|
||
pDel[i] = m_wndList.GetNextSelectedItem(pos);
|
||
i++;
|
||
}
|
||
m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度
|
||
for ( i = 0 ; i< lCount ; i++ )
|
||
{
|
||
Send_User user = GetUser(pDel[lCount-i-1]);
|
||
if ( user.szStatus[0] == '1' ) //发送成功的不能删除
|
||
{
|
||
continue;
|
||
}
|
||
m_wndList.DeleteItem( pDel[lCount-i-1] );
|
||
//在临时数据库中删除
|
||
m_strSort.Del(user.szMobile);
|
||
}
|
||
m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度
|
||
delete pDel;
|
||
m_bModify = true;//已修改过
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
}
|
||
void DLG_Send::On_User_Clear()
|
||
{
|
||
m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度
|
||
m_wndList.DeleteAllItems();
|
||
m_strSort.Clear(); //清空数据
|
||
m_bModify = true;//已修改过
|
||
m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
}
|
||
void DLG_Send::On_User_Inport()
|
||
{
|
||
if ( m_B_ReMobile.GetCheck() )
|
||
{
|
||
int iRet = MessageBox( _T("将要导入发送记录,是否需要判断重复号码?\r\n注:如果需要判断,则导入速度较慢,但可以排除重复号码。") , _T("信息") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
|
||
if ( iRet != IDYES )
|
||
m_B_ReMobile.SetCheck(false);
|
||
}
|
||
|
||
|
||
m_wndList.ShowWindow(SW_HIDE); //加快显示速度
|
||
Inport_Field Field[] =
|
||
{
|
||
{_T("姓名"),0,0,-1},
|
||
{_T("昵称"),0,1,-1},
|
||
//{_T("性别"),0,2,-1},
|
||
//{_T("生日"),0,3,-1},
|
||
//{_T("公司"),0,4,-1},
|
||
//{_T("职务"),0,5,-1},
|
||
//{_T("地址"),0,6,-1},
|
||
{_T("手机号码"),0,7,-1},
|
||
//{_T("电话号码"),0,8,-1},
|
||
//{_T("传真号码"),0,9,-1},
|
||
//{_T("Email"),0,10,-1},
|
||
//{_T("QQ号码"),0,11,-1},
|
||
{_T("备注"),0,12,-1},
|
||
};
|
||
DLG_User_InportP2 dlg(this);
|
||
dlg.SetParam(&Field[0],sizeof(Field)/sizeof(Inport_Field),2);
|
||
//DLG_Send_Inport dlg(this);
|
||
//dlg.SetInport(true);
|
||
dlg.DoModal();
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
m_wndList.ShowWindow(SW_SHOW); //加快显示速度
|
||
}
|
||
|
||
void DLG_Send::On_User_Inport_LT()
|
||
{
|
||
BOOL m_bLongSms=m_B_LongSms.GetCheck();
|
||
BOOL m_bReMobile=m_B_ReMobile.GetCheck();
|
||
m_B_LongSms.SetCheck(true);
|
||
m_B_ReMobile.SetCheck(false);
|
||
DLG_User_Inport_LT dlg(this);
|
||
if ( dlg.DoModal()==IDOK ) //插入备注
|
||
{
|
||
m_B_ReMobile.SetCheck(m_bReMobile);
|
||
m_E_Msg.SetWindowText(_T("") );
|
||
OnSendInmemo();
|
||
}
|
||
else
|
||
{
|
||
//导入不成功,重新恢复原来数据
|
||
m_B_LongSms.SetCheck(m_bLongSms);
|
||
m_B_ReMobile.SetCheck(m_bReMobile);
|
||
}
|
||
}
|
||
void DLG_Send::On_User_Inport_Group_Sms()
|
||
{
|
||
m_B_LongSms.SetCheck(true);
|
||
m_B_ReMobile.SetCheck(false);
|
||
m_E_Msg.SetWindowText(_T("") );
|
||
OnSendInmemo();
|
||
}
|
||
|
||
void DLG_Send::On_User_Export()
|
||
{
|
||
if ( this->m_pMainFrame->GetUserPurview_HideNum() )
|
||
{
|
||
return ; //隐藏号码的,不允许导出
|
||
}
|
||
DLG_Send_Inport dlg(this);
|
||
dlg.SetInport(false);
|
||
dlg.DoModal();
|
||
}
|
||
void DLG_Send::On_User_Status()
|
||
{
|
||
}
|
||
|
||
BOOL DLG_Send::PreTranslateMessage(MSG* pMsg)
|
||
{
|
||
//此举是为了用户在输入号码时按了回车然后转到输入内容
|
||
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
|
||
{
|
||
if ( pMsg->hwnd == m_E_Num )
|
||
{
|
||
OnSendNumadd();
|
||
return true;
|
||
}
|
||
}
|
||
if (pMsg->message == WM_KEYUP &&(pMsg->wParam == 'v' || pMsg->wParam =='V') )
|
||
{
|
||
//if ( pMsg->hwnd != m_E_Num && pMsg->hwnd != m_E_Msg && pMsg->hwnd!=m_D_Date && pMsg->hwnd!=m_D_Time )
|
||
if ( pMsg->hwnd == m_wndList)
|
||
{
|
||
OnSendNumPaste();
|
||
return true;
|
||
}
|
||
}
|
||
return CDialog::PreTranslateMessage(pMsg);
|
||
}
|
||
void DLG_Send::OnSendNumPaste()
|
||
{
|
||
if (!OpenClipboard())
|
||
return ;
|
||
HANDLE hclip;
|
||
TCHAR *buf=NULL;
|
||
#ifdef _UNICODE
|
||
hclip=::GetClipboardData(CF_UNICODETEXT);
|
||
#else
|
||
hclip=::GetClipboardData(CF_TEXT);
|
||
#endif
|
||
if ( !hclip )
|
||
{
|
||
CloseClipboard();
|
||
return ;
|
||
}
|
||
buf=(TCHAR*)GlobalLock(hclip);
|
||
|
||
TCHAR szNum[32]={0};
|
||
int lNumLen=0;
|
||
int lMaxNumLen=16;
|
||
long lLen = _tcslen(buf);
|
||
long lMobileCount=0;
|
||
m_wndList.ShowWindow( SW_HIDE ); //加快显示速度
|
||
for ( int i=0 ; i<lLen ; i++ )
|
||
{
|
||
BOOL bNum=false;
|
||
if ( buf[i]>='0' && buf[i]<='9' )
|
||
{
|
||
if ( lNumLen<=lMaxNumLen )
|
||
{
|
||
szNum[lNumLen]=buf[i];
|
||
lNumLen ++;
|
||
}
|
||
bNum = true;
|
||
}
|
||
#ifdef _UNICODE
|
||
if (!bNum && buf[i]>=L'0' && buf[i]<=L'9' )
|
||
{
|
||
if ( lNumLen<=lMaxNumLen )
|
||
{
|
||
szNum[lNumLen]=(buf[i]-L'0')+'0';
|
||
lNumLen ++;
|
||
}
|
||
bNum = true;
|
||
}
|
||
#endif
|
||
if( !bNum )
|
||
{
|
||
if ( lNumLen>=8 && lNumLen<=lMaxNumLen )
|
||
{
|
||
ExMobileGZM(szNum); //去除国际码
|
||
if ( isMobileNum( szNum ) ) //找到新号码
|
||
{
|
||
lMobileCount ++;
|
||
Send_User user={0};
|
||
_tcscpy( user.szMobile , szNum );
|
||
AddUser(user);
|
||
}
|
||
}
|
||
lNumLen=0;
|
||
memset(szNum,0,sizeof(szNum));
|
||
}
|
||
}
|
||
|
||
//最后一个号码还是要处理
|
||
if ( lNumLen>=8 && lNumLen<=lMaxNumLen )
|
||
{
|
||
ExMobileGZM(szNum); //去除国际码
|
||
if ( isMobileNum( szNum ) ) //找到新号码
|
||
{
|
||
lMobileCount ++;
|
||
Send_User user={0};
|
||
_tcscpy( user.szMobile , szNum );
|
||
AddUser(user);
|
||
}
|
||
}
|
||
lNumLen=0;
|
||
memset(szNum,0,sizeof(szNum));
|
||
m_wndList.ShowWindow( SW_SHOW ); //加快显示速度
|
||
GlobalUnlock(hclip);
|
||
CloseClipboard();
|
||
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
}
|
||
|
||
void DLG_Send::OnSendNumadd()
|
||
{
|
||
long lLen2=m_E_Num.GetWindowTextLength();
|
||
TCHAR * buf = new TCHAR[lLen2+10];
|
||
m_E_Num.GetWindowText( buf , lLen2+10 );
|
||
if ( _tcslen( buf ) <=0 )
|
||
{
|
||
MessageBox( _T("请先输入要添加的手机号码!") , _T("错误") , MB_ICONWARNING );
|
||
m_E_Num.SetFocus();
|
||
delete buf;
|
||
return ;
|
||
}
|
||
TCHAR szNum[32]={0};
|
||
int lNumLen=0;
|
||
int lMaxNumLen=20;
|
||
long lLen = _tcslen(buf);
|
||
long lMobileCount=0;
|
||
for ( int i=0 ; i<lLen ; i++ )
|
||
{
|
||
BOOL bNum=false;
|
||
if ( buf[i]>='0' && buf[i]<='9' )
|
||
{
|
||
if ( lNumLen<=lMaxNumLen )
|
||
{
|
||
szNum[lNumLen]=buf[i];
|
||
lNumLen ++;
|
||
}
|
||
bNum = true;
|
||
}
|
||
#ifdef _UNICODE
|
||
if (!bNum && buf[i]>=L'0' && buf[i]<=L'9' )
|
||
{
|
||
if ( lNumLen<=lMaxNumLen )
|
||
{
|
||
szNum[lNumLen]=(buf[i]-L'0')+'0';
|
||
lNumLen ++;
|
||
}
|
||
bNum = true;
|
||
}
|
||
#endif
|
||
if( !bNum )
|
||
{
|
||
if ( lNumLen>=8 && lNumLen<=lMaxNumLen )
|
||
{
|
||
ExMobileGZM(szNum); //去除国际码
|
||
if ( isMobileNum( szNum ) ) //找到新号码
|
||
{
|
||
lMobileCount ++;
|
||
Send_User user={0};
|
||
_tcscpy( user.szMobile , szNum );
|
||
AddUser(user);
|
||
}
|
||
}
|
||
lNumLen=0;
|
||
memset(szNum,0,sizeof(szNum));
|
||
}
|
||
}
|
||
|
||
//最后一个号码还是要处理
|
||
if ( lNumLen>=8 && lNumLen<=lMaxNumLen )
|
||
{
|
||
ExMobileGZM(szNum); //去除国际码
|
||
if ( isMobileNum( szNum ) ) //找到新号码
|
||
{
|
||
lMobileCount ++;
|
||
Send_User user={0};
|
||
_tcscpy( user.szMobile , szNum );
|
||
AddUser(user);
|
||
}
|
||
}
|
||
lNumLen=0;
|
||
memset(szNum,0,sizeof(szNum));
|
||
|
||
m_E_Num.SetWindowText(_T(""));
|
||
m_E_Num.SetFocus();
|
||
if ( lMobileCount <= 0 )
|
||
{
|
||
MessageBox( _T("手机号码输入有误!\r\n多个号码请以\";\"号隔开!") , _T("错误") , MB_ICONWARNING );
|
||
}
|
||
else
|
||
{
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
}
|
||
delete buf;
|
||
}
|
||
|
||
BOOL DLG_Send::List_Save(BOOL bTJ)
|
||
{
|
||
if ( !bTJ && !m_bModify ) //没有需要修改的内容,直接返回即可
|
||
return true;
|
||
|
||
|
||
TCHAR szMsg[1024]={0};
|
||
TCHAR szSelect[128]={0};
|
||
COleDateTime tTimer; //定时时间
|
||
TCHAR szBoxType[8]={0};
|
||
|
||
m_E_Msg.GetWindowText( szMsg , sizeof(szMsg) );
|
||
if ( _tcslen(szMsg) <=0 ) //内容不能为空
|
||
{
|
||
MessageBox(_T("输入的短信内容不能为空!"),_T("错误"),MB_ICONWARNING);
|
||
m_E_Msg.SetFocus();
|
||
return false;
|
||
}
|
||
_tcscpy( m_szMsg , szMsg );
|
||
ExChar( m_szMsg , _T("\r") ); //去除,防多行
|
||
|
||
if ( m_wndList.GetItemCount() <= 0 )
|
||
{
|
||
MessageBox(_T("列表里没输入要发送的目标号码!"),_T("错误"),MB_ICONWARNING);
|
||
return false;
|
||
}
|
||
|
||
if ( m_lBoxType == 0 )
|
||
_tcscpy( szBoxType, _T("0") ); //待发
|
||
else
|
||
_tcscpy( szBoxType, _T("1") ); //已发
|
||
|
||
|
||
memset(&m_tTimer,0,sizeof(m_tTimer));
|
||
if ( m_B_DS.GetCheck() ) //定时短信
|
||
{
|
||
SYSTEMTIME t={0};
|
||
SYSTEMTIME t1={0};
|
||
DateTime_GetSystemtime( m_D_Date.m_hWnd , &t );
|
||
DateTime_GetSystemtime( m_D_Time.m_hWnd , &t1 );
|
||
t.wHour = t1.wHour;
|
||
t.wMinute = t1.wMinute;
|
||
t.wSecond = 0;
|
||
tTimer = COleDateTime(t);
|
||
if ( !m_bSendSR && tTimer < COleDateTime::GetCurrentTime() ) //如果不是生日祝福,需要判断时间是否过期
|
||
{
|
||
MessageBox( _T("定时时间不能小于当前时间,请调整!") , _T("错误") , MB_ICONWARNING );
|
||
m_D_Date.SetFocus();
|
||
return false;
|
||
}
|
||
tTimer.GetAsSystemTime( m_tTimer ); //取定时时间
|
||
}
|
||
else
|
||
{
|
||
tTimer.SetStatus( COleDateTime::null );
|
||
}
|
||
|
||
if ( m_lBoxID ) //有ID,相当于修改
|
||
{
|
||
_stprintf( szSelect , _T("select * from smsbox where BoxID=%d") , m_lBoxID );
|
||
BOOL b = m_AdoRS.Open( szSelect );
|
||
if ( b && m_AdoRS.GetRecordCount() )
|
||
{
|
||
m_AdoRS.MoveFirst();
|
||
m_AdoRS.PutCollect( _T("BoxType") , szBoxType );
|
||
m_AdoRS.PutCollect( _T("Msg") , szMsg );
|
||
m_AdoRS.PutCollect( _T("Timer") , tTimer );
|
||
|
||
m_AdoRS.PutCollect( _T("Task") , m_B_Task.GetCheck() );
|
||
m_AdoRS.PutCollect( _T("LongSms") , m_B_LongSms.GetCheck() );
|
||
m_AdoRS.PutCollect( _T("FD") , m_B_FD.GetCheck() );
|
||
m_AdoRS.Update();
|
||
}
|
||
m_AdoRS.Close();
|
||
|
||
//删除所有原已有记录
|
||
if ( m_bModify ) //没做过修改,不用修改smsitem
|
||
{
|
||
_stprintf( szSelect , _T("delete from smsitem where BoxID=%d") , m_lBoxID );
|
||
b = m_AdoRS.Open( szSelect );
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//新增
|
||
BOOL b = m_AdoRS.Open( _T("smsbox") , adCmdTable );
|
||
if ( b )
|
||
{
|
||
m_AdoRS.AddNew();
|
||
m_AdoRS.PutCollect( _T("BoxType") , szBoxType );
|
||
m_AdoRS.PutCollect( _T("Msg") , szMsg );
|
||
m_AdoRS.PutCollect( _T("Timer") , tTimer );
|
||
SYSTEMTIME t;::GetLocalTime(&t);
|
||
COleDateTime ot(t);
|
||
m_AdoRS.PutCollect( _T("CreateTime") ,ot );
|
||
m_AdoRS.Update();
|
||
m_AdoRS.GetCollect( _T("BoxID") , m_lBoxID ); //取得新增的BoxID
|
||
}
|
||
m_AdoRS.Close();
|
||
}
|
||
|
||
if ( !m_bModify ) //没做过修改,不用修改smsitem
|
||
{
|
||
return true;
|
||
}
|
||
|
||
//启用保存Item的线程
|
||
m_bSaveList = true;
|
||
//::AfxBeginThread((AFX_THREADPROC)AutoSaveItem,(LPVOID)this,THREAD_PRIORITY_NORMAL/*THREAD_PRIORITY_BELOW_NORMAL*/);
|
||
::AfxBeginThread((AFX_THREADPROC)AutoSaveItem,(LPVOID)this,THREAD_PRIORITY_BELOW_NORMAL);
|
||
Sleep(500); //秒为延时一会
|
||
|
||
/*
|
||
//将Item添中取BoxItem
|
||
BOOL b = m_AdoRS.Open( "smsitem" , adCmdTable );
|
||
if ( b )
|
||
{
|
||
long lCount = m_wndList.GetItemCount();
|
||
Send_User user;
|
||
for ( int i = 0 ; i< lCount ; i++ )
|
||
{
|
||
user = GetUser(i);
|
||
m_AdoRS.AddNew();
|
||
m_AdoRS.PutCollect( "BoxID" , m_lBoxID );
|
||
m_AdoRS.PutCollect( "GroupID" , user.szGroup );
|
||
m_AdoRS.PutCollect( "Name" , user.szName );
|
||
m_AdoRS.PutCollect( "NikeName" , user.szNickName );
|
||
m_AdoRS.PutCollect( "Mobile" , user.szMobile );
|
||
m_AdoRS.PutCollect( "BZ" , user.szBZ );
|
||
m_AdoRS.PutCollect( "Status" , user.szStatus );
|
||
//m_AdoRS.PutCollect( "SendID" , user.lSendID );
|
||
m_AdoRS.Update();
|
||
m_AdoRS.GetCollect( "ItemID" , user.lItemID ); //取新的ItemId
|
||
m_wndList.SetItemData( i , user.lItemID ); //设置新的ItemID;
|
||
}
|
||
m_AdoRS.Close();
|
||
}
|
||
|
||
|
||
//因为保存了新内容,所以要刷新显示列表
|
||
if ( m_lBoxType == 0 )
|
||
m_pMainFrame->m_pBaseView->m_dlgSmsDF.RefreshInfo();//待发
|
||
else
|
||
m_pMainFrame->m_pBaseView->m_dlgSmsYF.RefreshInfo();//已发
|
||
*/
|
||
|
||
m_bModify = false; //保存完毕,没有要修改的内容
|
||
|
||
return true;
|
||
}
|
||
|
||
Send_User DLG_Send::GetUser(long lItem , BOOL bDelay)
|
||
{
|
||
Send_User user={0};
|
||
TCHAR szStatus[16]={0};
|
||
m_wndList.GetItemText( lItem , 0 , user.szName , sizeof(user.szName)-1);
|
||
m_wndList.GetItemText( lItem , 1 , user.szNickName , sizeof(user.szNickName)-1 );
|
||
m_wndList.GetItemText( lItem , 2 , user.szMobile , sizeof(user.szMobile)-1 );
|
||
m_wndList.GetItemText( lItem , 3 , szStatus , sizeof(szStatus)-1 );
|
||
m_wndList.GetItemText( lItem , 4 , user.szGroup , sizeof(user.szGroup)-1 );
|
||
m_wndList.GetItemText( lItem , 5 , user.szBZ , sizeof(user.szBZ)-1 );
|
||
|
||
|
||
user.lItemID = m_wndList.GetItemData( lItem );
|
||
/*
|
||
if ( !bDelay )
|
||
{
|
||
user.lItemID = m_wndList.GetItemData( lItem );
|
||
}
|
||
else
|
||
{
|
||
for ( int i=0 ; i<20 ; i++ ) //延时2秒,防止取不取ID;
|
||
{
|
||
user.lItemID = m_wndList.GetItemData( lItem );
|
||
if ( user.lItemID>0 )
|
||
{
|
||
break;
|
||
}
|
||
Sleep(100);
|
||
}
|
||
}
|
||
*/
|
||
|
||
if ( !_tcscmp(szStatus,_T("提交成功")) || !_tcscmp(szStatus,_T("发送成功")) )
|
||
_tcscpy(user.szStatus , _T("1") );
|
||
else
|
||
if ( !_tcscmp(szStatus,_T("提交失败")) )
|
||
_tcscpy(user.szStatus , _T("2") );
|
||
else
|
||
if ( !_tcscmp(szStatus,_T("已提交")) )
|
||
_tcscpy(user.szStatus , _T("3") );
|
||
else
|
||
_tcscpy(user.szStatus , _T("0") ); //未发
|
||
|
||
return user;
|
||
}
|
||
|
||
BOOL DLG_Send::List_Read(long lBoxID)
|
||
{
|
||
if ( IsSend() ) //判断是否在正在发送短信
|
||
return false;
|
||
|
||
if ( lBoxID == m_lBoxID ) //要打开的ID与已读入的ID相同,不必重做
|
||
return true;
|
||
if (!CloseList())
|
||
return false;
|
||
|
||
//读入基本信息
|
||
TCHAR szSelect[128]={0};
|
||
TCHAR szBuf[1024]={0};
|
||
COleDateTime ot;
|
||
_stprintf( szSelect , _T("select * from smsbox where BoxID=%d") , lBoxID );
|
||
BOOL b = m_AdoRS.Open( szSelect );
|
||
long lCount=m_AdoRS.GetRecordCount();
|
||
if ( b && lCount>0 )
|
||
{
|
||
m_AdoRS.MoveFirst();
|
||
m_AdoRS.GetCollect( _T("BoxType") , szBuf );
|
||
m_lBoxType = _ttol(szBuf);
|
||
m_AdoRS.GetCollect( _T("Msg") , szBuf );
|
||
m_E_Msg.SetWindowText( szBuf );
|
||
m_AdoRS.GetCollect( _T("Timer") , ot );
|
||
if ( ot.GetStatus() == COleDateTime::valid ) //有效时间
|
||
{
|
||
m_B_DS.SetCheck( true );
|
||
SYSTEMTIME t;
|
||
ot.GetAsSystemTime( t );
|
||
DateTime_SetSystemtime( m_D_Date.m_hWnd , GDT_VALID , &t );
|
||
DateTime_SetSystemtime( m_D_Time.m_hWnd , GDT_VALID , &t );
|
||
|
||
if ( ot.GetDay()==1960 && ot.GetMonth()==7 && ot.GetDay()==31 ) //生日发送标志
|
||
{
|
||
SetListSR(true);
|
||
}
|
||
else
|
||
{
|
||
SetListSR(false);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
m_B_DS.SetCheck( false );
|
||
SYSTEMTIME t;::GetLocalTime(&t);
|
||
DateTime_SetSystemtime( m_D_Date.m_hWnd , GDT_VALID , &t );
|
||
DateTime_SetSystemtime( m_D_Time.m_hWnd , GDT_VALID , &t );
|
||
}
|
||
long lb;
|
||
m_AdoRS.GetCollect(_T("Task") , lb );
|
||
m_B_Task.SetCheck(lb);
|
||
m_AdoRS.GetCollect(_T("LongSms") , lb );
|
||
m_B_LongSms.SetCheck(lb);
|
||
m_AdoRS.GetCollect(_T("FD") , lb );
|
||
m_B_FD.SetCheck(lb);
|
||
|
||
OnSendDs(); //设置定时
|
||
OnSendTask2();
|
||
|
||
if ( m_lBoxType == 1 ) //已发,不让操作,只能查询
|
||
{
|
||
EnableModifyWindow( false ); //不可以修改
|
||
m_B_New.EnableWindow(true); //新建与重发是可以的。
|
||
m_B_New2.EnableWindow(true); //新建与重发是可以的。
|
||
|
||
}
|
||
else
|
||
{
|
||
EnableModifyWindow( true ); //可以修改
|
||
}
|
||
|
||
|
||
_stprintf( szSelect , _T("select * from smsitem where BoxID=%d") , lBoxID );
|
||
m_wndList.ShowWindow(SW_HIDE);
|
||
m_wndList.DeleteAllItems(); //没有列表
|
||
//删除临时数据库
|
||
m_strSort.Clear(); //清空数据
|
||
m_wndList.ShowWindow(SW_SHOW);
|
||
|
||
b = m_AdoRS.Open( szSelect );
|
||
lCount=m_AdoRS.GetRecordCount();
|
||
if ( b && lCount>0 )
|
||
{
|
||
if ( m_B_ReMobile.GetCheck() && lCount>MAX_SENDLIST_NOTIP )
|
||
{
|
||
int iRet = MessageBox( _T("准备读取的记录数过大,是否需要判断重复号码?\r\n注:如果需要判断,则读取速度较慢,但可以排除重复号码。") , _T("信息") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
|
||
if ( iRet != IDYES )
|
||
m_B_ReMobile.SetCheck(false);
|
||
}
|
||
m_wndList.ShowWindow( SW_HIDE ); //加快显示速度
|
||
CAdoSmsItem adoSms;
|
||
m_AdoRS.RecordBinding( adoSms );
|
||
m_AdoRS.MoveFirst();
|
||
while( !m_AdoRS.IsEOF() )
|
||
{
|
||
Send_User user={0};
|
||
/*
|
||
m_AdoRS.GetCollect( "GroupID" , user.szGroup );
|
||
m_AdoRS.GetCollect( "Name" , user.szName );
|
||
m_AdoRS.GetCollect( "NikeName" , user.szNickName );
|
||
m_AdoRS.GetCollect( "Mobile" , user.szMobile );
|
||
m_AdoRS.GetCollect( "BZ" , user.szBZ );
|
||
m_AdoRS.GetCollect( "Status" , user.szStatus );
|
||
m_AdoRS.GetCollect( "SendID" , user.lSendID );
|
||
m_AdoRS.GetCollect( "SendID" , user.lItemID );
|
||
*/
|
||
_tcscpy(user.szGroup , adoSms.m_GroupID );
|
||
_tcscpy(user.szName , adoSms.m_Name );
|
||
_tcscpy(user.szNickName , adoSms.m_NickName );
|
||
_tcscpy(user.szMobile , adoSms.m_Mobile );
|
||
_tcscpy(user.szBZ , adoSms.m_BZ );
|
||
_tcscpy(user.szStatus , adoSms.m_Status );
|
||
user.lSendID = adoSms.m_SendID;
|
||
user.lItemID = adoSms.m_ItemID;
|
||
|
||
memset(&adoSms,0,sizeof(adoSms));
|
||
m_AdoRS.MoveNext();
|
||
AddUser(user);
|
||
}
|
||
m_wndList.ShowWindow( SW_SHOW ); //加快显示速度
|
||
}
|
||
|
||
RefreshTJ(); //刷新显示字数
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
m_lBoxID = lBoxID;
|
||
m_bModify = false; //刚刚读入,不需要修改
|
||
this->SetFocus();
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
void DLG_Send::AddUser(Send_User user,long lItem)
|
||
{
|
||
ExChar(user.szMobile,_T(" "));
|
||
ExChar(user.szMobile,_T("\r"));
|
||
ExChar(user.szMobile,_T("\n"));
|
||
ExChar(user.szMobile,_T("\t"));
|
||
|
||
if ( CString(user.szNickName) != CString(_T("任务号码组")) ) //任务方式
|
||
{
|
||
ExMobileGZM(user.szMobile); //去除国际码
|
||
//if ( !isMobileNum( user.szMobile ) ) //不是手机号码,不用添加或修改
|
||
if ( !isMmsNum( user.szMobile ) ) //不是手机号码,不用添加或修改,不支持小灵通了
|
||
return ;
|
||
}
|
||
else
|
||
{
|
||
if ( !m_B_Task.GetCheck() )
|
||
{
|
||
m_B_Task.SetCheck(true);
|
||
OnSendTask();
|
||
m_B_Task.EnableWindow(false);
|
||
}
|
||
if ( m_B_Task.GetCheck() )
|
||
{
|
||
//为任务模式
|
||
m_B_Task.SetCheck(true);
|
||
m_B_Task.EnableWindow(false);
|
||
}
|
||
else
|
||
{
|
||
return;
|
||
}
|
||
}
|
||
//判断是否黑名单
|
||
if ( lItem < 0 )
|
||
{
|
||
if ( this->IsLocakBack(user.szMobile ) && (m_bBackReMobile || m_lBackReMobileType==0) ) //需要显示警告,或者自动过滤
|
||
{
|
||
if ( m_bBackReMobile )
|
||
{
|
||
CString str;
|
||
str.Format( _T("%s,%s"),user.szName , user.szMobile);
|
||
DLG_AddBack dlg(str,this); //提示重复号码
|
||
dlg.DoModal();
|
||
m_bBackReMobile = dlg.m_bShowReMobile;
|
||
m_lBackReMobileType = dlg.m_lReMobileType;
|
||
}
|
||
if ( m_lBackReMobileType==0 ) //自动过滤
|
||
return;
|
||
}
|
||
}
|
||
|
||
if (m_pMainFrame->m_Setup.bAutoGetName && _tcslen(user.szName) <= 0) //从通讯录取姓名
|
||
{
|
||
CString strSelect;
|
||
BOOL bGetAddress = false;
|
||
//接收到新的短信,先查询其在电话本里的姓名
|
||
if (!bGetAddress && m_pMainFrame->GetUserPurview(PURVIEW_PADDRESS, false)) //有私人电话本查看权限
|
||
{
|
||
strSelect.Format(_T("select * from paddress where Mobile like '%%%s'"), user.szMobile);
|
||
if (m_AdoRS2.Open(strSelect) && !m_AdoRS2.IsEOF())
|
||
{
|
||
m_AdoRS2.GetCollect(_T("Name"), user.szName);
|
||
m_AdoRS2.GetCollect(_T("NickName"), user.szNickName);
|
||
m_AdoRS2.GetCollect(_T("BZ"), user.szBZ);
|
||
bGetAddress = true;
|
||
}
|
||
}
|
||
if (!bGetAddress && m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_SEE, false)) //有公用电话本查看权限
|
||
{
|
||
strSelect.Format(_T("select * from gaddress where Mobile like '%%%s'"), user.szMobile);
|
||
if (m_AdoRS2.Open(strSelect) && !m_AdoRS2.IsEOF())
|
||
{
|
||
m_AdoRS2.GetCollect(_T("Name"), user.szName);
|
||
m_AdoRS2.GetCollect(_T("NickName"), user.szNickName);
|
||
m_AdoRS2.GetCollect(_T("BZ"), user.szBZ);
|
||
}
|
||
}
|
||
}
|
||
|
||
BOOL bInsert=false;
|
||
if ( lItem < 0 )
|
||
{
|
||
if ( m_B_ReMobile.GetCheck() && (m_bShowReMobile || m_lReMobileType==0) ) //需要显示警告,或者自动过滤
|
||
{
|
||
bInsert = true;
|
||
if ( !m_strSort.Add(user.szMobile) )
|
||
{
|
||
if ( m_bShowReMobile )
|
||
{
|
||
CString str;
|
||
str.Format( _T("%s,%s"),user.szName , user.szMobile);
|
||
DLG_AddWarning dlg(str,this); //提示重复号码
|
||
dlg.DoModal();
|
||
m_bShowReMobile = dlg.m_bShowReMobile;
|
||
m_lReMobileType = dlg.m_lReMobileType;
|
||
}
|
||
if ( m_lReMobileType==0 ) //自动过滤
|
||
return;
|
||
}
|
||
}
|
||
lItem = m_wndList.GetItemCount();
|
||
if ( m_B_Task.GetCheck() && lItem>=100 ) //任务方式不能超过100个号码
|
||
{
|
||
MessageBox(_T("当前为任务模式,最多只允许添加100个号码,超出的将会被丢弃!\r\n如需发送私人通讯录数据,建议使用普通模式。"), _T("警告"), MB_ICONWARNING);
|
||
return ;
|
||
}
|
||
m_wndList.InsertItem( lItem , user.szName );
|
||
//插入到临时数据库
|
||
if ( !bInsert )
|
||
{
|
||
m_strSort.Add(user.szMobile);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//修改数据库
|
||
CString str,strMobile;
|
||
strMobile = m_wndList.GetItemText(lItem,2);
|
||
if ( strMobile != CString(user.szMobile) )
|
||
{
|
||
if ( !m_strSort.Add(user.szMobile) ) //加入成功,否则为重复
|
||
{
|
||
if ( m_bShowReMobile )
|
||
{
|
||
CString str;
|
||
str.Format( _T("%s,%s"),user.szName , user.szMobile);
|
||
DLG_AddWarning dlg(str,this); //提示重复号码
|
||
dlg.DoModal();
|
||
m_bShowReMobile = dlg.m_bShowReMobile;
|
||
m_lReMobileType = dlg.m_lReMobileType;
|
||
}
|
||
if ( m_lReMobileType==0 ) //自动过滤
|
||
return;
|
||
}
|
||
}
|
||
m_wndList.SetItemText( lItem,0,user.szName );
|
||
}
|
||
m_wndList.SetItemText( lItem,1,user.szNickName );
|
||
m_wndList.SetItemText( lItem,2,user.szMobile );
|
||
|
||
if ( user.szStatus[0] == '1' )
|
||
m_wndList.SetItemText( lItem,3,_T("提交成功"));
|
||
else
|
||
if ( user.szStatus[0] == '2' )
|
||
m_wndList.SetItemText( lItem,3,_T("提交失败"));
|
||
else
|
||
if ( user.szStatus[0] == '3' )
|
||
m_wndList.SetItemText( lItem,3,_T("已提交"));
|
||
else
|
||
m_wndList.SetItemText( lItem,3,_T("未发"));
|
||
m_wndList.SetItemText( lItem,4,user.szGroup );
|
||
m_wndList.SetItemText( lItem,5,user.szBZ );
|
||
m_wndList.SetItemData( lItem,user.lItemID);
|
||
m_bModify = true;
|
||
}
|
||
|
||
void DLG_Send::OnDblclkSendList(NMHDR* pNMHDR, LRESULT* pResult)
|
||
{
|
||
*pResult = 0;
|
||
On_User_Modify();
|
||
}
|
||
|
||
void DLG_Send::OnDatetimechangeSendDsD(NMHDR* pNMHDR, LRESULT* pResult)
|
||
{
|
||
*pResult = 0;
|
||
m_bModify = true;//已修改过
|
||
}
|
||
|
||
void DLG_Send::OnDatetimechangeSendDsT(NMHDR* pNMHDR, LRESULT* pResult)
|
||
{
|
||
*pResult = 0;
|
||
m_bModify = true;//已修改过
|
||
}
|
||
|
||
void DLG_Send::OnSendNew()
|
||
{
|
||
List_New();
|
||
}
|
||
|
||
long DLG_Send::GetBoxID()
|
||
{
|
||
return m_lBoxID;
|
||
}
|
||
|
||
void DLG_Send::AddLoveToMsg(TCHAR *pLove)
|
||
{
|
||
m_E_Msg.SendMessage(EM_REPLACESEL,false,(LPARAM)(LPCTSTR)pLove);
|
||
m_bModify = true;
|
||
}
|
||
|
||
void DLG_Send::OnSendIname()
|
||
{
|
||
AddLoveToMsg( _T("\"%Name%\"") );
|
||
}
|
||
|
||
void DLG_Send::OnSendInicename()
|
||
{
|
||
AddLoveToMsg( _T("\"%NickName%\"") );
|
||
}
|
||
|
||
void DLG_Send::OnSendInmemo()
|
||
{
|
||
AddLoveToMsg( _T("\"%Memo%\"") );
|
||
}
|
||
|
||
void DLG_Send::OnSendIfalsh()
|
||
{
|
||
AddLoveToMsg( _T("\"%^%\"") );
|
||
}
|
||
|
||
void DLG_Send::OnSendYl()
|
||
{
|
||
|
||
}
|
||
|
||
BOOL DLG_Send::List_ReSend(long lBoxID)
|
||
{
|
||
if ( IsSend() ) //判断是否在正在发送短信
|
||
return false;
|
||
|
||
if (!List_Read(lBoxID))
|
||
return false;
|
||
|
||
EnableModifyWindow( true ); //可以修改
|
||
if ( m_B_Task.GetCheck() ) //如果是任务模式,重新读入后里面肯定有批量号码,所以不能再更改为非任务模式
|
||
m_B_Task.EnableWindow(false);
|
||
|
||
OnSendDs(); //设置定时
|
||
RefreshTJ(); //刷新显示字数
|
||
OnSendTask2(); //刷新任务模式
|
||
|
||
|
||
m_wndList.ShowWindow( SW_HIDE ); //加快显示速度
|
||
long lCount = m_wndList.GetItemCount();
|
||
//将全部内容置为未发
|
||
for ( int i = 0 ; i< lCount ; i++ )
|
||
{
|
||
m_wndList.SetItemText( i,3,_T("未发"));
|
||
}
|
||
m_wndList.ShowWindow( SW_SHOW ); //加快显示速度
|
||
m_lBoxID = 0; //未保存
|
||
m_lBoxType = 0; //待发
|
||
m_bModify = true; //已修改
|
||
this->SetFocus();
|
||
return true;
|
||
}
|
||
|
||
void DLG_Send::EnableModifyWindow(BOOL bModify)
|
||
{
|
||
m_B_DS.EnableWindow( bModify );
|
||
m_D_Date.EnableWindow( bModify );
|
||
m_D_Time.EnableWindow( bModify );
|
||
m_E_Msg.SetReadOnly( !bModify );
|
||
m_E_Num.EnableWindow( bModify );
|
||
m_B_Add.EnableWindow( bModify );
|
||
m_B_Start.EnableWindow( bModify );
|
||
m_B_Save.EnableWindow( bModify );
|
||
m_B_DY.EnableWindow( bModify );
|
||
m_B_GetMsg.EnableWindow( bModify );
|
||
m_B_Memo.EnableWindow(bModify);
|
||
m_B_NickName.EnableWindow(bModify);
|
||
m_B_Name.EnableWindow(bModify);
|
||
m_B_Flash.EnableWindow(bModify);
|
||
m_B_New.EnableWindow(bModify);
|
||
m_B_New2.EnableWindow(bModify);
|
||
m_L_lInterval.EnableWindow(bModify);
|
||
m_B_Task.EnableWindow(bModify);
|
||
|
||
|
||
|
||
if ( m_pMainFrame->m_Ans_Login2.lLongSmsType==0 )
|
||
{
|
||
m_B_LongSms.EnableWindow(bModify);
|
||
}
|
||
if ( m_pMainFrame->m_Ans_Login2.lLongSmsType==1 )
|
||
{
|
||
m_B_FD.EnableWindow(false); //如果强制了使用长短信,则不能使用分段了
|
||
}
|
||
else
|
||
{
|
||
m_B_FD.EnableWindow(bModify);
|
||
}
|
||
|
||
if ( !m_pMainFrame->GetUserPurview( PURVIEW_SENDP , false ) )
|
||
{
|
||
m_E_Num.EnableWindow( false ); //没有发送私人电话本的权限
|
||
m_B_Add.EnableWindow( false );
|
||
}
|
||
}
|
||
|
||
int DLG_Send::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||
{
|
||
if (CDialog::OnCreate(lpCreateStruct) == -1)
|
||
return -1;
|
||
|
||
m_UserDrop.Register(this);
|
||
|
||
return 0;
|
||
}
|
||
|
||
LRESULT DLG_Send::OnDrop(WPARAM wParam, LPARAM lParm)
|
||
{
|
||
if ( m_lBoxType== 1 ) //已发列表不能编辑
|
||
{
|
||
MessageBox( _T("对不起,已发的列表不能再添加发送号码!") , _T("错误") , MB_ICONWARNING );
|
||
return false;
|
||
}
|
||
// if ( !m_pMainFrame->GetUserPurview(PURVIEW_SENDG) )
|
||
// return false;
|
||
|
||
COleDataObject * pData = (COleDataObject *)wParam;
|
||
|
||
UINT iCF = ::RegisterClipboardFormat( _T("CORPSMS_USER") );
|
||
if( pData->IsDataAvailable( iCF ) )
|
||
{
|
||
HGLOBAL hMem = pData->GetGlobalData( iCF );
|
||
BYTE * lp = (BYTE *)GlobalLock((HGLOBAL) hMem);//lock source
|
||
if (lp != NULL)
|
||
{
|
||
long lCount = *(long *)lp;
|
||
Send_User * pUser = (Send_User *)(lp+sizeof(long));
|
||
if (m_B_Task.GetCheck() && CString(pUser[0].szGroup) != CString(_T("公用通讯录")))
|
||
{
|
||
long lItem = m_wndList.GetItemCount();
|
||
if (lItem + lCount> 100)
|
||
{
|
||
MessageBox(_T("当前为任务模式,最多只允许添加100个号码,超出的将会被丢弃!\r\n如需发送私人通讯录数据,建议使用普通模式。"), _T("警告"), MB_ICONWARNING);
|
||
lCount = 100 - lItem;
|
||
if (lCount < 0) lCount = 0;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
m_wndList.ShowWindow( SW_HIDE ); //加快显示速度
|
||
for ( int i = 0 ; i<lCount;i++ )
|
||
{
|
||
if ( i==0 && CString(pUser[i].szNickName)==CString(_T("任务号码组")) && CString(pUser[i].szGroup)==CString(_T("公用通讯录")) )
|
||
{
|
||
if ( m_B_Task.GetCheck() )
|
||
{
|
||
AddUser( pUser[i] );
|
||
break;
|
||
}
|
||
else
|
||
{
|
||
pUser ++;
|
||
continue; //跳过
|
||
}
|
||
}
|
||
AddUser(*pUser);
|
||
pUser ++;
|
||
}
|
||
m_wndList.ShowWindow( SW_SHOW ); //加快显示速度
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
}
|
||
GlobalUnlock( hMem );//unlock source
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
return true;
|
||
}
|
||
|
||
BOOL DLG_Send::List_AddUser(long lCount, Send_User *pUser)
|
||
{
|
||
if ( m_B_ReMobile.GetCheck() && lCount>MAX_SENDLIST_NOTIP )
|
||
{
|
||
int iRet = MessageBox( _T("准备添加的记录数过大,是否需要判断重复号码?\r\n注:如果需要判断,则添加速度较慢,但可以排除重复号码。") , _T("信息") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
|
||
if ( iRet != IDYES )
|
||
m_B_ReMobile.SetCheck(false);
|
||
}
|
||
|
||
if ( m_lBoxType == 1 ) //如果是查看已发短信,直接新建新的短信列表
|
||
List_New();
|
||
|
||
if (m_B_Task.GetCheck())
|
||
{
|
||
long lItem = m_wndList.GetItemCount();
|
||
if (lItem + lCount > 100)
|
||
{
|
||
MessageBox(_T("当前为任务模式,最多只允许添加100个号码,超出的将会被丢弃!\r\n如需发送私人通讯录数据,建议使用普通模式。"), _T("警告"), MB_ICONWARNING);
|
||
lCount = 100 - lItem;
|
||
if (lCount < 0) lCount = 0;
|
||
}
|
||
}
|
||
|
||
m_wndList.ShowWindow( SW_HIDE ); //加快显示速度
|
||
for ( int i = 0 ; i< lCount ; i++ )
|
||
{
|
||
AddUser( pUser[i] );
|
||
}
|
||
m_wndList.ShowWindow( SW_SHOW ); //加快显示速度
|
||
RefreshListCount(); //刷新显示列表上的记录计数
|
||
|
||
return true;
|
||
}
|
||
|
||
BOOL DLG_Send::IsSend()
|
||
{
|
||
if ( m_bSend )
|
||
{
|
||
MessageBox( _T("正在发送短信中,此操作无效!") , _T("错误") , MB_ICONWARNING );
|
||
}
|
||
return m_bSend;
|
||
}
|
||
|
||
void DLG_Send::OnSendStart()
|
||
{
|
||
CString str ;
|
||
long lMaxMsgLen = m_pMainFrame->GetMaxSendMsgLen(); //取允许的最大字符数
|
||
if ( m_bSend ) //在发,现停止
|
||
{
|
||
this->SetWindowText( _T("短信发送列表") ); //恢复默认提示信息
|
||
m_B_Start.SetUnSelToolTip( _T("立即发送") );
|
||
m_B_Start.ActiveToolTip( true );
|
||
m_B_Start.SetUnSelBmp( IDB_B_START );
|
||
m_B_Start.Invalidate();
|
||
m_bSend=false; //不在发送
|
||
if ( m_lBoxType == 1 ) //发送完成
|
||
{
|
||
EnableModifyWindow( false ); //不可修改
|
||
m_B_New.EnableWindow(true); //新建与重发是可以的。
|
||
m_B_New2.EnableWindow(true); //新建与重发是可以的。
|
||
}
|
||
else
|
||
{
|
||
//未发送完成,用户手动停止
|
||
EnableModifyWindow( true ); //还可修改
|
||
|
||
m_B_New.EnableWindow(true); //新建与重发是可以的。
|
||
m_B_New2.EnableWindow(true); //新建与重发是可以的。
|
||
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
TCHAR szMsg[1024]={0};
|
||
m_E_Msg.GetWindowText( szMsg , sizeof(szMsg) );
|
||
if ( _tcslen(szMsg) <=0 ) //内容不能为空
|
||
{
|
||
MessageBox(_T("输入的短信内容不能为空!"),_T("错误"),MB_ICONWARNING);
|
||
m_E_Msg.SetFocus();
|
||
return ;
|
||
}
|
||
ExChar( szMsg , _T("\r") ); //去除,防多行
|
||
ExChar( szMsg , _T("\1") ); //去除,防多行
|
||
|
||
m_bNoSupperWord=false;
|
||
if ( bNoSupperWord(szMsg , str) )
|
||
{
|
||
CString str2;
|
||
str2.Format( _T("短信内容含有部分手机或地区不支持的字符:%s。\r\n建议修改或先单发测试!是否继续发送?") , str);
|
||
long lRet = MessageBox( str2, _T("提问") , MB_ICONQUESTION|MB_YESNO );
|
||
if ( lRet != IDYES )
|
||
return ;
|
||
|
||
m_bNoSupperWord=true;
|
||
}
|
||
|
||
/*
|
||
|
||
//判断内容是否超长
|
||
long lMsgAll=0;
|
||
long lMsgIndex = 1;
|
||
TCHAR szTemp[1024]={0};
|
||
//if ( isChinese( szMsg,_tcslen(szMsg) ) )
|
||
//{
|
||
GetSpiltUnicodeMsg( szMsg , szTemp , lMsgIndex , lMaxMsgLen ,lMsgAll);
|
||
//}
|
||
//else
|
||
//{
|
||
// GetSpiltAsciiMsg( szMsg , szTemp , lMsgIndex , lMaxMsgLen*2+lMaxMsgLen*2/7 ,lMsgAll);
|
||
//}
|
||
if ( lMsgAll > 1 )
|
||
*/
|
||
if ( m_lPage >1 && !m_B_LongSms.GetCheck() && !m_B_FD.GetCheck() )
|
||
{
|
||
//_stprintf(szTemp,_T("短信内容过长,将会被分成%d段发送,是否继续?") ,lMsgAll );
|
||
str = _T("短信内容将要被拆分多段发送,需按实际条数进行扣费,是否继续?");
|
||
long lRet = MessageBox( str, _T("提问") , MB_ICONQUESTION|MB_YESNO );
|
||
if ( lRet != IDYES )
|
||
return ;
|
||
}
|
||
|
||
if ( !List_Save(true) ) //保存失败,返回
|
||
return;
|
||
|
||
|
||
#ifdef SUPPER_IM_MAS
|
||
if ( Mas_Enable() ) //是否启用Mas
|
||
{
|
||
if ( !Mas_Init() ) //是否已初始化Mas
|
||
return ;
|
||
}
|
||
m_Mas_MobsetEnd=false; //短信易是否发完
|
||
m_Mas_MasEnd=false; //Mas是否发完
|
||
m_Mas_SendOK = 0;
|
||
#endif
|
||
|
||
m_bSend = true; //开始发送
|
||
EnableModifyWindow( false ); //因为发送可以修改
|
||
m_B_Start.SetUnSelToolTip( _T("停止发送") );
|
||
m_B_Start.ActiveToolTip( true );
|
||
m_B_Start.SetUnSelBmp( IDB_B_STOP );
|
||
m_B_Start.Invalidate();
|
||
m_B_Start.EnableWindow( true ); //允许用户手动停止发送
|
||
|
||
|
||
m_lSendIndex = 0;
|
||
m_lSendOK = 0;
|
||
m_bShowFiltWarning = true; //允许显示过滤警告
|
||
m_bShowFiltFirst = true; //第一次显示过滤警告
|
||
m_bFilt = false; //是否含有过滤关键字
|
||
m_bFiltOver = false; //是否需要过量审核
|
||
m_dwBackCount=0; //黑名单数量
|
||
m_dwNoSupCount=0; //不支持号码数量
|
||
m_dwNoMsgCount=0; //没内容数量
|
||
memset( m_szSendMsg , 0 , sizeof(m_szSendMsg) ); //还没发送,没有发送内容
|
||
|
||
//记录发送间隔
|
||
m_lInterval = 0;
|
||
m_L_lInterval.GetWindowText(str);
|
||
m_lInterval = _ttol(str);
|
||
|
||
//判断是否需要通知管理员,此用户发送大于限定值的短信
|
||
long lCount = m_wndList.GetItemCount();
|
||
if ( m_B_Task.GetCheck() )
|
||
{
|
||
//以下为发送批量短信
|
||
long lSize = sizeof(REQ_PLTaskSms_Add) + sizeof(ANS_PLTaskSms_AddData)*lCount;
|
||
BYTE * pData = new BYTE[lSize];
|
||
memset(pData , 0 , lSize );
|
||
REQ_PLTaskSms_Add * pAdd = (REQ_PLTaskSms_Add *)pData;
|
||
ANS_PLTaskSms_AddData * pAddData = (ANS_PLTaskSms_AddData *)(pData+sizeof(REQ_PLTaskSms_Add));
|
||
|
||
pAdd->lCorpID = this->m_pMainFrame->m_lCorpID;
|
||
pAdd->lUserID = this->m_pMainFrame->m_lUserID;
|
||
_tcscpy(pAdd->szMsg , szMsg );
|
||
pAdd->tTimer = m_tTimer;
|
||
pAdd->lLongSms = m_B_LongSms.GetCheck();
|
||
pAdd->lFD = m_B_FD.GetCheck();
|
||
|
||
pAdd->lCount = lCount; //项目数量
|
||
pAdd->lMobileCount = 0; //号码数量
|
||
|
||
|
||
CString str;
|
||
for ( int i=0 ;i<lCount ; i++ )
|
||
{
|
||
m_wndList.GetItemText(i , 0 , pAddData->szMobileName , sizeof(pAddData->szMobileName) );
|
||
str = m_wndList.GetItemText(i, 1);
|
||
pAddData->lType = 0; //普通号码
|
||
if ( str == CString(_T("任务号码组")) )
|
||
{
|
||
str = m_wndList.GetItemText(i, 4);
|
||
if ( str == CString(_T("号码文件")) )
|
||
{
|
||
pAddData->lType = 1; //号码文件
|
||
}
|
||
if ( str == CString(_T("公用通讯录")) )
|
||
{
|
||
pAddData->lType = 2; //公用通讯录
|
||
}
|
||
}
|
||
if ( pAddData->lType == 0 )
|
||
m_wndList.GetItemText(i , 2 , pAddData->szMobileID , sizeof(pAddData->szMobileID) ); //号码
|
||
else
|
||
m_wndList.GetItemText(i , 5 , pAddData->szMobileID , sizeof(pAddData->szMobileID) ); //号码
|
||
|
||
if ( pAddData->lType==0 )
|
||
{
|
||
pAddData->lMobileCount = 1;
|
||
}
|
||
else
|
||
{
|
||
str = m_wndList.GetItemText(i, 2);
|
||
pAddData->lMobileCount = _ttol(str);
|
||
}
|
||
pAdd->lMobileCount += pAddData->lMobileCount;
|
||
pAddData ++;
|
||
}
|
||
//判断过滤关键字
|
||
if ( !bFilt( szMsg , pAdd->lMobileCount ) ) //过滤信息
|
||
{
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart(); //停止
|
||
}
|
||
delete pData;
|
||
return ;
|
||
}
|
||
pAdd->lFilt = m_bFilt;
|
||
_tcscpy(pAdd->szFiltWord , m_strFiltWord );
|
||
pAdd->lUserAudit =0; //是否需要用户审核
|
||
if ( m_pMainFrame->GetUserPurview(PURVIEW_PL_AUDIT,false) && !m_pMainFrame->GetUserPurview(PURVIEW_PL_VERIFY,false)) //需审核,但他不是审核者,就需要先审核后发送
|
||
pAdd->lUserAudit =1;
|
||
|
||
|
||
m_pMainFrame->SendFrame(SMSFUNC_PLTASKSMS_ADD , pData , lSize);
|
||
|
||
|
||
m_dwSendStartTime = GetTickCount();
|
||
}
|
||
else
|
||
{
|
||
//以下为发送短信
|
||
if ( _tcscmp(m_szMsg,m_szMsgEndFilt) ) //两信息不同时,检查是否需要通知管理员客户发送了大量信息。
|
||
{
|
||
if ( m_pMainFrame->m_Ans_Login.lFiltStep>0 )
|
||
{
|
||
long lFiltCount = m_pMainFrame->m_Ans_Login.lFiltStep;
|
||
if ( m_pMainFrame->m_Ans_Login.lOverBegin>=0 && m_pMainFrame->m_Ans_Login.lOverEnd>=0 && m_pMainFrame->m_Ans_Login.lOverPercent>=0 )
|
||
{
|
||
SYSTEMTIME t;GetLocalTime(&t);
|
||
if ( t.wHour < m_pMainFrame->m_Ans_Login.lOverBegin || t.wHour > m_pMainFrame->m_Ans_Login.lOverEnd )
|
||
{
|
||
if ( m_pMainFrame->m_Ans_Login.lOverPercent>0 )
|
||
lFiltCount = lFiltCount*m_pMainFrame->m_Ans_Login.lOverPercent/10;
|
||
}
|
||
}
|
||
if ( lFiltCount<=lCount )
|
||
{
|
||
_tcscpy(m_szMsgEndFilt,m_szMsg);
|
||
REQ_FiltStep * pStep = new REQ_FiltStep;
|
||
memset(pStep , 0 , sizeof(REQ_FiltStep));
|
||
pStep->lCorpID = m_pMainFrame->m_lCorpID;
|
||
pStep->lUserID = m_pMainFrame->m_lUserID;
|
||
pStep->lSendCount=lCount; //发送数据
|
||
memcpy( pStep->szLoginName , m_pMainFrame->m_pCurUser->szUser,15);
|
||
memcpy(pStep->szMsg , szMsg , sizeof(TCHAR)*480 );
|
||
CString strCM;
|
||
BOOL bCMFirst = m_pMainFrame->GetQJCM(strCM);
|
||
_tcscat(pStep->szMsg,strCM);
|
||
|
||
//_tcscpy(pStep->szMsg , szMsg );
|
||
m_pMainFrame->SendFrame( SMSFUNC_FILTSTEP , (BYTE*)pStep , sizeof(REQ_FiltStep) );
|
||
|
||
if ( m_pMainFrame->m_Ans_Login.lOverFilt )
|
||
{
|
||
m_bFiltOver = true;
|
||
|
||
//MessageBox( _T("由于你提交的短信数量过多,需要管理员审核后才能真正发送!"),_T("提示信息"),MB_ICONINFORMATION);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
m_bFiltOver = true;
|
||
}
|
||
if ( m_B_SaveSendLog.GetCheck() && lCount>MAX_SENDLIST_NOTIP )
|
||
{
|
||
int iRet = MessageBox( _T("准备发送的记录数过大,是否记录发送日志?\r\n注:记录发送日志的速度稍慢,但可以根据日志查询状态。") , _T("信息") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
|
||
if ( iRet != IDYES )
|
||
m_B_SaveSendLog.SetCheck(false);
|
||
}
|
||
//判断是否为点对点短信,采用哪种方式进行发送
|
||
m_bOneToOne=false;
|
||
CString csTemp = m_szMsg;
|
||
CString strCM;
|
||
BOOL bCMFirst = m_pMainFrame->GetQJCM(strCM);
|
||
csTemp.Replace( strCM , _T("") ); //删除短信中原有的强制签名,重新生成过
|
||
_tcscpy(m_szMsg,csTemp);
|
||
m_bOneToOne = csTemp.Find( _T("\"%Name%\""))>=0;
|
||
m_bOneToOne = m_bOneToOne || csTemp.Find( _T("\"%NickName%\""))>=0;
|
||
m_bOneToOne = m_bOneToOne || csTemp.Find( _T("\"%Memo%\""))>=0;
|
||
|
||
if ( !m_bFiltOver && !bFilt( m_szMsg ) ) //过滤信息
|
||
{
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart(); //停止
|
||
}
|
||
return ;
|
||
}
|
||
m_dwSendStartTime = GetTickCount();
|
||
SetTimer( 10 , 200 , NULL ); //启动发送
|
||
// SendNextSms();
|
||
}
|
||
}
|
||
}
|
||
|
||
void DLG_Send::SendNextSms()
|
||
{
|
||
long lMaxOneSendMobile=100; //每次最多发送的号码
|
||
long lMaxOneSendMsg=1020; //每次最多发送的短信内容长度
|
||
long lCMLen=0;
|
||
long lMaxMsgLen_LongSms=0;
|
||
long lMaxMsgLen = m_pMainFrame->GetMaxSendMsgLen(); //取允许的最大字符数
|
||
if ( m_B_LongSms.GetCheck() ) //长短信
|
||
{
|
||
lMaxMsgLen_LongSms = m_pMainFrame->GetMaxSendMsgLen_longSms(lCMLen); //长短信的最大字符数
|
||
}
|
||
CString strCM;
|
||
BOOL bCMFirst = m_pMainFrame->GetQJCM(strCM);
|
||
long lMaxSendCount = 10;
|
||
long lSpeed = m_pMainFrame->m_Setup.lSendSpeed;
|
||
if ( lSpeed <= 0 )
|
||
lMaxSendCount = 1;
|
||
if ( lSpeed == 1 )
|
||
lMaxSendCount = 5;
|
||
if ( lSpeed > 1 )
|
||
lMaxSendCount = 10 +(lSpeed-2)*10;
|
||
|
||
if ( lMaxSendCount>lMaxOneSendMobile )
|
||
{
|
||
MessageBox(_T("发送异常1,请与管理员联系!") , _T("错误") , MB_ICONWARNING );
|
||
return ;
|
||
}
|
||
|
||
if ( m_pMobileMsg == NULL ) //手机号码的分段
|
||
{
|
||
m_pMobileMsg = new CStringArray();
|
||
if ( m_pMobileMsg )
|
||
m_pMobileMsg->SetSize(lMaxOneSendMobile);
|
||
}
|
||
if ( m_pSendData == NULL )
|
||
{
|
||
m_pSendData = new REQ_SendData3[lMaxOneSendMobile];
|
||
}
|
||
if ( !m_pMobileMsg || !m_pSendData )
|
||
{
|
||
MessageBox(_T("发送异常2,请与管理员联系!") , _T("错误") , MB_ICONWARNING );
|
||
return ;
|
||
|
||
}
|
||
for ( int i=0 ; i<lMaxOneSendMobile; i++ )
|
||
m_pMobileMsg->SetAt(i,CString(_T("")));
|
||
memset(m_pSendData , 0 , sizeof(REQ_SendData3)*lMaxOneSendMobile);
|
||
|
||
|
||
REQ_Send3 send={0};
|
||
m_lSendRand = rand();
|
||
send.lRand = m_lSendRand;
|
||
send.bCMFirst = bCMFirst;
|
||
send.lCorpID = m_pMainFrame->m_lCorpID;
|
||
send.lUserID = m_pMainFrame->m_lUserID;
|
||
send.bLong = m_B_LongSms.GetCheck();
|
||
send.bFD = m_B_FD.GetCheck();
|
||
send.lMaxMsgLen = lMaxMsgLen;
|
||
send.lMaxMsgLen_long = lMaxMsgLen_LongSms;
|
||
send.bCMFirst = bCMFirst;
|
||
_tcscpy(send.szCM , strCM);
|
||
send.lMsgLen = 0;
|
||
if ( !m_bOneToOne )
|
||
send.lMsgLen = (_tcslen(m_szMsg)+1)*sizeof(TCHAR); //内容长度
|
||
|
||
long lCount = m_wndList.GetItemCount();
|
||
long lSendCount = 0;
|
||
long lGet = 0;
|
||
for ( ; m_lSendIndex<lCount && lGet<lMaxSendCount ; m_lSendIndex++ )
|
||
{
|
||
Send_User user = GetUser(m_lSendIndex,true);
|
||
//未发或提交失败的重发
|
||
if ( (user.szStatus[0] == '0' || user.szStatus[0] == '2') && !Mas_MobileIsSend(user.szMobile) ) //未发送成功的,都要发送
|
||
{
|
||
CString strSendMsg = m_szMsg;
|
||
if ( m_bOneToOne ) //点对点的短信
|
||
{
|
||
//找到应发送的记录,开始发送
|
||
if ( _tcslen(user.szName)<=0)
|
||
strSendMsg.Replace( _T("\"%Name%\"") , m_pMainFrame->m_Setup.szDEF_Name ); //替换姓名
|
||
else
|
||
strSendMsg.Replace( _T("\"%Name%\"") , user.szName ); //替换姓名
|
||
if ( _tcslen(user.szNickName)<=0)
|
||
strSendMsg.Replace( _T("\"%NickName%\"") , m_pMainFrame->m_Setup.szDEF_NickName ); //替换姓名
|
||
else
|
||
strSendMsg.Replace( _T("\"%NickName%\"") , user.szNickName ); //替换昵称
|
||
if ( _tcslen(user.szBZ)<=0)
|
||
strSendMsg.Replace( _T("\"%Memo%\"") , m_pMainFrame->m_Setup.szDEF_BZ ); //替换姓名
|
||
else
|
||
strSendMsg.Replace( _T("\"%Memo%\"") , user.szBZ ); //替换备注
|
||
TCHAR szFalsh[8]={0};
|
||
szFalsh[0] = 01;
|
||
//strSendMsg.Replace( _T("\"%^%\"") , szFalsh ); //替换闪烁符
|
||
|
||
if ( !m_bFiltOver && !bFilt( strSendMsg ) ) //过滤信息
|
||
{
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart(); //停止
|
||
}
|
||
return ;
|
||
}
|
||
}
|
||
//看是否为黑名单
|
||
if ( isBack(user.szMobile) )
|
||
{
|
||
m_wndList.SetItemText( m_lSendIndex , 3 , _T("提交失败") );
|
||
m_dwBackCount++; //黑名单数量
|
||
continue;
|
||
}
|
||
if ( strSendMsg.GetLength()<=0 )
|
||
{
|
||
m_wndList.SetItemText( m_lSendIndex , 3 , _T("提交失败") );
|
||
m_dwNoMsgCount++; //内容为空
|
||
continue;
|
||
}
|
||
m_pMobileMsg->SetAt(lSendCount,strSendMsg); //保存信息
|
||
|
||
//计算生日定时短信
|
||
if ( m_bSendSR )
|
||
{
|
||
SYSTEMTIME t;::GetSystemTime(&t);
|
||
m_tTimer.wYear = t.wYear;
|
||
m_tTimer.wMonth = (WORD)_ttol(user.szBZ);
|
||
m_tTimer.wDay = (WORD)_ttol(user.szBZ+3);
|
||
|
||
//判断生日是否已过,如果已过,下年再提醒
|
||
long lNow=t.wMonth*100+t.wDay;
|
||
long lSR =m_tTimer.wMonth*100+m_tTimer.wDay;
|
||
if ( lSR<lNow )
|
||
m_tTimer.wYear=m_tTimer.wYear+1;
|
||
}
|
||
|
||
if ( m_bFiltOver || m_bFilt )
|
||
m_pSendData[lSendCount].lStatus = SEND_STATUS_SUB_FILT; //需要审核
|
||
m_pSendData[lSendCount].lItem = m_lSendIndex;
|
||
m_pSendData[lSendCount].lItemID = user.lItemID; //ItemID;
|
||
m_pSendData[lSendCount].tTimer = m_tTimer; //定时间
|
||
BreakChar(user.szName,23); //限制字数
|
||
BreakChar(user.szMobile,23); //限制字数
|
||
_tcscpy( m_pSendData[lSendCount].szName , user.szName );
|
||
_tcscpy( m_pSendData[lSendCount].szMobile , user.szMobile);
|
||
m_pSendData[lSendCount].lMsgLen = 0;
|
||
if ( m_bOneToOne )
|
||
{
|
||
m_pSendData[lSendCount].lMsgLen = (_tcslen(strSendMsg)+1)*sizeof(TCHAR); //内容长度
|
||
}
|
||
|
||
lSendCount ++; //记录号加1
|
||
lGet++;
|
||
}
|
||
}
|
||
|
||
if ( lSendCount <= 0 ) //短信发送完成
|
||
{
|
||
long lSendAll=m_lSendOK; //发送总数
|
||
#ifdef SUPPER_IM_MAS
|
||
lSendAll += m_Mas_SendOK; //发送总数加上Mas发送数
|
||
m_Mas_MobsetEnd = true;
|
||
if ( !Mas_Enable() || m_Mas_MasEnd ) //mas的已发送完成
|
||
{
|
||
#endif
|
||
//短信发送完成
|
||
m_lBoxType = 1 ; //因为发送完成,列表的格式为已发
|
||
List_Save(true); //保存
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart(); //停止
|
||
}
|
||
CString strMsg;
|
||
strMsg.Format( _T("短信发送完成,成功提交%d个号码!用时%d秒。%s") , lSendAll,(::GetTickCount()-m_dwSendStartTime)/1000,GetOtherSendRetMsg() );
|
||
MessageBox( strMsg , _T("信息") , MB_ICONASTERISK );
|
||
RefreshStatusAndLog();
|
||
#ifdef SUPPER_IM_MAS
|
||
}
|
||
#endif
|
||
return ;
|
||
}
|
||
|
||
send.lCount = lSendCount;
|
||
|
||
//发出指令,发送
|
||
long lSize = sizeof(REQ_Send3)+send.lMsgLen + sizeof(REQ_SendData3)*lSendCount;
|
||
if ( m_bOneToOne ) //加上每条短信的内容长度
|
||
{
|
||
for ( int i=0 ; i<lSendCount ; i++ )
|
||
{
|
||
lSize = lSize + m_pSendData[i].lMsgLen;
|
||
}
|
||
}
|
||
BYTE * pData = new BYTE[lSize];
|
||
memset(pData , 0 , lSize);
|
||
REQ_Send3 * pSendSend = (REQ_Send3 *)pData;
|
||
BYTE * pDataSend = pData + sizeof(REQ_Send3);
|
||
*pSendSend = send;
|
||
if (send.lMsgLen >0 )
|
||
{
|
||
_tcscpy((TCHAR*)pDataSend , m_szMsg);
|
||
pDataSend += send.lMsgLen;
|
||
}
|
||
for ( int i=0 ; i<lSendCount; i++ )
|
||
{
|
||
memcpy(pDataSend , &m_pSendData[i] , sizeof(REQ_SendData3 ) );
|
||
pDataSend += sizeof(REQ_SendData3);
|
||
if ( m_bOneToOne )
|
||
{
|
||
_tcscpy((TCHAR*)pDataSend , m_pMobileMsg->GetAt(i));
|
||
pDataSend += m_pSendData[i].lMsgLen;
|
||
}
|
||
}
|
||
|
||
TCHAR szBuf[128]={0};
|
||
_stprintf( szBuf , _T("短信发送列表 正在发送... %d/%d") , m_lSendIndex , lCount);
|
||
this->SetWindowText( szBuf );
|
||
|
||
//置状态,防重复提交
|
||
/*
|
||
for ( int i=0 ; i<lSendCount ; i++ ) //置状态,防重复提交
|
||
{
|
||
m_wndList.SetItemText(m_pSendData[i].lItem , 3 , _T("已提交"));
|
||
}
|
||
*/
|
||
|
||
m_pMainFrame->SendFrame( SMSFUNC_SEND3 , pData , lSize );
|
||
SetTimer( 1 , 60000 , NULL ); //超时检测,35秒发不出算超时
|
||
}
|
||
|
||
BOOL DLG_Send::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
|
||
{
|
||
CString str;
|
||
if ( pHead->lFuncType == SMSFUNC_SEND3) //发送短信返回
|
||
{
|
||
KillTimer( 1 ); //不用超时检查了
|
||
ANS_Send3 * pSend = (ANS_Send3 *)pFrame;
|
||
ANS_SendData3 * pSendData = (ANS_SendData3 *)(pFrame+sizeof(ANS_Send3));
|
||
if ( pSend->lCount <= 0 )
|
||
{
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart();
|
||
}
|
||
#ifdef _UNICODE
|
||
str.Format(_T("短信提交出错,错误代码:%d。\r\n%s") , pSend->lCount,pSend->szErrMsg );
|
||
#else
|
||
str.Format(_T("短信提交出错,错误代码:%d。") , pSend->lCount );
|
||
#endif
|
||
MessageBox(str , _T("错误") , MB_ICONWARNING );
|
||
RefreshStatusAndLog();
|
||
return true;
|
||
}
|
||
if ( pSend->lRand != this->m_lSendRand || //随机数不同
|
||
pSend->lCorpID != this->m_pMainFrame->m_lCorpID ||
|
||
pSend->lUserID != this->m_pMainFrame->m_lUserID ) //非自己提交的短信,不显示
|
||
{
|
||
return true;
|
||
}
|
||
for ( int i = 0 ; i< pSend->lCount ; i ++ )
|
||
{
|
||
TCHAR szStatus[2]={0};
|
||
if ( pSendData->lItem>=0 )
|
||
{
|
||
//将结果写到列表
|
||
if ( pSendData->lStatus == SEND_STATUS_SUB_OK || pSendData->lStatus == SEND_STATUS_SUB_FILT )
|
||
{
|
||
m_wndList.SetItemText( pSendData->lItem , 3 , _T("提交成功") );
|
||
szStatus[0] = '1' ; //提交成功
|
||
m_lSendOK ++; //提交成功计数
|
||
}
|
||
else
|
||
{
|
||
m_wndList.SetItemText( pSendData->lItem , 3 , _T("提交失败") );
|
||
szStatus[0] = '2' ; //提交失败
|
||
if ( pSendData->lStatus != SEND_STATUS_SUB_NUMNOSUP ) //如果返回不是联通的号码,则不继续发送
|
||
{
|
||
CString strMsg;
|
||
switch (pSendData->lStatus)
|
||
{
|
||
case SEND_STATUS_SUB_USERNOSMS:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d个号码!\r\n错误原因:你的短信可用量不足,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() );
|
||
break;
|
||
case SEND_STATUS_SUB_CORPNOSMS:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d个号码!\r\n错误原因:企业的短信可用量不足,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
break;
|
||
case SEND_STATUS_SUB_CORPOVRDATE:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d个号码!\r\n错误原因:企业已过期,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
break;
|
||
case SEND_STATUS_OVERCOUNT:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d个号码!\r\n错误原因:已超当天最大发送量,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
break;
|
||
case SEND_STATUS_NOSY:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d个号码!\r\n错误原因:此帐号不支持深夜发送短信,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
break;
|
||
default:
|
||
#ifdef _UNICODE
|
||
strMsg.Format( _T("提交短信失败,共已发送%d个号码!\r\n错误原因:%s\r\n%s"),m_lSendOK,pSend->szErrMsg,GetOtherSendRetMsg() ) ;
|
||
#else
|
||
strMsg.Format( _T("提交短信失败,共已发送%d个号码!\r\n错误原因:原因未明,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
#endif
|
||
|
||
break;
|
||
}
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart();
|
||
}
|
||
MessageBox( strMsg , _T("错误") , MB_ICONWARNING );
|
||
RefreshStatusAndLog();
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
m_dwNoSupCount++; //不支持号码数量
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if ( pSendData->lStatus == SEND_STATUS_SUB_OK || pSendData->lStatus == SEND_STATUS_SUB_FILT )
|
||
{
|
||
szStatus[0] = '1' ; //提交成功
|
||
}
|
||
else
|
||
{
|
||
szStatus[0] = '2' ; //提交失败
|
||
}
|
||
}
|
||
|
||
//将结果插入队列,由线程写入数据库
|
||
SaveItemStatus * pStatus = new SaveItemStatus;
|
||
memset(pStatus , 0 , sizeof(SaveItemStatus));
|
||
pStatus->lSendID = pSendData->lSendID;
|
||
_tcscpy(pStatus->szStatus , szStatus );
|
||
pStatus->lItemID = pSendData->lItemID;
|
||
pStatus->lStatus = pSendData->lStatus;
|
||
pStatus->lKF = pSendData->lKF;
|
||
_tcscpy(pStatus->szSendNum,pSendData->szSendNum);
|
||
_tcscpy(pStatus->szName,m_pSendData[i].szName);
|
||
_tcscpy(pStatus->szMsg,m_pMobileMsg->GetAt(i));
|
||
_tcscpy(pStatus->szMobile,m_pSendData[i].szMobile);
|
||
m_SaveItemStatus.AddTail(pStatus);
|
||
|
||
/*
|
||
//将结果写到数据库
|
||
CString str;
|
||
str.Format(_T("update smsitem set SendID=%d , Status='%s' where ItemID=%d ") , pSendData->lSendID , szStatus , pSendData->lItemID );
|
||
m_AdoRS.Open( str );
|
||
*/
|
||
/*
|
||
if ( m_B_SaveSendLog.GetCheck() )
|
||
{
|
||
CString strName = pSendData->szName;
|
||
CString strMsg = pSendData->szMsg;
|
||
strName.Replace( _T("'"),_T("''"));
|
||
strMsg.Replace( _T("'"),_T("''"));
|
||
|
||
str.Format(_T("insert into smslog (SendID,SendNum,Recver,RecvNum,Msg,Status,SubTime) values (%d,'%s','%s','%s','%s',%d,now())"),
|
||
pSendData->lSendID,pSendData->szSendNum,strName,pSendData->szMobile,strMsg,pSendData->lStatus);
|
||
m_AdoRS.Open( str );
|
||
}
|
||
*/
|
||
|
||
/* //记录发送日志
|
||
b = m_AdoRS.Open( _T("smslog") , adCmdTable );
|
||
if ( b )
|
||
{
|
||
m_AdoRS.AddNew();
|
||
m_AdoRS.PutCollect( _T("SendID") , pSendData->lSendID );
|
||
m_AdoRS.PutCollect( _T("SendNum"), pSendData->szSendNum );
|
||
m_AdoRS.PutCollect( _T("Recver") , pSendData->szName );
|
||
m_AdoRS.PutCollect( _T("RecvNum"), pSendData->szMobile);
|
||
m_AdoRS.PutCollect( _T("Msg") , pSendData->szMsg );
|
||
m_AdoRS.PutCollect( _T("Status") , pSendData->lStatus );
|
||
m_AdoRS.PutCollect( _T("SubTime") , COleDateTime::GetCurrentTime() ); //提交时间,当前
|
||
m_AdoRS.Update();
|
||
m_AdoRS.Close();
|
||
}
|
||
*/
|
||
pSendData ++; //处理下一条
|
||
}
|
||
if ( m_bSend ) //还在发送,可以发送下一条
|
||
SendNextSms();
|
||
|
||
return true;
|
||
}
|
||
if (pHead->lFuncType == SMSFUNC_PLTASKSMS_ADD)
|
||
{
|
||
KillTimer(1); //收到返回,不会超时。
|
||
ANS_PLTaskSms_Add * pSend = (ANS_PLTaskSms_Add *)pFrame;
|
||
if ( pSend->lPLTaskSmsID <= 0 )
|
||
{
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart();
|
||
}
|
||
str.Format( _T("短信任务提交出错,%s。\r\n请转到短信任务刷新验证提交是否成功。") , pSend->szErrMsg);
|
||
MessageBox(str , _T("错误") , MB_ICONWARNING );
|
||
RefreshStatusAndLog();
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
long lCount=m_wndList.GetItemCount();
|
||
for ( int i=0 ; i<lCount ; i++ )
|
||
{
|
||
m_wndList.SetItemText(i , 3 , _T("提交成功") );
|
||
}
|
||
//短信发送完成
|
||
m_lBoxType = 1 ; //因为发送完成,列表的格式为已发
|
||
List_Save(true); //保存
|
||
//str.Format( _T("update SmsBox set Status='1' where BoxID=%d") ,m_lBoxID );
|
||
//m_AdoRS.Open(str);
|
||
//m_AdoRS.Close();
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart(); //停止
|
||
}
|
||
str.Format( _T("短信任务提交完成,用时%d秒。\r\n可转到短信任务中刷新查看状态。") , (::GetTickCount()-m_dwSendStartTime)/1000 );
|
||
MessageBox( str , _T("信息") , MB_ICONASTERISK );
|
||
RefreshStatusAndLog();
|
||
}
|
||
return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
BOOL DLG_Send::ProcessSocket(Socket_Head *pHead)
|
||
{
|
||
CString str;
|
||
if ( pHead->lFuncType == SMSFUNC_SEND2) //发送短信返回
|
||
{
|
||
KillTimer( 1 ); //不用超时检查了
|
||
ANS_Send2 * pSend = (ANS_Send2 *)pHead->pFrame;
|
||
ANS_SendData2 * pSendData = (ANS_SendData2 *)(pHead->pFrame+sizeof(ANS_Send2));
|
||
if ( pSend->lCount <= 0 )
|
||
{
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart();
|
||
}
|
||
#ifdef _UNICODE
|
||
str.Format(_T("短信提交出错,错误代码:%d。\r\n%s") , pSend->lCount,pSend->szErrMsg );
|
||
#else
|
||
str.Format(_T("短信提交出错,错误代码:%d。") , pSend->lCount );
|
||
#endif
|
||
MessageBox(str , _T("错误") , MB_ICONWARNING );
|
||
RefreshStatusAndLog();
|
||
return true;
|
||
}
|
||
if ( pSendData->lCorpID != this->m_pMainFrame->m_lCorpID ||
|
||
pSendData->lUserID != this->m_pMainFrame->m_lUserID ) //非自己提交的短信,不显示
|
||
{
|
||
return true;
|
||
}
|
||
for ( int i = 0 ; i< pSend->lCount ; i ++ )
|
||
{
|
||
TCHAR szStatus[2]={0};
|
||
if ( pSendData->lItem>=0 )
|
||
{
|
||
//将结果写到列表
|
||
if ( pSendData->lStatus == SEND_STATUS_SUB_OK || pSendData->lStatus == SEND_STATUS_SUB_FILT )
|
||
{
|
||
m_wndList.SetItemText( pSendData->lItem , 3 , _T("提交成功") );
|
||
szStatus[0] = '1' ; //提交成功
|
||
m_lSendOK ++; //提交成功计数
|
||
}
|
||
else
|
||
{
|
||
m_wndList.SetItemText( pSendData->lItem , 3 , _T("提交失败") );
|
||
szStatus[0] = '2' ; //提交失败
|
||
if ( pSendData->lStatus != SEND_STATUS_SUB_NUMNOSUP ) //如果返回不是联通的号码,则不继续发送
|
||
{
|
||
CString strMsg;
|
||
switch (pSendData->lStatus)
|
||
{
|
||
case SEND_STATUS_SUB_USERNOSMS:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d条短信!\r\n错误原因:你的短信可用量不足,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() );
|
||
break;
|
||
case SEND_STATUS_SUB_CORPNOSMS:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d条短信!\r\n错误原因:企业的短信可用量不足,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
break;
|
||
case SEND_STATUS_SUB_CORPOVRDATE:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d条短信!\r\n错误原因:企业已过期,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
break;
|
||
case SEND_STATUS_OVERCOUNT:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d条短信!\r\n错误原因:已超当天最大发送量,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
break;
|
||
case SEND_STATUS_NOSY:
|
||
strMsg.Format(_T("提交短信失败,共已发送%d条短信!\r\n错误原因:此帐号不支持深夜发送短信,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
break;
|
||
default:
|
||
#ifdef _UNICODE
|
||
strMsg.Format( _T("提交短信失败,共已发送%d条短信!\r\n错误原因:%s\r\n%s"),m_lSendOK,pSend->szErrMsg,GetOtherSendRetMsg() ) ;
|
||
#else
|
||
strMsg.Format( _T("提交短信失败,共已发送%d条短信!\r\n错误原因:原因未明,请与系统管理员联系!\r\n%s"),m_lSendOK,GetOtherSendRetMsg() ) ;
|
||
#endif
|
||
|
||
break;
|
||
}
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart();
|
||
}
|
||
MessageBox( strMsg , _T("错误") , MB_ICONWARNING );
|
||
RefreshStatusAndLog();
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
m_dwNoSupCount++; //不支持号码数量
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if ( pSendData->lStatus == SEND_STATUS_SUB_OK || pSendData->lStatus == SEND_STATUS_SUB_FILT )
|
||
{
|
||
szStatus[0] = '1' ; //提交成功
|
||
}
|
||
else
|
||
{
|
||
szStatus[0] = '2' ; //提交失败
|
||
}
|
||
}
|
||
|
||
//将结果插入队列,由线程写入数据库
|
||
SaveItemStatus * pStatus = new SaveItemStatus;
|
||
memset(pStatus , 0 , sizeof(SaveItemStatus));
|
||
pStatus->lSendID = pSendData->lSendID;
|
||
_tcscpy(pStatus->szStatus , szStatus );
|
||
pStatus->lItemID = pSendData->lItemID;
|
||
|
||
pStatus->lStatus = pSendData->lStatus;
|
||
_tcscpy(pStatus->szSendNum,pSendData->szSendNum);
|
||
_tcscpy(pStatus->szName,pSendData->szName);
|
||
_tcscpy(pStatus->szMsg,pSendData->szMsg);
|
||
_tcscpy(pStatus->szMobile,pSendData->szMobile);
|
||
m_SaveItemStatus.AddTail(pStatus);
|
||
/*
|
||
//将结果写到数据库
|
||
CString str;
|
||
str.Format(_T("update smsitem set SendID=%d , Status='%s' where ItemID=%d ") , pSendData->lSendID , szStatus , pSendData->lItemID );
|
||
m_AdoRS.Open( str );
|
||
*/
|
||
/*
|
||
if ( m_B_SaveSendLog.GetCheck() )
|
||
{
|
||
CString strName = pSendData->szName;
|
||
CString strMsg = pSendData->szMsg;
|
||
strName.Replace( _T("'"),_T("''"));
|
||
strMsg.Replace( _T("'"),_T("''"));
|
||
|
||
str.Format(_T("insert into smslog (SendID,SendNum,Recver,RecvNum,Msg,Status,SubTime) values (%d,'%s','%s','%s','%s',%d,now())"),
|
||
pSendData->lSendID,pSendData->szSendNum,strName,pSendData->szMobile,strMsg,pSendData->lStatus);
|
||
m_AdoRS.Open( str );
|
||
}
|
||
*/
|
||
|
||
/* //记录发送日志
|
||
b = m_AdoRS.Open( _T("smslog") , adCmdTable );
|
||
if ( b )
|
||
{
|
||
m_AdoRS.AddNew();
|
||
m_AdoRS.PutCollect( _T("SendID") , pSendData->lSendID );
|
||
m_AdoRS.PutCollect( _T("SendNum"), pSendData->szSendNum );
|
||
m_AdoRS.PutCollect( _T("Recver") , pSendData->szName );
|
||
m_AdoRS.PutCollect( _T("RecvNum"), pSendData->szMobile);
|
||
m_AdoRS.PutCollect( _T("Msg") , pSendData->szMsg );
|
||
m_AdoRS.PutCollect( _T("Status") , pSendData->lStatus );
|
||
m_AdoRS.PutCollect( _T("SubTime") , COleDateTime::GetCurrentTime() ); //提交时间,当前
|
||
m_AdoRS.Update();
|
||
m_AdoRS.Close();
|
||
}
|
||
*/
|
||
pSendData ++; //处理下一条
|
||
}
|
||
if ( m_bSend ) //还在发送,可以发送下一条
|
||
SendNextSms();
|
||
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
void DLG_Send::OnTimer(UINT_PTR nIDEvent)
|
||
{
|
||
CDialog::OnTimer(nIDEvent);
|
||
|
||
if ( nIDEvent == 1 )
|
||
{
|
||
KillTimer( 1 );
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart();
|
||
if ( m_pMainFrame->m_Setup.bAutoReSend ) //如果设置了自动重发,则重新发送多一次
|
||
{
|
||
TCHAR szBuf[128]={0};
|
||
_stprintf( szBuf , _T("短信发送列表 提交超时,准备重发!"));
|
||
this->SetWindowText( szBuf );
|
||
Sleep(2000);
|
||
|
||
OnSendStart();
|
||
}
|
||
else
|
||
{
|
||
MessageBox( _T("提交短信超时,请检查网络连接!") , _T("错误") , MB_ICONWARNING );
|
||
}
|
||
return ;
|
||
}
|
||
}
|
||
if ( nIDEvent == 2 )
|
||
{
|
||
KillTimer(nIDEvent);
|
||
#ifdef SUPPER_IM_MAS
|
||
if ( Mas_Enable() ) //是否启用Mas
|
||
{
|
||
Mas_Init();
|
||
}
|
||
#endif
|
||
return;
|
||
}
|
||
|
||
if ( nIDEvent == 10 )
|
||
{
|
||
KillTimer(nIDEvent);
|
||
SendNextSms();
|
||
|
||
#ifdef SUPPER_IM_MAS
|
||
if ( Mas_Enable() ) //是否启用Mas
|
||
{
|
||
::AfxBeginThread((AFX_THREADPROC)Mas_SendT,(LPVOID)this,/*THREAD_PRIORITY_LOWEST*/THREAD_PRIORITY_BELOW_NORMAL);
|
||
}
|
||
#endif
|
||
|
||
return ;
|
||
}
|
||
|
||
}
|
||
|
||
BOOL DLG_Send::bFilt(const TCHAR *pMsg,long lCount2)
|
||
{
|
||
if ( !_tcscmp(m_szMsg,m_szMsgEndFilt) ) //两次审核的短信相同,不用再次审核了
|
||
{
|
||
m_bFilt = true;
|
||
return true;
|
||
}
|
||
BOOL bFilt = false;
|
||
BOOL bSDisable = false;
|
||
CString str = pMsg;
|
||
CString str2;
|
||
long lLen = _tcslen( pMsg );
|
||
TCHAR szWord[30]={0};
|
||
TCHAR szByte[8]={0};
|
||
long lCount = m_wndList.GetItemCount();
|
||
if ( lCount2>=0 )
|
||
lCount = lCount2;
|
||
for ( int i = 0 ; i< m_pMainFrame->m_lFiltCount; i++ )
|
||
{
|
||
if ( m_pMainFrame->m_pFilt[i].lFiltBegin <= lCount && _tcslen(m_pMainFrame->m_pFilt[i].szWord)>0 ) //大于起始点的才开始计算过滤
|
||
{
|
||
_tcscpy( szWord , m_pMainFrame->m_pFilt[i].szWord );
|
||
if ( m_pMainFrame->m_pFilt[i].szFilt[0] == '0' )
|
||
{
|
||
//精确过滤
|
||
//bFilt = FoundChar( pMsg , szWord , lLen );
|
||
//bFilt = FoundChar( pMsg , m_pMainFrame->m_pFilt[i].szWord , lLen );
|
||
if ( str.Find(szWord)>=0 )
|
||
{
|
||
bFilt = true;
|
||
if ( m_bNoSupperWord ) //已提示有不支持的关键字,如果继续发,则敏感字不检查这些内容
|
||
{
|
||
if ( bNoSupperWord(szWord,str2) )
|
||
{
|
||
bFilt = false; //不当作关键字
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//模糊过滤
|
||
long lSplit=1;
|
||
long lSplitCount=0;
|
||
bFilt = true;
|
||
memset( szByte , 0 , sizeof(szByte) );
|
||
while(GetSpiltUnicodeMsg( szWord , szByte , lSplit , 1 , lSplitCount ))
|
||
{
|
||
//if ( !FoundChar( pMsg , szByte, lLen ) )
|
||
if ( str.Find(szByte)<0 )
|
||
{
|
||
bFilt = false;
|
||
break;
|
||
}
|
||
memset( szByte , 0 , sizeof(szByte) );
|
||
lSplit++;
|
||
}
|
||
}
|
||
}
|
||
if ( bFilt ) //有需要过滤的
|
||
{
|
||
bSDisable = m_pMainFrame->m_pFilt[i].bSDisable; //是否为发即死
|
||
break;
|
||
}
|
||
}
|
||
|
||
m_bFilt = bFilt; //记录此信息是否含有过滤关键字
|
||
m_strFiltWord = szWord;
|
||
|
||
if ( m_bShowFiltWarning && bFilt)
|
||
{
|
||
if ( m_bShowFiltFirst ) //第一次出现此信息,通知后台管理员
|
||
{
|
||
m_bShowFiltFirst = false;
|
||
|
||
if (bSDisable || !m_B_Task.GetCheck() ) //任务模式上传任务完成后再通知
|
||
{
|
||
_tcscpy(m_szMsgEndFilt,m_szMsg);
|
||
REQ_FiltWarning * pWarning = new REQ_FiltWarning;
|
||
memset(pWarning , 0 , sizeof(REQ_FiltWarning));
|
||
pWarning->lCorpID = m_pMainFrame->m_lCorpID;
|
||
pWarning->lUserID = m_pMainFrame->m_lUserID;
|
||
pWarning->bSDisable= bSDisable; //是否为发即死
|
||
memcpy( pWarning->szLoginName , m_pMainFrame->m_pCurUser->szUser,15);
|
||
pWarning->lSendCount=lCount; //发送数据
|
||
memcpy(pWarning->szMsg,pMsg,sizeof(TCHAR)*500);
|
||
//_tcscpy(pWarning->szMsg , pMsg );
|
||
_tcscpy(pWarning->szFilt , szWord );
|
||
pWarning->lTask = m_B_Task.GetCheck();
|
||
m_pMainFrame->SendFrame( SMSFUNC_FILTWARNING , (BYTE*)pWarning , sizeof(REQ_FiltWarning) );
|
||
}
|
||
if ( bSDisable )
|
||
{
|
||
MessageBox( _T("由于你发送了重点禁用关键字,你的帐号暂时已被禁用,请与管理员联系!"),_T("错误"),MB_ICONWARNING);
|
||
Sleep(500);
|
||
m_pMainFrame->PostMessage( WM_CLOSE ,0,0); //自动关闭
|
||
return false;
|
||
}
|
||
}
|
||
m_bShowFiltWarning = false;//继续提交,下次不再警告
|
||
/*
|
||
DLG_FiltWarning dlg(this);
|
||
dlg.SetParam( pMsg , szWord );
|
||
dlg.DoModal();
|
||
if ( dlg.GetParam() != 0 )
|
||
{
|
||
if ( dlg.GetParam() == 2 ) //继续提交,下次不再警告
|
||
m_bShowFiltWarning = false;
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
*/
|
||
}
|
||
return true;
|
||
}
|
||
|
||
BOOL DLG_Send::bNoSupperWord(TCHAR *pMsg,CString & strWord)
|
||
{
|
||
|
||
BOOL bFilt = false;
|
||
CString str = pMsg;
|
||
for ( int i = 0 ; i< m_pMainFrame->m_lNoSupperWordCount; i++ )
|
||
{
|
||
if ( str.Find(m_pMainFrame->m_pNoSupperWord[i].szWord)>=0 )
|
||
{
|
||
strWord = m_pMainFrame->m_pNoSupperWord[i].szWord;
|
||
bFilt = true;
|
||
break;
|
||
}
|
||
}
|
||
return bFilt;
|
||
}
|
||
|
||
void DLG_Send::List_SetMsg(TCHAR *pMsg)
|
||
{
|
||
m_E_Msg.SetWindowText( pMsg );
|
||
RefreshTJ(); //刷新显示字数
|
||
}
|
||
|
||
void DLG_Send::OnKeydownSendList(NMHDR* pNMHDR, LRESULT* pResult)
|
||
{
|
||
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
|
||
*pResult = 0;
|
||
|
||
if ( pLVKeyDow->wVKey == VK_DELETE )
|
||
{
|
||
On_User_Del();
|
||
}
|
||
if ( pLVKeyDow->wVKey == VK_INSERT)
|
||
{
|
||
On_User_Add();
|
||
}
|
||
if ( pLVKeyDow->wVKey == VK_SPACE)
|
||
{
|
||
On_User_Modify();
|
||
}
|
||
if ( pLVKeyDow->wVKey == 'S' || pLVKeyDow->wVKey == 's')
|
||
{
|
||
On_User_Status();
|
||
}
|
||
if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r')
|
||
{
|
||
On_User_Status();
|
||
}
|
||
if ( pLVKeyDow->wVKey == 'C' || pLVKeyDow->wVKey == 'c')
|
||
{
|
||
On_User_Clear();
|
||
}
|
||
if ( pLVKeyDow->wVKey == 'I' || pLVKeyDow->wVKey == 'i')
|
||
{
|
||
On_User_Inport();
|
||
}
|
||
if ( pLVKeyDow->wVKey == 'E' || pLVKeyDow->wVKey == 'e')
|
||
{
|
||
On_User_Export();
|
||
}
|
||
|
||
if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a')
|
||
{
|
||
m_wndList.SetItemState(-1, LVIS_SELECTED, LVIS_SELECTED); //全选
|
||
//m_wndList.SelectAllItems();
|
||
}
|
||
}
|
||
|
||
void DLG_Send::RefreshStatusAndLog()
|
||
{
|
||
//再次点击此类项目后刷新
|
||
m_pMainFrame->m_pBaseView->m_dlgSmsDF.m_bRefresh = false;
|
||
m_pMainFrame->m_pBaseView->m_dlgSmsYF.m_bRefresh = false;
|
||
m_pMainFrame->m_pBaseView->m_dlgSmsLog.m_bRefresh = false;
|
||
|
||
/*
|
||
//发送完成,需要刷新列表
|
||
m_pMainFrame->m_pBaseView->m_dlgSmsDF.RefreshInfo();//待发
|
||
m_pMainFrame->m_pBaseView->m_dlgSmsYF.RefreshInfo();//已发
|
||
//发送完成,刷新状态
|
||
m_pMainFrame->m_pBaseView->m_dlgSmsLog.RefreshInfo(); //发送日志
|
||
*/
|
||
}
|
||
|
||
void DLG_Send::RefreshListCount()
|
||
{
|
||
long lCount = m_wndList.GetItemCount();
|
||
CString strMsg;
|
||
strMsg.Format( _T("发送列表 共有%d条记录") , lCount );
|
||
m_S_ListCount.SetWindowText( strMsg );
|
||
}
|
||
|
||
void DLG_Send::OnSendDy()
|
||
{
|
||
DLG_SmsDY dlg(this);
|
||
dlg.SetParam( &m_AdoRS );
|
||
if ( dlg.DoModal() == IDOK )
|
||
{
|
||
this->AddLoveToMsg( (TCHAR*)(LPCTSTR)dlg.m_strDY );
|
||
/*
|
||
m_E_Msg.SetWindowText(dlg.m_strDY);
|
||
m_E_Msg.SetSel(m_E_Msg.GetWindowTextLength(),m_E_Msg.GetWindowTextLength());
|
||
if ( m_pMainFrame->m_Ans_Login.bCM ) //启用签名
|
||
{
|
||
//this->AddLoveToMsg( _T("\r\n") );
|
||
this->AddLoveToMsg( m_pMainFrame->m_Ans_Login.szCM );
|
||
}
|
||
*/
|
||
this->OnChangeSendMsg();
|
||
}
|
||
}
|
||
|
||
|
||
|
||
BOOL DLG_Send::isBack(const TCHAR *pMobile)
|
||
{
|
||
BOOL bBack = false;
|
||
for ( int i=0;i<m_pMainFrame->m_lBackCount;i++ )
|
||
{
|
||
if ( !_tcscmp(m_pMainFrame->m_pBack[i].szMobile , pMobile ) )
|
||
{
|
||
bBack = true;
|
||
break;
|
||
}
|
||
}
|
||
return bBack;
|
||
}
|
||
|
||
void DLG_Send::SetListSR(BOOL bSendSR)
|
||
{
|
||
//生日祝福专用
|
||
m_bSendSR = bSendSR;
|
||
if ( m_bSendSR )
|
||
{
|
||
m_D_Date.ShowWindow(SW_HIDE);
|
||
SYSTEMTIME t;::GetLocalTime(&t);
|
||
//为生日祝福发送标志
|
||
t.wYear = 1979;
|
||
t.wMonth=7;
|
||
t.wDay = 31;
|
||
t.wHour= 10;
|
||
t.wMinute=0;
|
||
t.wSecond=0;
|
||
t.wMilliseconds=0;
|
||
DateTime_SetSystemtime( m_D_Date.m_hWnd , GDT_VALID , &t );
|
||
DateTime_SetSystemtime( m_D_Time.m_hWnd , GDT_VALID , &t );
|
||
m_B_DS.SetCheck(true);
|
||
m_D_Time.EnableWindow(true);
|
||
}
|
||
else
|
||
{
|
||
m_D_Date.ShowWindow(SW_SHOW);
|
||
}
|
||
}
|
||
|
||
void DLG_Send::OnSendGetmsg()
|
||
{
|
||
|
||
DLG_Setup_SZGJ_GetMsg dlg(this);
|
||
dlg.SetParam( this->m_pMainFrame->m_Setup );
|
||
if ( dlg.DoModal() == IDOK )
|
||
{
|
||
m_E_Msg.SetWindowText(dlg.m_strMsg);
|
||
m_E_Msg.SetSel(m_E_Msg.GetWindowTextLength(),m_E_Msg.GetWindowTextLength());
|
||
if ( m_pMainFrame->m_Ans_Login.bCM ) //启用签名
|
||
{
|
||
// this->AddLoveToMsg( _T("\r\n") );
|
||
this->AddLoveToMsg( m_pMainFrame->m_Ans_Login.szCM );
|
||
}
|
||
this->OnChangeSendMsg();
|
||
}
|
||
|
||
}
|
||
void DLG_Send::CloseAutoSave(void)
|
||
{
|
||
m_bInit = false;
|
||
}
|
||
|
||
UINT DLG_Send::AutoSaveLog(void *pParam)
|
||
{
|
||
DLG_Send * pDlg = (DLG_Send *)pParam;
|
||
CString str;
|
||
|
||
try
|
||
{
|
||
while( pDlg->m_bInit )
|
||
{
|
||
//取队列中的内容并且开发处理
|
||
while ( pDlg->m_bInit && !pDlg->m_SaveItemStatus.IsEmpty() )
|
||
{
|
||
SaveItemStatus * pData = pDlg->m_SaveItemStatus.GetHead();
|
||
str.Format(_T("update smsitem set SendID=%d , Status='%s' where ItemID=%d ") , pData->lSendID , pData->szStatus , pData->lItemID );
|
||
pDlg->m_AdoRS2.Open( str );
|
||
|
||
if ( pDlg->m_B_SaveSendLog.GetCheck() )
|
||
{
|
||
CString strName = pData->szName;
|
||
CString strMsg = pData->szMsg;
|
||
//if ( pDlg->m_B_LongSms.GetCheck() ) //长短信
|
||
// strMsg = pData->szMsg+_tcslen(_T("长信4C11:"));
|
||
strName.Replace( _T("'"),_T("''"));
|
||
strMsg.Replace( _T("'"),_T("''"));
|
||
|
||
str.Format(_T("insert into smslog (SendID,SendNum,Recver,RecvNum,Msg,Status,SubTime,KF) values (%d,'%s','%s','%s','%s',%d,now(),%d)"),
|
||
pData->lSendID,pData->szSendNum,strName,pData->szMobile,strMsg,pData->lStatus,pData->lKF);
|
||
pDlg->m_AdoRS2.Open( str );
|
||
}
|
||
|
||
|
||
pDlg->m_SaveItemStatus.RemoveHead();
|
||
delete pData;
|
||
Sleep(2);
|
||
}
|
||
Sleep(50);
|
||
}
|
||
|
||
//清除队列中的内容
|
||
while (pDlg->m_bInit && !pDlg->m_SaveItemStatus.IsEmpty())
|
||
{
|
||
SaveItemStatus * pData = pDlg->m_SaveItemStatus.GetHead();
|
||
pDlg->m_SaveItemStatus.RemoveHead();
|
||
delete pData;
|
||
}
|
||
}
|
||
catch(...)
|
||
{
|
||
return 0;
|
||
}
|
||
return 1;
|
||
}
|
||
|
||
void DLG_Send::OnDestroy()
|
||
{
|
||
m_bInit = false;
|
||
#ifdef SUPPER_IM_MAS
|
||
m_Mas_Init = false;
|
||
#endif
|
||
Sleep(200);
|
||
#ifdef SUPPER_IM_MAS
|
||
if ( m_Mas_Lib )
|
||
{
|
||
(*m_Mas_release)(); //释放接口
|
||
|
||
FreeLibrary(m_Mas_Lib);
|
||
m_Mas_Lib = NULL;
|
||
}
|
||
#endif
|
||
|
||
if ( m_pMobileMsg ) //手机号码的分段
|
||
{
|
||
delete m_pMobileMsg;
|
||
m_pMobileMsg = NULL;
|
||
}
|
||
if ( m_pSendData )
|
||
{
|
||
delete m_pSendData;
|
||
m_pSendData = NULL;
|
||
}
|
||
|
||
CDialog::OnDestroy();
|
||
|
||
// TODO: Add your message handler code here
|
||
|
||
}
|
||
|
||
UINT DLG_Send::AutoSaveItem(void *pParam)
|
||
{
|
||
DLG_Send * pDlg = (DLG_Send *)pParam;
|
||
CString str;
|
||
|
||
try
|
||
{
|
||
//将Item添中取BoxItem
|
||
BOOL b = pDlg->m_AdoRS3.Open( _T("smsitem") , adCmdTable );
|
||
if ( b )
|
||
{
|
||
long lCount = pDlg->m_wndList.GetItemCount();
|
||
Send_User user;
|
||
for ( int i = 0 ; i< lCount && pDlg->m_bInit ; i++ )
|
||
{
|
||
user = pDlg->GetUser(i);
|
||
pDlg->m_AdoRS3.AddNew();
|
||
pDlg->m_AdoRS3.PutCollect( _T("BoxID") , pDlg->m_lBoxID );
|
||
pDlg->m_AdoRS3.PutCollect( _T("GroupID") , user.szGroup );
|
||
pDlg->m_AdoRS3.PutCollect( _T("Name") , user.szName );
|
||
pDlg->m_AdoRS3.PutCollect( _T("NikeName") , user.szNickName );
|
||
pDlg->m_AdoRS3.PutCollect( _T("Mobile") , user.szMobile );
|
||
pDlg->m_AdoRS3.PutCollect( _T("BZ") , user.szBZ );
|
||
pDlg->m_AdoRS3.PutCollect( _T("Status") , user.szStatus );
|
||
//m_AdoRS.PutCollect( _T("SendID") , user.lSendID );
|
||
pDlg->m_AdoRS3.Update();
|
||
pDlg->m_AdoRS3.GetCollect( _T("ItemID") , user.lItemID ); //取新的ItemId
|
||
pDlg->m_wndList.SetItemData( i , user.lItemID ); //设置新的ItemID;
|
||
}
|
||
pDlg->m_AdoRS3.Close();
|
||
}
|
||
|
||
if ( pDlg->m_bInit )
|
||
{
|
||
//因为保存了新内容,所以要刷新显示列表
|
||
if ( pDlg->m_lBoxType == 0 )
|
||
pDlg->m_pMainFrame->m_pBaseView->m_dlgSmsDF.RefreshInfo();//待发
|
||
else
|
||
pDlg->m_pMainFrame->m_pBaseView->m_dlgSmsYF.RefreshInfo();//已发
|
||
}
|
||
pDlg->m_bSaveList = false;
|
||
}
|
||
catch(...)
|
||
{
|
||
return 0;
|
||
}
|
||
return 1;
|
||
}
|
||
|
||
void DLG_Send::OnSendLongsms()
|
||
{
|
||
if ( m_B_LongSms.GetCheck() )
|
||
{
|
||
/*
|
||
//2025.02.27,不需要再询问长短信的情况
|
||
int iRet = MessageBox(_T("将要设置以长短信方式发送短信,长短信有以下特点:\r\n1、分开多条发送的短信在手机屏幕上显示的是一整条。\r\n2、每条拆分的短信比普通短信支持的最大字数少3-4个字。\r\n3、长短信是拆分发送再由手机端组合,某些手机可能无法接收或无法显示长短信。\r\n4、长短信仍会按实际拆分条数进行扣费。\r\n是否继续以长短信方式发送?"),_T("提问") , MB_ICONQUESTION|MB_YESNO);
|
||
if ( iRet!= IDYES )
|
||
{
|
||
m_B_LongSms.SetCheck(false);
|
||
}
|
||
else
|
||
{
|
||
m_B_FD.SetCheck(false);
|
||
}
|
||
*/
|
||
m_B_FD.SetCheck(false);
|
||
}
|
||
|
||
RefreshTJ();
|
||
}
|
||
|
||
BOOL DLG_Send::isSendingSms()
|
||
{
|
||
return m_bSend;
|
||
}
|
||
|
||
CString DLG_Send::GetOtherSendRetMsg()
|
||
{
|
||
CString str=_T("\r\n\r\n其中:");
|
||
CString strTemp;
|
||
BOOL bFirst=true;
|
||
if (m_dwBackCount>0 )
|
||
{
|
||
if ( !bFirst )
|
||
{
|
||
str += _T(" ");
|
||
}
|
||
else
|
||
{
|
||
bFirst = false;
|
||
}
|
||
strTemp.Format( _T("黑名单数量:%d\r\n") , m_dwBackCount );
|
||
str += strTemp;
|
||
}
|
||
if (m_dwNoSupCount>0 )
|
||
{
|
||
if ( !bFirst )
|
||
{
|
||
str += _T(" ");
|
||
}
|
||
else
|
||
{
|
||
bFirst = false;
|
||
}
|
||
strTemp.Format( _T("不支持数量:%d\r\n") , m_dwNoSupCount );
|
||
str += strTemp;
|
||
}
|
||
if (m_dwNoMsgCount>0 )
|
||
{
|
||
if ( !bFirst )
|
||
{
|
||
str += _T(" ");
|
||
}
|
||
else
|
||
{
|
||
bFirst = false;
|
||
}
|
||
strTemp.Format( _T("内容空数量:%d\r\n") , m_dwNoMsgCount );
|
||
str += strTemp;
|
||
}
|
||
if ( bFirst ) //没有任何数据
|
||
str = _T("");
|
||
return str;
|
||
}
|
||
|
||
void DLG_Send::OnSendNew2()
|
||
{
|
||
if ( m_lBoxID<=0 )
|
||
return ;
|
||
CString strTemp = _T("你选择的是\"重新发送\",本任务中所有短信将会被再次重新发送!\r\n") \
|
||
_T("是否继续?");
|
||
int iRet = MessageBox( strTemp,_T("提问") , MB_ICONQUESTION|MB_YESNO );
|
||
if ( iRet != IDYES )
|
||
return ;
|
||
|
||
List_ReSend( m_lBoxID );
|
||
}
|
||
|
||
void DLG_Send::OnSendFd()
|
||
{
|
||
if ( m_B_FD.GetCheck() )
|
||
{
|
||
int iRet = MessageBox(_T("将要设置加入分段标志,加入分段标志有以下特点:\r\n1、分开多条发送的短信自动在前面添加分段标志:1/2、2/2...。\r\n2、添加分段标志后每条短信内容最大长度缩短4个字。\r\n3、添加分段标志后仍是按实际拆分条数进行扣费。\r\n是否继续以添加分段标志方式发送?"),_T("提问") , MB_ICONQUESTION|MB_YESNO);
|
||
if ( iRet!= IDYES )
|
||
{
|
||
m_B_FD.SetCheck(false);
|
||
}
|
||
else
|
||
{
|
||
m_B_LongSms.SetCheck(false);
|
||
}
|
||
}
|
||
|
||
RefreshTJ();
|
||
}
|
||
|
||
BOOL DLG_Send::Mas_Enable()
|
||
{
|
||
#ifdef SUPPER_IM_MAS
|
||
return this->m_pMainFrame->m_Setup.Mas_Enable;
|
||
#else
|
||
return false;
|
||
#endif
|
||
}
|
||
|
||
BOOL DLG_Send::Mas_Init()
|
||
{
|
||
#ifdef SUPPER_IM_MAS
|
||
if ( m_Mas_Init ) //已初始化
|
||
return m_Mas_Init;
|
||
|
||
CString str;
|
||
//装入函数
|
||
m_Mas_Lib=LoadLibrary( _T("ImApi.dll") );
|
||
if (!m_Mas_Lib)
|
||
{
|
||
MessageBox( _T("Mas装入动态库ImApi.dll失败!无法继续发送!"),_T("错误"),MB_ICONWARNING );
|
||
return false;
|
||
}
|
||
m_Mas_initWithDB = (MAS_initWithDB)GetProcAddress( m_Mas_Lib , "initWithDB" );
|
||
m_Mas_release = (MAS_release)GetProcAddress( m_Mas_Lib , "release" );
|
||
m_Mas_sendSMAdvTime= (MAS_sendSMAdvTime)GetProcAddress( m_Mas_Lib , "sendSMAdvTime" );
|
||
m_Mas_receiveSM = (MAS_receiveSM)GetProcAddress( m_Mas_Lib , "receiveSM" );
|
||
m_Mas_receiveRPT = (MAS_receiveRPT)GetProcAddress( m_Mas_Lib , "receiveRPT" );
|
||
if ( !m_Mas_initWithDB || !m_Mas_release || !m_Mas_sendSMAdvTime || !m_Mas_receiveSM || !m_Mas_receiveRPT )
|
||
{
|
||
FreeLibrary(m_Mas_Lib);
|
||
m_Mas_Lib = NULL;
|
||
|
||
MessageBox( _T("Mas导出ImApi.dll函数失败!无法继续发送!"),_T("错误"),MB_ICONWARNING );
|
||
return false;
|
||
}
|
||
//初始化
|
||
CStringA IP = CW2A(m_pMainFrame->m_Setup.Mas_IP);
|
||
CStringA User = CW2A(m_pMainFrame->m_Setup.Mas_User);
|
||
CStringA Passwd = CW2A(m_pMainFrame->m_Setup.Mas_Passwd);
|
||
CStringA DBName = CW2A(m_pMainFrame->m_Setup.Mas_DBName);
|
||
CStringA Code = CW2A(m_pMainFrame->m_Setup.Mas_Code);
|
||
int nResult = (*m_Mas_initWithDB)(IP, User, Passwd,DBName,Code);
|
||
if(nResult != 0)
|
||
{
|
||
FreeLibrary(m_Mas_Lib);
|
||
m_Mas_Lib = NULL;
|
||
|
||
str.Format( _T("Mas初始化失败,错误代码:%d,无法继续发送!") , nResult);
|
||
MessageBox(str,_T("错误"),MB_ICONWARNING );
|
||
return false;
|
||
}
|
||
|
||
//初始化号段表
|
||
//取得共用参数
|
||
|
||
//连接到号段表
|
||
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,CA2W(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 ); //设置连接
|
||
|
||
|
||
|
||
m_Mas_Init = true;
|
||
|
||
//启用接收短信
|
||
::AfxBeginThread((AFX_THREADPROC)Mas_RecvT,(LPVOID)this,/*THREAD_PRIORITY_LOWEST*/THREAD_PRIORITY_BELOW_NORMAL);
|
||
|
||
|
||
return m_Mas_Init;
|
||
#else
|
||
return false;
|
||
#endif
|
||
}
|
||
|
||
UINT DLG_Send::Mas_SendT(void *pParam)
|
||
{
|
||
#ifdef SUPPER_IM_MAS
|
||
DLG_Send * pDlg = (DLG_Send *)pParam;
|
||
CString str;
|
||
|
||
|
||
try
|
||
{
|
||
long lCount = pDlg->m_wndList.GetItemCount();
|
||
long lMaxMsgLen = pDlg->m_pMainFrame->m_Setup.Mas_MaxLen; //取允许的最大字符数
|
||
BOOL bLongSms = pDlg->m_B_LongSms.GetCheck();
|
||
|
||
for ( int i=0 ; i<lCount && pDlg->m_bSend ; i++ )
|
||
{
|
||
Send_User user = pDlg->GetUser(i,true);
|
||
if ( user.szStatus[0] != '1' && pDlg->Mas_MobileIsSend(user.szMobile) ) //未发送成功的,是重庆地区的号码
|
||
{
|
||
CString strCM;
|
||
BOOL bCMFirst = pDlg->m_pMainFrame->GetQJCM(strCM);
|
||
|
||
//找到应发送的记录,开始发送
|
||
TCHAR szSendMsg2[1024]={0};
|
||
CString csTemp(pDlg->m_szMsg);
|
||
//if ( _tcsncmp(user.szName,_T("IP"),2) ) //名称不是以IP开头,因为IP开头的自动导入的用户姓名
|
||
// csTemp.Replace( _T("\"%Name%\"") , user.szName ); //替换姓名
|
||
//else
|
||
// csTemp.Replace( _T("\"%Name%\"") , _T("") ); //替换姓名
|
||
csTemp.Replace( _T("\"%Name%\"") , user.szName ); //替换姓名
|
||
csTemp.Replace( _T("\"%NickName%\"") , user.szNickName ); //替换昵称
|
||
csTemp.Replace( _T("\"%Memo%\"") , user.szBZ ); //替换备注
|
||
char szFalsh[8]={0};
|
||
szFalsh[0] = 01;
|
||
//csTemp.Replace( _T("\"%^%\"") , szFalsh ); //替换闪烁符
|
||
csTemp.Replace( strCM , _T("") ); //删除短信中原有的强制签名,重新生成过
|
||
_tcscpy( szSendMsg2 , (LPCTSTR)csTemp ); //取得当前发送内容
|
||
/*
|
||
if ( !m_bFiltOver && !bFilt( szSendMsg ) ) //过滤信息
|
||
{
|
||
if ( m_bSend )
|
||
{
|
||
OnSendStart(); //停止
|
||
}
|
||
return ;
|
||
}
|
||
//看是否为黑名单
|
||
if ( isBack(user.szMobile) )
|
||
{
|
||
m_wndList.SetItemText( m_lSendIndex , 3 , _T("提交失败") );
|
||
m_dwBackCount++; //黑名单数量
|
||
continue;
|
||
}
|
||
*/
|
||
SYSTEMTIME tTimer=pDlg->m_tTimer;
|
||
//计算生日定时短信
|
||
if ( pDlg->m_bSendSR )
|
||
{
|
||
SYSTEMTIME t;::GetSystemTime(&t);
|
||
tTimer.wYear = t.wYear;
|
||
tTimer.wMonth = _ttol(user.szBZ);
|
||
tTimer.wDay = _ttol(user.szBZ+3);
|
||
|
||
//判断生日是否已过,如果已过,下年再提醒
|
||
long lNow=t.wMonth*100+t.wDay;
|
||
long lSR =tTimer.wMonth*100+tTimer.wDay;
|
||
if ( lSR<lNow )
|
||
tTimer.wYear=tTimer.wYear+1;
|
||
}
|
||
//分隔信息
|
||
TCHAR szSendMsg[1024];
|
||
long lMsgAll=0;
|
||
long lMsgIndex = 1;
|
||
|
||
//以下计算分段标志相关信息"1/2:"
|
||
BOOL bFD=false;
|
||
BOOL bYDFD=false;
|
||
BOOL bXLTFD=false;
|
||
long lFDYDLen = lMaxMsgLen-4;
|
||
long lFDXLTLen= lMaxMsgLen-12-4;
|
||
if ( pDlg->m_B_FD.GetCheck() ) //选择了强制加入分段标志
|
||
{
|
||
long lFDMsgLen = UCS2Len_2(szSendMsg2);
|
||
if ( lFDMsgLen>lMaxMsgLen)
|
||
bYDFD = true;
|
||
if ( lFDMsgLen>(lMaxMsgLen-12))
|
||
bXLTFD = true;
|
||
}
|
||
if ( !bYDFD && bLongSms ) //如果选择了长短信,可以发1500个字
|
||
{
|
||
lFDYDLen = 1500;
|
||
lFDXLTLen= 1500;
|
||
lMaxMsgLen=1500;
|
||
}
|
||
|
||
BOOL bGetMsg;
|
||
while ( true )
|
||
{
|
||
memset( szSendMsg , 0 , sizeof(szSendMsg) );
|
||
if (!_tcsncmp(user.szMobile, _T("12"), 2) ||
|
||
!_tcsncmp( user.szMobile , _T("13") , 2 ) ||
|
||
!_tcsncmp( user.szMobile , _T("15") , 2 ) ||
|
||
!_tcsncmp( user.szMobile , _T("14") , 2 ) ||
|
||
!_tcsncmp( user.szMobile , _T("16") , 2 ) ||
|
||
!_tcsncmp( user.szMobile , _T("17") , 2 ) ||
|
||
!_tcsncmp( user.szMobile , _T("18") , 2 ) ||
|
||
!_tcsncmp( user.szMobile , _T("19") , 2 ))
|
||
{
|
||
//手机号码可以支持70个汉字
|
||
if ( bYDFD )
|
||
{
|
||
bGetMsg = GetSpiltUnicodeMsg( szSendMsg2 , szSendMsg , lMsgIndex , lFDYDLen ,lMsgAll);
|
||
bFD = true;
|
||
}
|
||
else
|
||
{
|
||
bGetMsg = GetSpiltUnicodeMsg( szSendMsg2 , szSendMsg , lMsgIndex , lMaxMsgLen ,lMsgAll);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//小灵通手机号码可以支持58个汉字
|
||
if ( bXLTFD )
|
||
{
|
||
bGetMsg = GetSpiltUnicodeMsg( szSendMsg2 , szSendMsg , lMsgIndex , lFDXLTLen ,lMsgAll);
|
||
bFD = true;
|
||
}
|
||
else
|
||
{
|
||
bGetMsg = GetSpiltUnicodeMsg( szSendMsg2 , szSendMsg , lMsgIndex , lMaxMsgLen-12 ,lMsgAll);
|
||
}
|
||
}
|
||
if ( bGetMsg ) //能取到信息,发送
|
||
{
|
||
|
||
CString strSendNowMsg;
|
||
if ( !pDlg->m_pMainFrame->m_Setup.Mas_CM )
|
||
{
|
||
strCM = _T(""); //已设置无需要引入短信签名
|
||
}
|
||
if ( bFD )
|
||
{
|
||
strSendNowMsg.Format(_T("%d/%d:%s%s") ,lMsgIndex,lMsgAll,szSendMsg,strCM);
|
||
}
|
||
else
|
||
{
|
||
if ( bCMFirst )
|
||
strSendNowMsg.Format(_T("%s%s") , strCM,szSendMsg);
|
||
else
|
||
strSendNowMsg.Format(_T("%s%s") , szSendMsg,strCM);
|
||
}
|
||
CString strSendTime=_T("");
|
||
if ( COleDateTime(tTimer).GetStatus() == COleDateTime::valid )
|
||
strSendTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"),tTimer.wYear,tTimer.wMonth,tTimer.wDay,tTimer.wHour,tTimer.wMinute,tTimer.wSecond );
|
||
|
||
//计算mas发送短信时的SmID
|
||
pDlg->m_lMasAllSendCount ++;
|
||
SYSTEMTIME tsm;GetLocalTime(&tsm);
|
||
long lSmID=(tsm.wDay%10)*10000000+tsm.wHour*100000+tsm.wMinute*1000+pDlg->m_lMasAllSendCount; //日+时+分+序号
|
||
long lSrcID=0;
|
||
CStringA Mobile = CW2A(user.szMobile);
|
||
CStringA Msg = CW2A(strSendNowMsg);
|
||
CStringA Time = CW2A(strSendTime);
|
||
int iRet = (*pDlg->m_Mas_sendSMAdvTime)(Mobile, Msg,Time, lSmID,lSrcID);
|
||
//int iRet = sendSMAdvTime(user.szMobile, strSendNowMsg,strSendTime, user.lItemID,lSrcID);
|
||
if ( iRet!=0 )
|
||
{
|
||
pDlg->m_pMainFrame->SaveSetup(); //保存计数
|
||
|
||
pDlg->OnSendStart(); //先停止发送
|
||
str.Format( _T("Mas发送短信出错,错误代码:%d!") , iRet );
|
||
pDlg->MessageBox(str , _T("错误") ,MB_ICONWARNING );
|
||
pDlg->RefreshStatusAndLog();
|
||
return 0;
|
||
}
|
||
//保存到日志中
|
||
SaveItemStatus * pStatus = new SaveItemStatus;
|
||
memset(pStatus , 0 , sizeof(SaveItemStatus));
|
||
pStatus->lSendID = lSmID;
|
||
pStatus->lItemID = user.lItemID;
|
||
pDlg->m_wndList.SetItemText( i , 3 , _T("发送成功") );
|
||
_tcscpy(pStatus->szStatus , _T("1") );
|
||
pStatus->lStatus = 10; //提交成功
|
||
_tcscpy(pStatus->szSendNum,_T(""));
|
||
_tcscpy(pStatus->szName,user.szName);
|
||
if ( bLongSms ) //只记录前面70个字
|
||
{
|
||
lMsgIndex=1;
|
||
GetSpiltUnicodeMsg((TCHAR*)(const TCHAR*)strSendNowMsg , szSendMsg , lMsgIndex , 70 ,lMsgAll);
|
||
_tcscpy(pStatus->szMsg , _T("长信0000:"));
|
||
_tcscpy(pStatus->szMsg+_tcslen(_T("长信0000:")),szSendMsg);
|
||
}
|
||
else
|
||
{
|
||
_tcscpy(pStatus->szMsg,strSendNowMsg);
|
||
}
|
||
_tcscpy(pStatus->szMobile,user.szMobile);
|
||
pDlg->m_SaveItemStatus.AddTail(pStatus);
|
||
|
||
pDlg->m_pMainFrame->m_Setup.Mas_Count++; //记录号加1
|
||
if ( pDlg->m_pMainFrame->m_Setup.Mas_Count % 200 ==0 ) //第200条保存一次
|
||
{
|
||
pDlg->m_pMainFrame->SaveSetup();
|
||
}
|
||
pDlg->m_Mas_SendOK ++; //记录号加1
|
||
lMsgIndex ++; //分隔加1
|
||
}
|
||
else
|
||
{
|
||
if ( lMsgAll<=0 ) //没有短信内容
|
||
{
|
||
pDlg->m_dwNoMsgCount++; //没内容数量
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
Sleep(10);
|
||
}
|
||
}
|
||
|
||
pDlg->m_pMainFrame->SaveSetup(); //保存计数
|
||
|
||
pDlg->m_Mas_MasEnd = true;
|
||
if ( pDlg->m_Mas_MobsetEnd ) //短信易的已发送完成
|
||
{
|
||
//短信发送完成
|
||
pDlg->m_lBoxType = 1 ; //因为发送完成,列表的格式为已发
|
||
pDlg->List_Save(true); //保存
|
||
if ( pDlg->m_bSend )
|
||
{
|
||
pDlg->OnSendStart(); //停止
|
||
}
|
||
CString strMsg;
|
||
strMsg.Format( _T("短信发送完成,成功提交%d个号码!用时%d秒。%s") , pDlg->m_lSendOK+pDlg->m_Mas_SendOK,(::GetTickCount()-pDlg->m_dwSendStartTime)/1000,pDlg->GetOtherSendRetMsg() );
|
||
pDlg->MessageBox( strMsg , _T("信息") , MB_ICONASTERISK );
|
||
pDlg->RefreshStatusAndLog();
|
||
}
|
||
return 0;
|
||
|
||
}
|
||
catch(...)
|
||
{
|
||
return 0;
|
||
}
|
||
#endif
|
||
return 1;
|
||
}
|
||
|
||
BOOL DLG_Send::Mas_MobileIsSend(CString strMobile)
|
||
{
|
||
#ifdef SUPPER_IM_MAS
|
||
if ( !Mas_Enable() )
|
||
return false;
|
||
|
||
// if ( !Mas_Init() )
|
||
// return false;
|
||
|
||
if ( m_pMainFrame->m_Setup.Mas_MaxSend>0 && m_pMainFrame->m_Setup.Mas_Count>=m_pMainFrame->m_Setup.Mas_MaxSend)
|
||
{
|
||
//超出当月发送量了,暂停mas发送。
|
||
return false;
|
||
}
|
||
|
||
CString str;
|
||
if ( !m_pMainFrame->m_Setup.Mas_WW )
|
||
{
|
||
str = strMobile.Left(2);
|
||
if (str == _T("12") || str == _T("13") || str==_T("15") || str==_T("14") ||str==_T("16") ||str==_T("17") || str==_T("18") || str==_T("19") )
|
||
{
|
||
str = strMobile.Left(3);
|
||
if ( str==_T("130") || str==_T("131") || str==_T("132") || str==_T("133")|| str==_T("153") || str==_T("155") || str==_T("156") || str==_T("189") || str==_T("186") || str==_T("180") )
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
|
||
if ( m_pMainFrame->m_Setup.Mas_Prov==1 ) //仅发送广东地区的号码
|
||
{
|
||
if ( strMobile.Left(1)==CString(_T("0")) )
|
||
{
|
||
for ( int i=3 ; i<5 ; i++ )
|
||
{
|
||
str.Format(_T("select * from HDB_XLT where Code='%s' and Prov='广东' ") , strMobile.Left(i));
|
||
if ( m_HDAdoRS.Open(str) && !m_HDAdoRS.IsEOF() )
|
||
{
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
str.Format( _T("select * from HDB where Head='%s' and Province='广东'") , strMobile.Left(7) );
|
||
if ( m_HDAdoRS.Open(str) && !m_HDAdoRS.IsEOF() )
|
||
{
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
else
|
||
{
|
||
return true; //mas发送全国移动号码
|
||
}
|
||
#else
|
||
return false;
|
||
#endif
|
||
return false;
|
||
|
||
}
|
||
|
||
UINT DLG_Send::Mas_RecvT(void *pParam)
|
||
{
|
||
#ifdef SUPPER_IM_MAS
|
||
DLG_Send * pDlg = (DLG_Send *)pParam;
|
||
CString str;
|
||
try
|
||
{
|
||
while ( pDlg->m_Mas_Init )
|
||
{
|
||
if ( !pDlg->m_bSend ) //在发送过程中不收短信
|
||
{
|
||
//接收短信
|
||
MOItem moBody[1];
|
||
memset(&moBody, 0, sizeof(moBody));
|
||
//nCount = receiveSMAdv(moBody, -1, -1);
|
||
int nCount = (* pDlg->m_Mas_receiveSM)(moBody, 1);
|
||
if ( nCount > 0)
|
||
{
|
||
ANS_RecvData2 sms={0};
|
||
_tcscpy( sms.szSendNum , CA2W(moBody[0].mobile) );
|
||
_tcscpy( sms.szRecvNum , _T("Mas") );
|
||
_tcscpy( sms.szMsg , CA2W(moBody[0].smContent) );
|
||
::GetLocalTime(&sms.tRecv);
|
||
ExMobileGZM(sms.szSendNum);
|
||
pDlg->m_pMainFrame->m_pBaseView->m_dlgSmsJS.RecvNewSms(sms,false); //收到新的信息;
|
||
Sleep(500);
|
||
}
|
||
//接收状态报告
|
||
RptItem rptBody[5];
|
||
|
||
memset(&rptBody, 0, sizeof(rptBody));
|
||
//nCount = receiveRPTAdv(rptBody, -1, -1);
|
||
nCount = (* pDlg->m_Mas_receiveRPT)(rptBody, 5);
|
||
if ( nCount > 0)
|
||
{
|
||
for ( int j=0 ; j<nCount ; j++ )
|
||
{
|
||
CString strRecvTime = _T("NULL") ;
|
||
if ( strlen(rptBody[j].rptTime)>3 )
|
||
{
|
||
strRecvTime.Format( _T("#%s#") , CA2W(rptBody[j].rptTime) );
|
||
}
|
||
//if ( CString(rptBody[j].rptDesc) == CString( _T("发送成功。") ) )
|
||
if ( rptBody[j].rptId ==0 )
|
||
{
|
||
str.Format( _T("Update SmsLog Set Status=12, RecvTime=%s where SendID=%d") , strRecvTime , rptBody[j].smId );
|
||
}
|
||
else
|
||
{
|
||
str.Format( _T("Update SmsLog Set Status=13, RecvTime=%s where SendID=%d") , strRecvTime , rptBody[j].smId );
|
||
}
|
||
pDlg->m_AdoRS5.Open(str);
|
||
Sleep(500);
|
||
|
||
}
|
||
int i=0;
|
||
}
|
||
|
||
}
|
||
Sleep(2000); //1秒钟才收一次短信
|
||
}
|
||
}
|
||
catch(...)
|
||
{
|
||
}
|
||
#endif
|
||
return 1;
|
||
}
|
||
|
||
BOOL DLG_Send::IsLocakBack(CString strMobile)
|
||
{
|
||
CString str;
|
||
str.Format( _T("select * from back where Mobile='%s' and Status=1") , strMobile );
|
||
if ( m_AdoRS6.Open(str) && !m_AdoRS6.IsEOF() )
|
||
return true;
|
||
else
|
||
return false;
|
||
|
||
}
|
||
|
||
BOOL DLG_Send::Mas_OK()
|
||
{
|
||
#ifdef SUPPER_IM_MAS
|
||
if ( !this->m_pMainFrame->m_Setup.Mas_Enable )
|
||
return false;
|
||
|
||
if ( !m_Mas_Init )
|
||
return false;
|
||
|
||
return true;
|
||
#else
|
||
return false;
|
||
#endif
|
||
}
|
||
|
||
|
||
void DLG_Send::On_User_Inport_MasSDK_DGWL_FP()
|
||
{
|
||
}
|
||
void DLG_Send::On_User_Inport_MasSDK_DGWL_SP()
|
||
{
|
||
}
|
||
void DLG_Send::On_User_Inport_MasSDK_DGWL_KF()
|
||
{
|
||
}
|
||
void DLG_Send::On_User_Inport_MasSDK_DGWL_ZC()
|
||
{
|
||
}
|
||
|
||
void DLG_Send::SEND_USER_INPORT_MasSDK_DGWL(long lType)
|
||
{
|
||
|
||
}
|
||
|
||
void DLG_Send::OnSendTask()
|
||
{
|
||
if ( m_B_Task.GetCheck() )
|
||
{
|
||
long lCount=m_wndList.GetItemCount();
|
||
if ( lCount>=100 )
|
||
{
|
||
MessageBox(_T("号码数超100,不能启用任务方式,请删除部分号码后重试!") , _T("错误") , MB_ICONWARNING );
|
||
m_B_Task.SetCheck(false);
|
||
return ;
|
||
}
|
||
/*
|
||
int iRet = MessageBox(_T("将要设置以任务方式发送短信,任务方式有以下特点:\r\n1、任务方式为批量上传到服务后由服务器进行发送。\r\n2、任务方式支持按号码文件发送,每组任务不超过100组号码。\r\n3、任务方式本地没有详细发送日志。\r\n4、任务为临时性质,定时时间不可过长。\r\n是否继续以任务方式发送?"),_T("提问") , MB_ICONQUESTION|MB_YESNO);
|
||
if ( iRet!= IDYES )
|
||
{
|
||
m_B_Task.SetCheck(false);
|
||
}
|
||
*/
|
||
}
|
||
else
|
||
{
|
||
#ifdef SUPPER_IM_MAS
|
||
m_B_SaveSendLog.SetCheck(true);//选中记录日志
|
||
m_B_ReMobile.SetCheck(true);//选中查重
|
||
#endif
|
||
}
|
||
OnSendTask2();
|
||
}
|
||
|
||
void DLG_Send::OnSendTask2()
|
||
{
|
||
if ( m_B_Task.GetCheck() )
|
||
{
|
||
m_B_SaveSendLog.EnableWindow(false);
|
||
m_B_SaveSendLog.SetCheck(false);
|
||
m_B_FD.EnableWindow(false);
|
||
m_B_FD.SetCheck(false);
|
||
m_L_lInterval.EnableWindow(false);
|
||
m_L_lInterval.SetCurSel(0);
|
||
m_B_Name.EnableWindow(false);
|
||
m_B_NickName.EnableWindow(false);
|
||
//m_B_Memo.EnableWindow(false);
|
||
}
|
||
else
|
||
{
|
||
m_B_SaveSendLog.EnableWindow(true);
|
||
if (m_pMainFrame->m_Ans_Login2.lLongSmsType != 1)
|
||
m_B_FD.EnableWindow(true);
|
||
m_L_lInterval.EnableWindow(true);
|
||
m_B_Name.EnableWindow(true);
|
||
m_B_NickName.EnableWindow(true);
|
||
//m_B_Memo.EnableWindow(true);
|
||
}
|
||
}
|
||
|
||
|
||
void DLG_Send::OnOK()
|
||
{
|
||
return ;
|
||
|
||
CDialog::OnOK();
|
||
}
|
||
|
||
|
||
void DLG_Send::OnCancel()
|
||
{
|
||
CDialog::OnCancel();
|
||
}
|
||
|
||
|
||
void DLG_Send::OnClickedSendRemobile()
|
||
{
|
||
if (m_B_ReMobile.GetCheck())
|
||
{
|
||
m_bShowReMobile = true;
|
||
m_lReMobileType = 0;
|
||
}
|
||
}
|