// CheckupDlg.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "CheckupDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCheckupDlg dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_CheckupSee.h"
#include "SmsManagerDoc.h"
#include "UserView.h"
#include "DLG_Corp_Oper_Open.h"
#include "DLG_ShowWarning.h"

#pragma comment(lib, "winmm.lib")
#include <Mmsystem.h>


CCheckupDlg::CCheckupDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCheckupDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCheckupDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_bInit = false;
	m_bRefresh = false;

	m_bProcess = false;

	m_bAddIcon = false;
	m_lIconCount = 0;
	pDlgWarning = NULL;
}


void CCheckupDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCheckupDlg)
	DDX_Control(pDX, IDC_CHECKUP_LIST, m_wndList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCheckupDlg, CDialog)
	//{{AFX_MSG_MAP(CCheckupDlg)
	ON_WM_SIZE()
	ON_NOTIFY(NM_DBLCLK, IDC_CHECKUP_LIST, OnDblclkCheckupList)
	ON_NOTIFY(NM_RCLICK, IDC_CHECKUP_LIST, OnRclickCheckupList)
	//}}AFX_MSG_MAP
	ON_COMMAND( MENU_CHECKUP_SEE , On_User_See )
	ON_COMMAND( MENU_CHECKUP_PASS , On_User_Pass )
	ON_COMMAND( MENU_CHECKUP_NOPASS , On_User_NoPass )
	ON_COMMAND(MENU_CHECKUP_CHANGETDPASS, On_User_ChangeTdPass)
	
	ON_COMMAND( MENU_CHECKUP_CORPPASS , On_User_CorpPass )
	ON_COMMAND( MENU_CHECKUP_CORPNOPASS , On_User_CorpNoPass )

	ON_COMMAND(MENU_CHECKUP_CORPTDPASS, On_User_CorpTDPass)
	ON_COMMAND(MENU_CHECKUP_CORPTDNOPASS, On_User_CorpTDNoPass)
	ON_COMMAND(MENU_CHECKUP_CORPCHANGETDPASS, On_User_CorpChangeTDPass)
	ON_COMMAND(MENU_CHECKUP_CORPTDCHANGETDPASS, On_User_CorpTDChangeTDPass)

	ON_COMMAND( MENU_CHECKUP_CORPLIST , On_User_CorpList )
	ON_COMMAND( MENU_CHECKUP_CORPOFF , On_User_CorpOFF )
	ON_COMMAND( MENU_CHECKUP_REFRESH , On_User_Refresh )
	ON_WM_TIMER()
	ON_WM_DESTROY()
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCheckupDlg message handlers

BOOL CCheckupDlg::ReShow(BOOL bRefresh)
{
	ShowWindow( SW_SHOW );
	if ( bRefresh || !m_bRefresh )
	{
		RefreshInfo();
	}
	return true;
}

BOOL CCheckupDlg::RefreshInfo(BOOL bShowDlg)
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return false;
	}
	this->Close();              //�ر�ԭ����
	m_wndList.ShowWindow( SW_HIDE ); //Ϊ�˼ӿ���ʾ�ٶ�
	m_wndList.DeleteAllItems();  //��ɾ�����м�¼
	m_pMainFrame->SendFrame(SMSFUNC_CHECKUP_SEE,NULL,0);
	if (bShowDlg && !m_bProcess)
	{
		m_bProcess = true;
		m_Process.DoModal();
		m_bProcess = false;
	}
	m_wndList.ShowWindow( SW_SHOW ); //Ϊ�˼ӿ���ʾ�ٶ�
	return true;
}

BOOL CCheckupDlg::ReHide()
{
	ShowWindow( SW_HIDE );
	return true;
}

