#if !defined(AFX_DLG_SEND_H__60D7C1FD_03E9_4F4C_9077_AF29BADC6F94__INCLUDED_)
#define AFX_DLG_SEND_H__60D7C1FD_03E9_4F4C_9077_AF29BADC6F94__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// DLG_Send.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// DLG_Send dialog

#include ".\LuButton\LuButton.h"
#include "..\public\reportctrl\ReportCtrl.h"
#include "UserDropTarget.h"
#include "label.h"

#include "ImApi\ImApi.h"
#include "..\public\StringSort\StringSort.h"



#define SEND_USER_ADD       WM_USER+220
#define SEND_USER_MODIFY    WM_USER+221
#define SEND_USER_DEL       WM_USER+222
#define SEND_USER_CLEAR     WM_USER+223
#define SEND_USER_INPORT    WM_USER+224
#define SEND_USER_EXPORT    WM_USER+225
#define SEND_USER_STATUS    WM_USER+226
#define SEND_USER_INPORT_LT WM_USER+227

#define SEND_USER_INPORT_MASSDKDGWL_FP WM_USER+230
#define SEND_USER_INPORT_MASSDKDGWL_SP WM_USER+231
#define SEND_USER_INPORT_MASSDKDGWL_KF WM_USER+232
#define SEND_USER_INPORT_MASSDKDGWL_ZC WM_USER+233

#define SEND_USER_PASTE WM_USER+240

typedef struct _SaveItemStatus
{
	long lSendID;
	TCHAR szStatus[4];
	long lItemID;
	long lStatus;      //����״̬,0-�ύ�ɹ�,1-�ύʧ��,2-�û�����,3-��ҵ����,4-��ҵ�ѹ���
	long lKF;
	TCHAR szSendNum[32];//���ͺ���
	TCHAR szName[32];   //Ŀ������
	TCHAR szMobile[32]; //Ŀ�����
	TCHAR szMsg[1020];   //��������
}SaveItemStatus;
typedef CTypedPtrList<CPtrList, SaveItemStatus*>  CSaveItemStatus;

class CMainFrame;
class CProcessSocket;
class DLG_Send : public CDialog
{
public:
	CMainFrame * m_pMainFrame;

protected:
	CImageList	 m_Image;         //ͼ���б�
	CRect        m_OldRect;       //ԭDlg��Rect
	CProcessSocket * m_pSocket;
	CAdoRecordSet    m_AdoRS;
	CAdoRecordSet    m_AdoRS2;
	CAdoRecordSet    m_AdoRS3;
	CAdoRecordSet    m_AdoRS4;
	CAdoRecordSet    m_AdoRS5;
	CAdoRecordSet    m_AdoRS6;
	CUserDropTarget  m_UserDrop;

	BOOL         m_bInit;         //�б��Ƿ���ʵʼ��

	BOOL         m_bModify;       //�Ƿ����޸Ĺ�
	long         m_lBoxID;        //BoxID
	long         m_lBoxType;      //�б�����0,����,1,�ѷ�

	//����Ϊ����ʱ������
	BOOL         m_bSend;         //�Ƿ����ڷ���
	SYSTEMTIME   m_tTimer;          //��ʱʱ��
	TCHAR        m_szMsg[1024];      //����ԭ��Ϣ
	TCHAR        m_szMsgEndFilt[1024];//���һ��֪ͨ����Ա����Ϣ
	TCHAR        m_szSendMsg[1024];  //��ǰ���͵�����
	long         m_lSendIndex;      //��������Index
	long         m_lSendOK;         //���ͳɹ�����
	BOOL         m_bShowFiltWarning;//�Ƿ�������ʾ���˾���
	BOOL         m_bShowFiltFirst;  //�Ƿ��һ����ʾ���˾���
	BOOL         m_bFilt;           //�Ƿ���Ҫ���
	BOOL         m_bFiltOver;       //�Ƿ���Ҫ�������

