#if !defined(AFX_FSMSLOG_H__7A8C1AC0_010A_4AFE_A85E_2BC090ED9906__INCLUDED_)
#define AFX_FSMSLOG_H__7A8C1AC0_010A_4AFE_A85E_2BC090ED9906__INCLUDED_

#include "DLG_SmsLogSee.h"	// Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// FSmsLog.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CFSmsLog dialog
#include "..\public\reportctrl\ReportCtrl.h"
#include "DLG_SmsLogSee.h"

#define MENU_LOG_SEE       WM_USER+220   //删除
#define MENU_LOG_SEND      WM_USER+221   //删除
#define MENU_LOG_DEL       WM_USER+222   //删除
#define MENU_LOG_EXPORT    WM_USER+223   //导出
#define MENU_LOG_REFRESH   WM_USER+224   //刷新
#define MENU_LOG_REFSTATUS WM_USER+225   //刷新状态
#define MENU_LOG_FIND      WM_USER+226   //查找
#define MENU_LOG_BAK       WM_USER+227   //创建备份
#define MENU_LOG_QUERYFAIL WM_USER+228   //查询失败短信
#define MENU_LOG_MO        WM_USER+229   //查询失败短信

#define MENU_LOG_SHOWALLRECORD WM_USER+400 //显示所有记录

#define STATUS_MAX_QUERY   200  //每次最多查询1000条状态报告记录