BOOL CCheckupDlg::ProcessSocket(Socket_Head *pHead)
{
	//ȡҪ��˵Ķ���
	if (pHead->lFuncType == SMSFUNC_CHECKUP_SEE)
	{
		m_bRefresh = true;  //�Ѿ�ˢ�¹�

		ANS_Checkup_See     * pSee = (ANS_Checkup_See *)pHead->pFrame;
		ANS_Checkup_SeeData * pData = (ANS_Checkup_SeeData *)(pHead->pFrame+sizeof(ANS_Checkup_See));
		TCHAR Buf[512];
		CString str;
		long lCount = m_wndList.GetItemCount();
		for ( int i=0;i<pSee->lCount;i++ )
		{
			ANS_Checkup_SeeData * pNewData = new ANS_Checkup_SeeData;
			*pNewData = *pData;
			POSITION pos = m_Checkup.AddTail(pNewData);
			//(_T("���,50; �ύ��˾,80;  �ύ��,80;        ��������,200;�ύʱ��,150;")));
			_stprintf(Buf , _T("%d") , lCount+i+1 );
			m_wndList.InsertItem(lCount+i , Buf , 0 );
			m_wndList.SetItemData(lCount+ i , (DWORD_PTR)pos );    //��Pos
			m_wndList.SetItemText(lCount+i,1,_itot(pData->lCorpID,Buf,10));
			m_wndList.SetItemText(lCount+i,2,pData->szSender);
			m_wndList.SetItemText(lCount+i,3,pData->szSendNum);
			_tcscpy(Buf , pData->szRecvNum );
#ifdef SMSMANAGER_KF
			Buf[4]='*';Buf[5]='*';Buf[6]='*';
#endif
			m_wndList.SetItemText(lCount + i, 4, Buf);

			switch (pData->lRecvNumType)
			{
			case 0:
				str = _T("�ƶ�");
				break;
			case 1:
				str = _T("��ͨ");
				break;
			case 2:
				str = _T("С��ͨ");
				break;
			case 3:
				str = _T("����");
				break;
			default:
				str = _T("");
				break;
			}
			m_wndList.SetItemText(lCount + i, 5, str);

			_stprintf( Buf , _T("%04d.%02d.%02d %02d:%02d") , pData->tSubTime.wYear,pData->tSubTime.wMonth,pData->tSubTime.wDay,pData->tSubTime.wHour,pData->tSubTime.wMinute );
			m_wndList.SetItemText(lCount+i,6,Buf);
			_stprintf(Buf, _T("%04d.%02d.%02d %02d:%02d"), pData->tTimer.wYear, pData->tTimer.wMonth, pData->tTimer.wDay, pData->tTimer.wHour, pData->tTimer.wMinute);
			m_wndList.SetItemText(lCount + i, 7, Buf);
			m_wndList.SetItemText(lCount+i,8,pData->szMsg);
			pData ++;
		}
		if ( m_bProcess )  //�ǵ����û�����Ҫ��ʾ������,��������һ��
		{
			m_Process.SetProcess( pSee->lPageAll , pSee->lPageCount );
		}
		//��Ҫ����
		if (this->m_pMainFrame->m_Setup.Warning_Enable && m_pMainFrame->m_Setup.Warning_Timer > 0)
		{
			if (!m_pMainFrame->m_Setup.Warning_OnlyContent)
			{
			KillTimer(1);

			Warning_Close();  //ˢ���ˣ�ֹͣ����

#ifdef _DEBUG
				SetTimer(1, 8 * 1000, NULL);
#else
				SetTimer(1, m_pMainFrame->m_Setup.Warning_Timer * 60 * 1000, NULL);
#endif
			}
			else
			{
				KillTimer(11);  //ˢ���ˣ����ó�ʱ���
				if (pSee->lCount > 0)  //�����ݣ���Ҫ����
				{
					Warning_Checkup(_T("��������"));
				}
				else
				{
					//���������ݣ�ͬʱ���ж���������Ƿ������ݣ�����������Ҳû���ݣ��Ͳ�����������
					if (m_pMainFrame->m_pUserView->m_dlgSmsTask.m_lCheckCount <= 0 &&
						m_pMainFrame->m_pUserView->m_dlgTemplate.m_lCheckCount <= 0 &&
						m_pMainFrame->m_pUserView->m_dlgSignName.m_lCheckCount <= 0)
					{
						Warning_Close();  //�������ˣ�ֹͣ����
					}

#ifdef _DEBUG
					SetTimer(10, 8 * 1000, NULL);
#else
					SetTimer(10, m_pMainFrame->m_Setup.Warning_Timer * 60 * 1000, NULL);  //�´��Զ�ˢ��ʱ��
#endif
				}
			}

		}
		return true;
	}
	//��˶��ţ��൱��ɾ��
	if (pHead->lFuncType == SMSFUNC_CHECKUP)
	{
		ANS_Checkup     * pDel     = (ANS_Checkup     *)pHead->pFrame;
		ANS_CheckupData * pDelData = (ANS_CheckupData *)(pHead->pFrame+sizeof(ANS_Checkup));
		POSITION pos,pos2;
		ANS_Checkup_SeeData  * pCheckupData;
		if ( pDel->bAll )
		{
			RefreshInfo();  //��һ����ͨ�����У���Ҫ����ˢ��
		}
		else
		{
			m_wndList.ShowWindow( SW_HIDE );  //�ӿ��ٶ�
			for ( int i = pDel->lCount-1 ; i>=0 ; i-- )
			{
				if ( pDelData[i].lSendID )  //��˳ɹ�
				{
					pos = (POSITION)m_wndList.GetItemData( pDelData[i].lItem );
					pos2 = pos;
					pCheckupData = m_Checkup.GetNext( pos );
					if ( pCheckupData->lSendID == pDelData[i].lSendID )  //ID��ͬ�IJſ�ɾ��
					{
						delete pCheckupData;       //��ɾ������
						m_Checkup.RemoveAt(pos2);   //���б���ɾ��
						m_wndList.DeleteItem(pDelData[i].lItem); //��ListCtrl��ɾ��
					}
				}
			}
			m_wndList.ShowWindow( SW_SHOW );  //�ӿ��ٶ�
		}
		return true;
	}
	return false;
}