	//����Ϊ�ظ���������֪ͨ
	BOOL         m_bShowReMobile;   //�Ƿ���ʾ�ظ�����֪ͨ
	long         m_lReMobileType;   //������ظ����룬��������,0-������1-������һ��

	//����Ϊ����������֪ͨ
	BOOL         m_bBackReMobile;   //�Ƿ���ʾ�ظ�����֪ͨ
	long         m_lBackReMobileType;   //������ظ����룬��������,0-������1-������һ��

	//����Ϊ��������ף��ר��
	BOOL         m_bSendSR;

	//���㷢��ʱ��
	DWORD        m_dwSendStartTime;

	//ʹ���̱߳��淢��״̬
	CSaveItemStatus m_SaveItemStatus;

	//��¼��������
	DWORD        m_dwBackCount;     //����������
	DWORD        m_dwNoSupCount;    //��֧�ֺ�������
	DWORD        m_dwNoMsgCount;    //û��������

	BOOL         m_bSaveList;
	long         m_lPage;

	//��¼mas���δ�������mas��������
	long         m_lMasAllSendCount;

	long         m_lInterval;  //���ڷ��ͼ��
	BOOL         m_bNoSupperWord; //���η��������Ƿ��з�֧���ַ�
	CString      m_strFiltWord;   //�����صĹؼ���

	CStringSort  m_strSort;   //����

	BOOL         m_bOneToOne;
	int          m_lSendRand;     //���͵������
	CStringArray  * m_pMobileMsg;  //�ֻ�����ķֶ�
	REQ_SendData3 * m_pSendData;
	//�Ŷ�
public:
	CAdoConnection m_HDadoConnection;
	CAdoRecordSet  m_HDAdoRS;


#ifdef SUPPER_IM_MAS
	//Mas
	BOOL         m_Mas_Init;        // mas�Ƿ��ѳ�ʼ��
	HINSTANCE    m_Mas_Lib;
	MAS_initWithDB   m_Mas_initWithDB;
	MAS_release      m_Mas_release;
	MAS_sendSMAdvTime m_Mas_sendSMAdvTime;
	MAS_receiveSM     m_Mas_receiveSM;
	MAS_receiveRPT    m_Mas_receiveRPT;

	BOOL              m_Mas_MasEnd;
	BOOL              m_Mas_MobsetEnd;
	long              m_Mas_SendOK;
#endif
// Construction
public:
	void CloseAutoSave(void);
	BOOL ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame);
	void OnSendTask2();
	void SEND_USER_INPORT_MasSDK_DGWL(long lType);
	BOOL Mas_OK();
	BOOL IsLocakBack(CString strMobile);
	BOOL bNoSupperWord(TCHAR *pMsg,CString & strWord);
	static UINT Mas_RecvT(void *pParam);
	BOOL Mas_MobileIsSend(CString strMobile);
	static UINT Mas_SendT(void *pParam);
	BOOL Mas_Init();
	BOOL Mas_Enable();
	CString GetOtherSendRetMsg();
	BOOL isSendingSms();
	static UINT AutoSaveItem(void *pParam);
	static UINT AutoSaveLog(void *pParam);
	void SetListSR( BOOL bSendSR);
	BOOL isBack( const TCHAR * pMobile );
	void RefreshListCount();
	void RefreshStatusAndLog();
	void List_SetMsg( TCHAR * pMsg );
	BOOL bFilt( const TCHAR * pMsg,long lCount2=-1 );
	BOOL ProcessSocket(Socket_Head *pHead);
	void SendNextSms();
	BOOL IsSend();
	BOOL List_AddUser( long lCount , Send_User * pUser );
	void EnableModifyWindow( BOOL bModify );
	BOOL List_ReSend( long lBoxID );
	void AddLoveToMsg(TCHAR *pLove);
	long GetBoxID();
	void AddUser( Send_User user,long lItem = -1 );
	BOOL List_Read( long lBoxID );
	Send_User GetUser( long lItem,BOOL bDelay=false );
	BOOL List_Save(BOOL bTJ=false);
	void ShowRMenu();
	long GetCurrentSelected();
	void SetMainFrame(CMainFrame *pFrame);
	BOOL List_New();
	BOOL CloseList();
	void RefreshTJ();
	void InitItem();
	void On_User_Inport_Group_Sms();
	DLG_Send(CWnd* pParent = NULL);   // standard constructor