#ifdef UNICODE
class CAdoSmsLog:public CADORecordBinding
{
	BEGIN_ADO_BINDING(CAdoSmsLog)
	ADO_VARIABLE_LENGTH_ENTRY2(1,adInteger, m_SmsID ,sizeof(m_SmsID), l_SmsIDStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(2,adInteger, m_SendID ,sizeof(m_SendID), l_SendIDStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(3,adVarWChar,m_Sender    ,sizeof(m_Sender)  , l_SenderStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(4,adVarWChar,m_SendNum   ,sizeof(m_SendNum) , l_SendNumStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(5,adVarWChar,m_Recver      ,sizeof(m_Recver)    , l_RecverStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(6,adVarWChar, m_RecvNum   ,sizeof(m_RecvNum)  , l_RecvNumStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(7,adVarWChar, m_Msg   ,sizeof(m_Msg)  , l_MsgStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(8,adInteger, m_Status ,sizeof(m_Status), l_StatusStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(9,adDate, m_SubTime   ,sizeof(m_SubTime)  , l_SubTimeStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(10,adDate, m_SendTime   ,sizeof(m_SendTime)  , l_SendTimeStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(11,adDate, m_RecvTime   ,sizeof(m_RecvTime)  , l_RecvTimeStatus,true)
	END_ADO_BINDING()
public:
	long   m_SmsID;
	ULONG  l_SmsIDStatus;
	long   m_SendID;
	ULONG  l_SendIDStatus;
	TCHAR   m_Sender[32];
	ULONG  l_SenderStatus;
	TCHAR   m_SendNum[32];
	ULONG  l_SendNumStatus;
	TCHAR   m_Recver[32];
	ULONG  l_RecverStatus;
	TCHAR   m_RecvNum[32];
	ULONG  l_RecvNumStatus;
	TCHAR   m_Msg[1020];
	ULONG  l_MsgStatus;
	long   m_Status;
	ULONG  l_StatusStatus;
	COleDateTime m_SubTime;
	ULONG  l_SubTimeStatus;
	COleDateTime m_SendTime;
	ULONG  l_SendTimeStatus;
	COleDateTime m_RecvTime;
	ULONG  l_RecvTimeStatus;

	CAdoSmsLog()
	{
		m_SmsID = 0;
		m_SendID = 0;
		memset(m_Sender,0,sizeof(m_Sender));
		memset(m_SendNum,0,sizeof(m_SendNum));
		memset(m_Recver,0,sizeof(m_Recver));
		memset(m_RecvNum,0,sizeof(m_RecvNum));
		memset(m_Msg,0,sizeof(m_Msg));
		m_Status= 0;
		memset(&m_SubTime,0,sizeof(m_SubTime));
		memset(&m_SendTime,0,sizeof(m_SendTime));
		memset(&m_RecvTime,0,sizeof(m_RecvTime));
	}
};
#else
class CAdoSmsLog:public CADORecordBinding
{
	BEGIN_ADO_BINDING(CAdoSmsLog)
	ADO_VARIABLE_LENGTH_ENTRY2(1,adInteger, m_SmsID ,sizeof(m_SmsID), l_SmsIDStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(2,adInteger, m_SendID ,sizeof(m_SendID), l_SendIDStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(3,adVarChar,m_Sender    ,sizeof(m_Sender)  , l_SenderStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(4,adVarChar,m_SendNum   ,sizeof(m_SendNum) , l_SendNumStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(5,adVarChar,m_Recver      ,sizeof(m_Recver)    , l_RecverStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(6,adVarChar, m_RecvNum   ,sizeof(m_RecvNum)  , l_RecvNumStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(7,adVarChar, m_Msg   ,sizeof(m_Msg)  , l_MsgStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(8,adInteger, m_Status ,sizeof(m_Status), l_StatusStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(9,adDate, m_SubTime   ,sizeof(m_SubTime)  , l_SubTimeStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(10,adDate, m_SendTime   ,sizeof(m_SendTime)  , l_SendTimeStatus,true)
	ADO_VARIABLE_LENGTH_ENTRY2(11,adDate, m_RecvTime   ,sizeof(m_RecvTime)  , l_RecvTimeStatus,true)
	END_ADO_BINDING()
public:
	long   m_SmsID;
	ULONG  l_SmsIDStatus;
	long   m_SendID;
	ULONG  l_SendIDStatus;
	char   m_Sender[32];
	ULONG  l_SenderStatus;
	char   m_SendNum[32];
	ULONG  l_SendNumStatus;
	char   m_Recver[32];
	ULONG  l_RecverStatus;
	char   m_RecvNum[32];
	ULONG  l_RecvNumStatus;
	char   m_Msg[1020];
	ULONG  l_MsgStatus;
	long   m_Status;
	ULONG  l_StatusStatus;
	COleDateTime m_SubTime;
	ULONG  l_SubTimeStatus;
	COleDateTime m_SendTime;
	ULONG  l_SendTimeStatus;
	COleDateTime m_RecvTime;
	ULONG  l_RecvTimeStatus;

	CAdoSmsLog()
	{
		m_SmsID = 0;
		m_SendID = 0;
		memset(m_Sender,0,sizeof(m_Sender));
		memset(m_SendNum,0,sizeof(m_SendNum));
		memset(m_Recver,0,sizeof(m_Recver));
		memset(m_RecvNum,0,sizeof(m_RecvNum));
		memset(m_Msg,0,sizeof(m_Msg));
		m_Status= 0;
		memset(&m_SubTime,0,sizeof(m_SubTime));
		memset(&m_SendTime,0,sizeof(m_SendTime));
		memset(&m_RecvTime,0,sizeof(m_RecvTime));
	}
};
#endif


class CMainFrame;
class CProcessSocket;
class CFSmsLog : public CDialog
{
public:
	BOOL             m_bRefresh;  //是否已刷新过数据

protected:
	CMainFrame *     m_pMainFrame;
	CProcessSocket * m_pSocket;
	CAdoConnection   m_adoConnection;
	CImageList       m_Image;
	BOOL             m_bShowToday; //是否仅显示当天的数据
	BOOL m_bInit;   //是否已初始化
	long             m_lRefreshStatusIndex;  //查询状态时到达的索引

	CAdoRecordSet    m_AdoRS;

	CString          m_strFindAdd;  //附加查询指令
	BOOL              m_bShowAllRecord;//是否显示所有号码
	CString          m_strBakDBName;
	BOOL             m_bNewDB;
// Construction
public:
	void SetBakDBName(CString strDBName );
	void SetToday( BOOL bToday );
	static long GetStatusText2(long lStatus, TCHAR *pStatus);
	SMS_See GetSms(long lItem);
	BOOL ProcessSocket( Socket_Head * pHead );
	long GetItemStatus(long iItem );
	void RefreshStatus(BOOL bBegin = true);
	long GetCurrentSelected();
	void ShowRMenu();
	static long GetStatusText( long lStatus , TCHAR * pStatus );
	BOOL RefreshInfo();
	BOOL ReShow(BOOL bRefresh=false);
	BOOL ReHide();
	CFSmsLog(CWnd* pParent = NULL);   // standard constructor

// Dialog Data
	//{{AFX_DATA(CFSmsLog)
	enum { IDD = IDD_SMSLOG };
	CReportCtrl	m_wndList;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CFSmsLog)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CFSmsLog)
	virtual BOOL OnInitDialog();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnRclickSmslogList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDblclkSmslogList(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnKeydownSmslogList(NMHDR* pNMHDR, LRESULT* pResult);
	virtual void OnOK();
	virtual void OnCancel();
	//}}AFX_MSG
	afx_msg void On_User_See();
	afx_msg void On_User_Send();
	afx_msg void On_User_Del();
	afx_msg void On_User_Export();
	afx_msg void On_User_Refresh();
	afx_msg void On_User_RefStatus();
	afx_msg void On_User_Find();
	afx_msg void On_User_Bak();
	afx_msg void On_User_QueryFail();
	afx_msg void On_User_MO();

	afx_msg void On_User_Refresh_All();
	DECLARE_MESSAGE_MAP()
};

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

#endif // !defined(AFX_FSMSLOG_H__7A8C1AC0_010A_4AFE_A85E_2BC090ED9906__INCLUDED_)