BOOL CCheckupDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//ȡ�ù��ò���
	//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
	this->GetParent()->GetParentFrame();
	m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
	m_pSocket    = &m_pMainFrame->m_Socket;

	//��ʼ��List
	m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CHECKUP) );
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("���,50;  ��ҵID,80;  �ύ��,80; ���ͺ���,200; ���պ���,150;��Ӫ��,80;�ύʱ��,160;��ʱʱ��,160;        ��������,1000;"));
	m_wndList.SetGridLines(true);
	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);	
	m_bInit = true;

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CCheckupDlg::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	if ( m_bInit )
	{
		m_wndList.MoveWindow( 0 , 0 , cx,cy);
	}	
}

void CCheckupDlg::Close()
{
	//������������
	while (!m_Checkup.IsEmpty())
	{
		ANS_Checkup_SeeData * pData = m_Checkup.GetHead();
		m_Checkup.RemoveHead();
		delete pData;
	}

}

void CCheckupDlg::OnDblclkCheckupList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;
	On_User_See();
}

void CCheckupDlg::OnRclickCheckupList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;
	ShowRMenu();
}

void CCheckupDlg::ShowRMenu()
{
	if (!m_pMainFrame->GetUserPurview(PURVIEW_FILT,false))  //û�в鿴Ȩ��
		return ;

	CMenu menu;
	menu.CreatePopupMenu();
	BOOL bLock = false;
	long lItem = this->GetCurrentSelected();
	if ( lItem >= 0 )
		bLock = isLockItem( lItem , false );   //ȡ���Ƿ���������

	//�޸�
	if (lItem >= 0 && !bLock)
	{
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_SEE, _T(" �� �� "));
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_PASS, _T(" ѡ�е����ͨ�� "));
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_NOPASS, _T(" ѡ�е����ʧ�� "));
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_CHANGETDPASS, _T(" ѡ�е�תӪ��ͨ�������ͨ�� "));
		if (m_wndList.GetSelectedCount() == 1)  //ֻ��ѡ����һ����¼ʱ�ŵ����������ѡ��
		{
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPPASS, _T(" ����ҵ���е����ͨ�� "));
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPNOPASS, _T(" ���û����е����ʧ�� "));
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPTDPASS, _T(" ����ҵ��ͨ�������ͨ�� "));
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPTDNOPASS, _T(" ���û���ͨ�������ʧ�� "));
		menu.AppendMenu(MF_SEPARATOR);
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPCHANGETDPASS, _T(" ����ҵ����תӪ��ͨ�������ͨ�� "));
		menu.AppendMenu(MF_STRING, MENU_CHECKUP_CORPTDCHANGETDPASS, _T(" ����ҵ��ͨ��תӪ��ͨ�������ͨ�� "));
		}

		if ( m_pMainFrame->GetUserPurview(PURVIEW_LIST,false) && !m_pMainFrame->m_bSOS ) //�в�ѯ�嵥�IJ��д�Ȩ��
		{
			menu.AppendMenu(MF_SEPARATOR );
			menu.AppendMenu(MF_STRING     , MENU_CHECKUP_CORPLIST, _T(" ��ѯ����ҵ�����嵥 ") );
		}
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING     , MENU_CHECKUP_CORPOFF, _T(" ���ô���ҵ ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_CHECKUP_SEE, _T(" �� �� ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_CHECKUP_PASS, _T(" ѡ�е����ͨ�� ") );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_CHECKUP_NOPASS, _T(" ѡ�е����ʧ�� ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_CHECKUP_CORPPASS  , _T(" ����ҵ���е����ͨ�� ") );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_CHECKUP_CORPNOPASS, _T(" ���û����е����ʧ�� ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_CHECKUP_CORPLIST, _T(" ��ѯ����ҵ�����嵥 ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_CHECKUP_CORPOFF, _T(" ���ô���ҵ ") );
	}
	menu.AppendMenu(MF_SEPARATOR );
	//ˢ��
	menu.AppendMenu(MF_STRING     , MENU_CHECKUP_REFRESH, _T(" ˢ �� ") );

	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}