// Dialog Data
	//{{AFX_DATA(DLG_Send)
	enum { IDD = IDD_SEND };
	CButton	m_B_Task;
	CComboBox	m_L_lInterval;
	CButton	m_B_FD;
	LuButton	m_B_New2;
	CButton	m_B_LongSms;
	CStatic	m_S_PCount2;
	CButton	m_B_SaveSendLog;
	CStatic	m_S_CM2;
	CLabel	m_S_CM;
	CButton	m_B_GetMsg;
	CButton	m_B_ReMobile;
	LuButton	m_B_DY;
	LuButton	m_B_New;
	CButton	m_B_Add;
	CEdit	m_E_Num;
	CDateTimeCtrl	m_D_Time;
	CDateTimeCtrl	m_D_Date;
	LuButton	m_B_YL;
	CStatic	m_S_WCount;
	LuButton	m_B_Status;
	LuButton	m_B_Start;
	LuButton	m_B_Save;
	CButton	m_S_S1;
	CButton	m_B_Report;
	CStatic	m_S_PCount;
	LuButton	m_B_Null;
	CButton	m_S_MsgList;
	CEdit	m_E_Msg;
	CButton	m_S_ListCount;
	CListCtrl	m_wndList;
	LuButton	m_B_Memo;
	LuButton	m_B_NickName;
	LuButton	m_B_Name;
	LuButton	m_B_Flash;
	CButton	m_B_HandFree;
	CButton	m_B_DS;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(DLG_Send)
	public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	virtual LRESULT OnDrop(WPARAM wParam, LPARAM lParm);
	// Generated message map functions
	//{{AFX_MSG(DLG_Send)
	virtual BOOL OnInitDialog();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnClose();
	afx_msg void OnChangeSendMsg();
	afx_msg void OnSendDs();
	afx_msg void OnSendSave();
	afx_msg void OnRclickSendList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnSendNumadd();
	afx_msg void OnSendNumPaste();
	afx_msg void OnDblclkSendList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDatetimechangeSendDsD(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDatetimechangeSendDsT(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnSendNew();
	afx_msg void OnSendIname();
	afx_msg void OnSendInicename();
	afx_msg void OnSendInmemo();
	afx_msg void OnSendIfalsh();
	afx_msg void OnSendYl();
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnSendStart();
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnKeydownSendList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnSendDy();
	afx_msg void OnSendGetmsg();
	afx_msg void OnDestroy();
	afx_msg void OnSendLongsms();
	afx_msg void OnSendNew2();
	afx_msg void OnSendFd();
	afx_msg void OnSendTask();
	//}}AFX_MSG

	afx_msg void On_User_Add();
	afx_msg void On_User_Modify();
	afx_msg void On_User_Del();
	afx_msg void On_User_Clear();
	afx_msg void On_User_Inport();
	afx_msg void On_User_Export();
	afx_msg void On_User_Status();
	afx_msg void On_User_Inport_LT();
	afx_msg void On_User_Inport_MasSDK_DGWL_FP();
	afx_msg void On_User_Inport_MasSDK_DGWL_SP();
	afx_msg void On_User_Inport_MasSDK_DGWL_KF();
	afx_msg void On_User_Inport_MasSDK_DGWL_ZC();
	DECLARE_MESSAGE_MAP()
	virtual void OnOK();
	virtual void OnCancel();
public:
//	afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
//	afx_msg void OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2);
	afx_msg void OnClickedSendRemobile();
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DLG_SEND_H__60D7C1FD_03E9_4F4C_9077_AF29BADC6F94__INCLUDED_)