void CCheckupDlg::On_User_See()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lItem = GetCurrentSelected();
	if ( lItem < 0 )
		return ;

	if (isLockItem(lItem))
	{
		return ;
	}

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_Checkup_SeeData * pData = m_Checkup.GetNext( pos );
	if (pData)
	{
		DLG_CheckupSee dlg(this);
		dlg.SetParam(*pData);
		dlg.DoModal();
	}
}
void CCheckupDlg::On_User_Pass()
{
	SmsCheckup( true ,false,0,false);
}
void CCheckupDlg::On_User_NoPass()
{
	SmsCheckup( false,false, 0, false);
}
void CCheckupDlg::On_User_ChangeTdPass()
{
	SmsCheckup(true, false, 2, true);
}
void CCheckupDlg::On_User_CorpPass()
{
	SmsCheckup( true,true, 0, false);
}
void CCheckupDlg::On_User_CorpNoPass()
{
	SmsCheckup( false,true, 0, false);
}

void CCheckupDlg::On_User_CorpTDPass()
{
	SmsCheckup(true, true, 1, false);
}
void CCheckupDlg::On_User_CorpTDNoPass()
{
	SmsCheckup(false, true, 1, false);
}
void CCheckupDlg::On_User_CorpChangeTDPass()
{
	SmsCheckup(true, true, 2, true);
}
void CCheckupDlg::On_User_CorpTDChangeTDPass()
{
	SmsCheckup(true, true, 1, true);
}

void CCheckupDlg::On_User_CorpList()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lItem = GetCurrentSelected();
	if ( lItem < 0 )
		return ;

	if (isLockItem(lItem))
	{
		return ;
	}

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_Checkup_SeeData * pData = m_Checkup.GetNext( pos );
	if (!pData)
		return ;


	this->m_pMainFrame->ShowFuncDlg( FUNC_LIST );

	this->m_pMainFrame->m_pUserView->m_dlgList.m_lQueryCorpID = pData->lCorpID;
	this->m_pMainFrame->m_pUserView->m_dlgList.OnListQuery();
}
void CCheckupDlg::On_User_CorpOFF()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lItem = GetCurrentSelected();
	if ( lItem < 0 )
		return ;

	if (isLockItem(lItem))
	{
		return ;
	}

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_Checkup_SeeData * pData = m_Checkup.GetNext( pos );
	if (!pData)
		return ;

	ANS_Corp_SeeData data={0};
	data.lCorpID = pData->lCorpID;
	
	DLG_Corp_Oper_Open dlg(this);
	dlg.SetParam(&data,false,this->m_pMainFrame->m_Setup.szUser);
	if ( dlg.DoModal() == IDOK )
	{

		REQ_CorpOFF * pCorp = new REQ_CorpOFF;memset(pCorp,0,sizeof(REQ_CorpOFF));
		pCorp->lCorpID = pData->lCorpID;
		pCorp->lStatus = 0;  //0Ϊ���ã�1Ϊ����
		_tcscpy(pCorp->szOper , dlg.m_strOperName );
		_tcscpy(pCorp->szBZ , dlg.m_strBZ );
		
		m_pMainFrame->SendFrame(SMSFUNC_CORPOFF,(BYTE*)pCorp,sizeof(REQ_CorpOFF));
	}

}

void CCheckupDlg::On_User_Refresh()
{
	RefreshInfo();
}

long CCheckupDlg::GetCurrentSelected()
{
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	if ( pos )
	{
		return m_wndList.GetNextSelectedItem(pos);
	}
	return -1;
}

void CCheckupDlg::SetLockItem(long lItem, BOOL bLock)
{
	if ( bLock )
		m_wndList.SetIconIndex( lItem , 1 );
	else
		m_wndList.SetIconIndex( lItem , 0 );
}

BOOL CCheckupDlg::isLockItem(long lItem, BOOL bShowWarning)
{
	BOOL b = (m_wndList.GetIconIndex(lItem) == 1);
	if ( b && bShowWarning )
	{
		MessageBox( _T("��¼����������ȴ����������غ��ٲ���!") , _T("������") , MB_ICONINFORMATION );
	}
	return b;
}

void CCheckupDlg::SmsCheckup(BOOL bPass,BOOL bAll,long lTD,BOOL bChange)
{
	//bPass  �Ƿ����ͨ����
	//bAll   �Ƿ�ȫ����������Ϊֻ����ѡ���
	//lTD    �Ƿ�ֻ����ͨ���ġ�0-������ͨ����1-��������ѡ���ͨ����2-��������ҵ�����з��͵�ͨ����
	//bChange �Ƿ�ת�Ƶ�Ӫ��ͨ����

	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lCount = m_wndList.GetSelectedCount();
	long lSize = sizeof(REQ_Checkup)+sizeof(ANS_CheckupData)*lCount;
	BYTE * pCheckupSend = new BYTE[lSize];memset(pCheckupSend,0,lSize);
	BOOL bGetFirst=false;
	REQ_Checkup     * pCheckup     = (REQ_Checkup *)pCheckupSend;   //ͷ
	ANS_CheckupData * pCheckupData = (ANS_CheckupData *)(pCheckupSend+sizeof(REQ_Checkup));
	pCheckup->lCount = lCount;
	pCheckup->bAll = false;
	pCheckup->lTDType = lTD;
	pCheckup->bChangeTD = bChange;
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	ANS_Checkup_SeeData * pSeeData;
	COleDateTime tMaxDelayTime = COleDateTime::GetCurrentTime();  //ȡ�ʱ��Ķ���
	CString strMaxDelayMsg;
	long lMaxDelayCorpID=0;
	long lMaxDelayUserID = 0;
	POSITION pos2;
	while(pos)
	{
		pCheckupData->bPass   = bPass;
		pCheckupData->lItem   = m_wndList.GetNextSelectedItem(pos);
		pos2                  = (POSITION)m_wndList.GetItemData(pCheckupData->lItem);
		pSeeData              = m_Checkup.GetNext(pos2);  //ȡ���б��е�pos
		pCheckupData->lSendID = pSeeData->lSendID;
#ifdef _UNICODE
		pCheckupData->bDS     = pSeeData->bDS;
#endif

		if (COleDateTime(pSeeData->tSubTime) < tMaxDelayTime)  //ȡ�ʱ��Ķ���
		{
			tMaxDelayTime = pSeeData->tSubTime;
			strMaxDelayMsg = pSeeData->szMsg;
			lMaxDelayCorpID = pSeeData->lCorpID;
			lMaxDelayUserID = pSeeData->lUserID;
		}


		if ( !bGetFirst )
		{
			bGetFirst = true;
			pCheckup->bPass   = bPass;
			pCheckup->lCorpID = pSeeData->lCorpID;
			_tcscpy(pCheckup->szMsg , pSeeData->szMsg );
			if ( bAll )
			{
				if ( pCheckup->bPass == false )  //�����ȫ�����ʧ�ܣ���Ҫȡ�û�ID
					pCheckup->lCorpID = pSeeData->lUserID;

				pCheckup->bAll = true;
				break;
			}
		}

		pCheckupData ++;
	}
	if (strMaxDelayMsg.GetLength() > 0)
	{
		_tcscpy(pCheckup->szMsg, strMaxDelayMsg);
		pCheckup->lCorpID = lMaxDelayCorpID;
		if (bAll && pCheckup->bPass == false) //�����ȫ�����ʧ�ܣ���Ҫȡ�û�ID
		{
			pCheckup->lCorpID = lMaxDelayUserID;
		}

	}

	tMaxDelayTime.GetAsSystemTime(pCheckup->tMaxDelayTime);
	m_pMainFrame->SendFrame( SMSFUNC_CHECKUP , pCheckupSend , lSize );
}


void CCheckupDlg::Warning_Checkup(CString strTip)
{
	if (m_pMainFrame->m_Setup.Warning_Window)
	{
		//��ͼ����뵽������
		CString strTip2 = _T("%s\r\nƽ̨1");
#ifdef SMSCENTER_TWO
		strTip2 = _T("%s\r\nƽ̨2");
#endif
#ifdef SMSCENTER_THREE
		strTip2 = _T("%s\r\nƽ̨3");
#endif
		CString strTip3;
		strTip3.Format(strTip2, strTip);

		//��ʾ���ڣ���ʾ���յ�����Ϣ
		if (!pDlgWarning)
		{
			DLG_ShowWarning * dlg = new DLG_ShowWarning(GetDesktopWindow());
			pDlgWarning = dlg;
			dlg->Create(IDD_SHOWWARNING, GetDesktopWindow());
			dlg->SetParam(strTip3, this->m_pMainFrame, &pDlgWarning);
			dlg->ShowWindow(SW_SHOW);
			this->SetFocus();
		}
		}

	//��������
	if (m_pMainFrame->m_Setup.Warning_Sound)
	{
		TCHAR szFileName[512] = { 0 };
		m_pMainFrame->GetCurrentPath(szFileName);
		_tcscat(szFileName, _T("air.wav"));
		PlaySound(szFileName, NULL, SND_FILENAME | SND_NODEFAULT | SND_ASYNC | SND_LOOP);
	}

	if (m_pMainFrame->m_Setup.Warning_Flash)
	{
		SetTimer(2, 500, NULL);  //����ͼ������
		m_lIconCount = 0;
	}
	}

void CCheckupDlg::Warning_FlashIcon(CString strTip)
{
	//��ͼ����뵽������
	CString strTip2 = _T("%s\r\nƽ̨1");
#ifdef SMSCENTER_TWO
	strTip2 = _T("%s\r\nƽ̨2");
#endif
#ifdef SMSCENTER_THREE
	strTip2 = _T("%s\r\nƽ̨3");
#endif
	CString strTip3;
	strTip3.Format(strTip2, strTip);

	NOTIFYICONDATA niData;
	m_lIconCount++;
	if (m_lIconCount > 888888)
		m_lIconCount = 1;

	if (m_lIconCount % 2 == 0)
		niData.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	else
		niData.hIcon = AfxGetApp()->LoadIcon(IDI_NULL);

	_stprintf(niData.szTip, strTip3);

	niData.cbSize = sizeof(NOTIFYICONDATA);
	niData.hWnd = this->m_pMainFrame->m_hWnd;
	niData.uID = 125;
	niData.uCallbackMessage = SHELL_ICON_MESS;
	if (m_bAddIcon)
	{
		niData.uFlags = NIF_ICON | NIF_TIP;
		Shell_NotifyIcon(NIM_MODIFY, &niData);
	}
	else
	{
		niData.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
		Shell_NotifyIcon(NIM_ADD, &niData);
		m_bAddIcon = true;
	}
}

void CCheckupDlg::Warning_Close()
{
	KillTimer(2);
	if (m_bAddIcon)
	{
		NOTIFYICONDATA niData;
		niData.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
		niData.cbSize = sizeof(NOTIFYICONDATA);
		niData.hWnd = this->m_pMainFrame->m_hWnd;
		niData.uID = 125;
		niData.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
		niData.uCallbackMessage = SHELL_ICON_MESS;
		_stprintf(niData.szTip, _T("������"));
		Shell_NotifyIcon(NIM_DELETE, &niData);
		m_bAddIcon = false;
	}
	if (this->m_pMainFrame->m_pUserView->m_dlgCheckup.pDlgWarning)
	{
		this->m_pMainFrame->m_pUserView->m_dlgCheckup.pDlgWarning->PostMessage(WM_CLOSE);
	}
	//ֹͣ��������
	PlaySound(NULL, NULL, SND_FILENAME);
}


void CCheckupDlg::OnTimer(UINT_PTR nIDEvent)
{
	CDialog::OnTimer(nIDEvent);

	if (nIDEvent == 1)
	{
		KillTimer(nIDEvent);
		Warning_Checkup(_T("������˳�ʱ"));
	}

	if (nIDEvent == 2)
	{
		Warning_FlashIcon(_T("������˳�ʱ"));
	}

	if (nIDEvent == 10)  //ˢ������
	{
		KillTimer(10);
#ifdef  _DEBUG
		SetTimer(11, 6000, NULL);  //40��ˢ�³�ʱ
#else
		SetTimer(11, 40000, NULL);  //40��ˢ�³�ʱ
#endif
		RefreshInfo(false);

	}

	if (nIDEvent == 11)  //ˢ�³�ʱ
	{
		KillTimer(nIDEvent);
		Warning_Checkup(_T("����ˢ�³�ʱ"));

#ifdef _DEBUG
		SetTimer(10, 8 * 1000, NULL);
#else
		SetTimer(10, m_pMainFrame->m_Setup.Warning_Timer * 60 * 1000 / 2, NULL);  //��ʱ���ٴ�ˢ��
#endif
	}

}


void CCheckupDlg::OnDestroy()
{

	if (m_bAddIcon)
	{
		NOTIFYICONDATA niData;
		niData.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
		niData.cbSize = sizeof(NOTIFYICONDATA);
		niData.hWnd = this->m_pMainFrame->m_hWnd;
		niData.uID = 125;
		niData.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
		niData.uCallbackMessage = SHELL_ICON_MESS;
		_stprintf(niData.szTip, _T("������"));
		Shell_NotifyIcon(NIM_DELETE, &niData);
		m_bAddIcon = false;
	}

	if (pDlgWarning)
	{
		pDlgWarning->OnClose();
		//pDlgWarning->DestroyWindow();
		//delete pDlgWarning;
		//pDlgWarning = NULL;
	}

	CDialog::OnDestroy();

	// TODO: �ڴ˴�������Ϣ�����������
}