// K_MmsTask.cpp : implementation file
//

#include "stdafx.h"
#include "smsmanager.h"
#include "K_MmsTask.h"

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

/////////////////////////////////////////////////////////////////////////////
// CK_MmsTask dialog

#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_SmsLogSee.h"
#include "DLG_HZB_Export.h"
#include "DLG_Corp_Oper_Open.h"
#include "DLG_BBS_Send.h"

CK_MmsTask::CK_MmsTask(CWnd* pParent /*=NULL*/)
	: CDialog(CK_MmsTask::IDD, pParent)
{
	//{{AFX_DATA_INIT(CK_MmsTask)
	m_lCorp = -1;
	m_tBegin = COleDateTime::GetCurrentTime();
	m_tEnd = COleDateTime::GetCurrentTime();
	m_lTop = -1;
	m_lStatus = -1;
	//}}AFX_DATA_INIT
	m_bInit = false;
	m_bRefresh = false;
//	m_bProcess = false;
	m_lQueryCorpID = 0;
	m_lCheckCount = 0;  //ÐèÒªÉóºËµÄÊýÁ¿
}


void CK_MmsTask::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CK_MmsTask)
	DDX_Control(pDX, IDC_LIST_CORPID, m_E_CorpID);
	DDX_Control(pDX, IDC_LIST_S1, m_S_S1);
	DDX_Control(pDX, IDC_LIST_CORP, m_L_Corp);
	DDX_Control(pDX, IDC_LIST_LIST, m_wndList);
	DDX_CBIndex(pDX, IDC_LIST_CORP, m_lCorp);
	DDX_DateTimeCtrl(pDX, IDC_LIST_TBEGIN, m_tBegin);
	DDX_DateTimeCtrl(pDX, IDC_LIST_TEND, m_tEnd);
	DDX_CBIndex(pDX, IDC_LIST_TOP, m_lTop);
	DDX_CBIndex(pDX, IDC_LIST_STATUS, m_lStatus);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CK_MmsTask, CDialog)
	//{{AFX_MSG_MAP(CK_MmsTask)
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_LIST_QUERY, OnListQuery)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_LIST, OnDblclkListList)
	ON_BN_CLICKED(IDC_LIST_QUERY2, OnListQuery2)
	ON_NOTIFY(NM_RCLICK, IDC_LIST_LIST, OnRclickListList)
	//}}AFX_MSG_MAP
	ON_COMMAND(MENU_LIST_SEE      , On_User_See )
	ON_COMMAND(MENU_LIST_ADDBACK  , On_User_AddBack )
	ON_COMMAND(MENU_LIST_SENDBBS  , On_User_SendBBS )
	ON_COMMAND(MENU_LIST_CORPLIST , On_User_CorpList )
	ON_COMMAND(MENU_LIST_CORPOFF  , On_User_CorpOFF )
	ON_COMMAND(MENU_LIST_EXPORT   , On_User_Export )
	ON_COMMAND(MENU_LIST_COPY     , On_User_Copy )


	ON_COMMAND( MENU_MMSTASK_PASS , On_Task_Pass )
	ON_COMMAND( MENU_MMSTASK_NOPASS , On_Task_NoPass )
	ON_COMMAND( MENU_MMSTASK_STOP , On_Task_Stop )
	ON_COMMAND( MENU_MMSTASK_RESEND , On_Task_ReSend )
	
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CK_MmsTask message handlers

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

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

BOOL CK_MmsTask::RefreshInfo()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return false;
	}
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_LIST,false) )
	{
		GetDlgItem(IDC_LIST_TBEGIN)->EnableWindow(false);
	}
	m_pMainFrame->SendFrame(SMSFUNC_CORP_NAME,NULL,0);

	OnListQuery(); //²éѯÉóºËÖеÄÊý¾Ý

	return true;
}

BOOL CK_MmsTask::ProcessSocket(Socket_Head_Add *pHead,BYTE* pFrame)
{
	CString str;
	//È¡Çåµ¥
	if (pHead->lFuncType == SMSFUNC_PLTASKMMS_SEE)
	{
		ANS_PLTaskMms_See * pList = (ANS_PLTaskMms_See *)pFrame;
		ANS_PLTaskMms_SeeData * pData = (ANS_PLTaskMms_SeeData *)(pFrame+sizeof(ANS_PLTaskMms_See));
		//CString strTemp;
		//strTemp.Format( _T("²éѯÆóÒµ (%d/%d)") , pList->lPageCount,pList->lPageAll );
		//m_S_S1.SetWindowText( strTemp );
		//Ìí¼Óµ½List
		long lCount = m_wndList.GetItemCount();
		TCHAR szBuf[512]={0};
		CString str;
		CString strTemp;
		m_lCheckCount = 0;
		for ( int i = 0 ; i< pList->lCount;i++)
		{
			ANS_PLTaskMms_SeeData * pNewData = new ANS_PLTaskMms_SeeData;
			*pNewData = *pData;
			POSITION pos = m_ListData.AddTail(pNewData);

			//m_wndList.SetHeadings(_T("ÐòºÅ,40; Àà ÐÍ,80;״̬,50;ÆóÒµID,60;·¢ËÍÈË,70; ·¢ËͺÅÂë,120; ½ÓÊÕÈË,70; ½ÓÊÕºÅÂë,120;  Ìύʱ¼ä,150;  ·¢ËÍʱ¼ä,150;  ½ÓÊÕʱ¼ä,150;     ¶ÌÐÅÄÚÈÝ,1000;    ÐÅÏ¢ID,120;"));
			m_wndList.InsertItem( lCount+i,_itot(lCount+i+1,szBuf,10),0);

			long lIcon;
			switch(pNewData->lStatus)
			{
			case 0:
			default:
				 strTemp = _T("ÕýÔÚÉÏ´«");
				 break;
			case 1:
				strTemp = _T("´ý·¢ËÍ");
				lIcon = 0;
				break;
			case 2:
				strTemp = _T("ÉóºËÖÐ");
				lIcon = 0;
				m_lCheckCount++;
				break;
			case 3:
				strTemp = _T("ÉóºËʧ°Ü");
				lIcon = 2;
				break;
			case 4:
				strTemp = _T("ÕýÔÚ·¢ËÍ");
				lIcon = 1;
				break;
			case 5:
				strTemp = _T("Óà¶î²»×ã");
				lIcon = 2;
				break;
			case 6:
				strTemp = _T("Ç¿ÖÆÍ£Ö¹");
				lIcon = 2;
				break;
			case 7:
				strTemp = _T("·¢ËÍÍê³É");
				lIcon = 3;
				break;
			case 8:
				strTemp = _T("Óû§ÉóºË");
				lIcon = 0;
				break;
			case 9:
				strTemp = _T("Óû§ÉóºË2");  //´ËģʽÏ£¬Óû§ÉóºËºó£¬»¹ÐèÒª¹ÜÀíÔ±Éó
				lIcon = 0;
				break;
			case 10:
				strTemp = _T("Óû§ÉóºËʧ°Ü");
				lIcon = 2;
				break;
			}

			long lTemp=1;
			////0-ÕýÔÚÉÏ´«£¬1-´ý·¢ËÍ£¬2-ÉóºË£¬3-ÉóºËʧ°Ü,4-ÕýÔÚ·¢ËÍ£¬5-Óà¶î²»×㣬6-Ç¿ÖÆÍ£Ö¹,7-·¢ËÍÍê³É,8-Óû§ÉóºË,9-Óû§ÉóºË2,10-Óû§ÉóºËʧ°Ü
			m_wndList.SetItemText(lCount+i,lTemp++,strTemp);
			str.Format( _T("%d-%s[%s]") , pNewData->lCorpID,pNewData->szCorpName,pNewData->szCreateUser);
			m_wndList.SetItemText(lCount+i,lTemp++,str);
			strTemp.Format(_T("%d") , pNewData->lMobileCount);
			m_wndList.SetItemText(lCount+i,lTemp++,strTemp);
			strTemp.Format(_T("%d") , pNewData->lYFMobileCount);
			m_wndList.SetItemText(lCount+i,lTemp++,strTemp);

			m_wndList.SetItemText(lCount+i,lTemp++,pNewData->szTitle);

			strTemp.Format(_T("%.1fk") , (double)pNewData->lmmSize/1024.0f);
			m_wndList.SetItemText(lCount+i,lTemp++,strTemp);


			strTemp.Format(_T("%04d.%02d.%02d %02d:%02d") , pNewData->tCreateTime.wYear,pNewData->tCreateTime.wMonth,pNewData->tCreateTime.wDay,pNewData->tCreateTime.wHour,pNewData->tCreateTime.wMinute);
			m_wndList.SetItemText(lCount+i,lTemp++,strTemp);

			COleDateTime t(pNewData->tTimer);
			if ( t.GetStatus() == COleDateTime::valid )
			{
				strTemp.Format(_T("%04d.%02d.%02d %02d:%02d") , pNewData->tTimer.wYear,pNewData->tTimer.wMonth,pNewData->tTimer.wDay,pNewData->tTimer.wHour,pNewData->tTimer.wMinute);
			}
			else
			{
				strTemp =_T(" ");
			}
			m_wndList.SetItemText(lCount+i,lTemp++,strTemp);

			m_wndList.SetItemData(lCount+i,(DWORD)(pos) );

			pData++;
		}
		return true;
	}

	if ( pHead->lFuncType == SMSFUNC_PLTASKMMS_MODIFY)  //ÐÞ¸ÄÓû§
	{
		ANS_PLTaskMms_Modify     * pSee     = (ANS_PLTaskMms_Modify *)pFrame;

		if ( pSee->bOK )
		{
			ANS_PLTaskMms_SeeData * pSeeData = NULL;
			if ( m_wndList.GetItemData(pSee->lItem) >0 )
			{
				pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(pSee->lItem));
			}
			if ( pSeeData && pSeeData->lPLTaskMmsID == pSee->lPLTaskMmsID )
			{
				CString strTemp;
				long lIcon;
				switch(pSee->lStatus)
				{
				case 0:
				default:
					strTemp = _T("ÕýÔÚÉÏ´«");
					break;
				case 1:
					strTemp = _T("´ý·¢ËÍ");
					lIcon = 0;
					break;
				case 2:
					strTemp = _T("ÉóºËÖÐ");
					lIcon = 0;
					break;
				case 3:
					strTemp = _T("ÉóºËʧ°Ü");
					lIcon = 2;
					break;
				case 4:
					strTemp = _T("ÕýÔÚ·¢ËÍ");
					lIcon = 1;
					break;
				case 5:
					strTemp = _T("Óà¶î²»×ã");
					lIcon = 2;
					break;
				case 6:
					strTemp = _T("Ç¿ÖÆÍ£Ö¹");
					lIcon = 2;
					break;
				case 7:
					strTemp = _T("·¢ËÍÍê³É");
					lIcon = 3;
					break;
				}

				m_wndList.SetItemText(pSee->lItem , 1 , strTemp );

			}
		}
		else
		{
			str.Format( _T("ÐÞ¸ÄÈÎÎñ״̬ʧ°Ü£º%s") , pSee->szErrMsg );
			MessageBox(str , _T("´íÎó") , MB_ICONWARNING );
		}
		return true;
	}


	return false;
}

BOOL CK_MmsTask::ProcessSocket(Socket_Head *pHead)
{
	CString strTemp;
	//È¡¹ýÂËÐÅÏ¢
	if (pHead->lFuncType == SMSFUNC_CORP_NAME)
	{
		m_bRefresh = true;  //ÒѾ­Ë¢Ð¹ý
		ANS_Corp_Name     * pCorp = (ANS_Corp_Name *)pHead->pFrame;
		ANS_Corp_NameData * pData = (ANS_Corp_NameData *)(pHead->pFrame+sizeof(ANS_Corp_Name));
		m_L_Corp.ResetContent();  //ɾ³ýÔ­ÒÑÓÐµÄÆóÒµ
		m_L_Corp.AddString( _T("ËùÓÐÆóÒµ") );
		this->Close_Corp();              //¹Ø±ÕÔ­¶ÓÁÐ
		for ( int i=0;i<pCorp->lCount;i++ )
		{
			ANS_Corp_NameData * pNewData = new ANS_Corp_NameData;
			*pNewData = *pData;
			POSITION pos = m_Corp.AddTail(pNewData);
			strTemp.Format( _T("%d-%s"),pData->lCorpID,pData->szCorpName);
			long lItem = m_L_Corp.AddString( strTemp );
			m_L_Corp.SetItemData( lItem , (DWORD)pos);
			pData ++;
		}
		m_L_Corp.SetCurSel(0);
		return true;
	}
	return false;
}

BOOL CK_MmsTask::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_LIST) );
	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("ÐòºÅ,40;״̬,80;Ìá½»Óû§,300; ºÅÂëÊý,60;ÒÑ·¢ºÅÂë,65;  ²ÊÐűêÌâ,250;²ÊÐÅ´óС,70;Ìύʱ¼ä,150;¶¨Ê±Ê±¼ä,130;"));
	m_wndList.SetGridLines(true);
//	m_wndList.SetImageList(&m_Image,LVSIL_SMALL);

	m_bInit = true;

	/*
	//ĬÈÏÈ¡ÉÏÔµÄÄÚÈÝ
	SYSTEMTIME t; ::GetLocalTime(&t);
	t.wDay = 1;//´Ó1ºÅÆð
	t.wMonth = t.wMonth-1;
	if ( t.wMonth <=0 )
	{
		t.wMonth = 12;
		t.wYear  = t.wYear-1;
	}
	m_tBegin.SetDate( t.wYear,t.wMonth,t.wDay );  //Æðʼ
	if ( t.wMonth == 1 ||
		 t.wMonth == 3 ||
		 t.wMonth == 5 ||
		 t.wMonth == 7 ||
		 t.wMonth == 8 ||
		 t.wMonth == 10 ||
		 t.wMonth == 12 )
	{
		 t.wDay = 31;
	}
	else
		if (t.wMonth == 2 )
			t.wDay = 28;
		else
			t.wDay = 30;
	m_tEnd.SetDate( t.wYear,t.wMonth,t.wDay );//½áÊø
	*/

	COleDateTime t=COleDateTime::GetCurrentTime();
	COleDateTime t2=t-COleDateTimeSpan(3,0,0,0);  //ĬÈϲé3ÌìÄÚÊý¾Ý
	m_tBegin = t2; //¿ªÊ¼
	m_tEnd   = t; //½áÊø

	m_lStatus=3;
	m_lTop = 1;        //ĬÈÏÏÔʾǰ200Ìõ¶ÌÐÅ

	UpdateData(false);

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

void CK_MmsTask::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
	
	if ( m_bInit )
	{
		CRect rect;
		m_S_S1.GetWindowRect(&rect);
		m_wndList.MoveWindow( 0 , 0+rect.Height()+5 , cx,cy-rect.Height()-5);
	}	
}

void CK_MmsTask::Close()
{
	Close_Corp();
	Close_ListData();
}

void CK_MmsTask::OnListQuery() 
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	UpdateData(true);


	if ( m_tEnd < m_tBegin )
	{
		MessageBox( _T("²éѯ½áÊøÈÕÆÚ²»ÄÜСÓÚÆðʼÈÕÆÚ£¬Çë¸ÄÕý!") , _T("´íÎó") , MB_ICONWARNING );
		return ;
	}
	REQ_PLTaskMms_See * pSee = new REQ_PLTaskMms_See;
	memset(pSee , 0 , sizeof(REQ_PLTaskMms_See));

	if ( m_lQueryCorpID )
	{
		pSee->lCorpID = m_lQueryCorpID;
		pSee->lStatus = -1;        //²éѯËùÓеļǼ
		m_lQueryCorpID = 0;
	}
	else
	{
		
		if ( m_lCorp <= 0 )  //Ñ¡ÁËËùÓÐÆóÒµ
		{
			pSee->lCorpID = -1;
		}
		else
		{
			POSITION pos = (POSITION)m_L_Corp.GetItemData(m_lCorp);
			POSITION pos2 = pos;
			ANS_Corp_NameData * pData = m_Corp.GetNext( pos );
			if (pData)
			{
				pSee->lCorpID = pData->lCorpID;
			}
			else
			{
				return;
			}
		}
	}

	m_tBegin.GetAsSystemTime( pSee->tBegin );
	m_tEnd.GetAsSystemTime( pSee->tEnd );

	switch ( m_lTop )
	{
	case 1:
		pSee->lTop = 200;
		break;
	case 2:
		pSee->lTop = 500;
		break;
	case 3:
		pSee->lTop = 1000;
		break;
	case 4:
		pSee->lTop = 2000;
		break;
	case 5:
		pSee->lTop = 5000;
		break;
	case 0:
	default:
		pSee->lTop = -1;
		break;
	}
	pSee->lStatus =  m_lStatus-1;  //²éѯ״̬¡£

	this->Close_ListData();              //¹Ø±ÕÔ­¶ÓÁÐ
	m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
	m_wndList.DeleteAllItems();  //ÏÈɾ³ýËùÓмǼ
	m_pMainFrame->SendFrame(SMSFUNC_PLTASKMMS_SEE,(BYTE*)pSee,sizeof(REQ_PLTaskMms_See));
	m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
	return ;	
}

void CK_MmsTask::OnDblclkListList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	On_User_See();
}

void CK_MmsTask::OnListQuery2() 
{
	CString strTemp;
	CString strFind;
	m_E_CorpID.GetWindowText(strFind);
	if ( strFind.GetLength()<=0 )
		return ;
	long lSel   = m_L_Corp.GetCurSel();
	long lCount = m_L_Corp.GetCount();
	for ( int i=lSel+1 ; i<lCount ; i++ )
	{
		m_L_Corp.GetLBText(i,strTemp);
		if ( strTemp.Find(strFind)>=0 )
		{
			m_L_Corp.SetCurSel(i);
			return ;
		}
	}
	for ( i=0 ; i<lSel ; i++ )
	{
		m_L_Corp.GetLBText(i,strTemp);
		if ( strTemp.Find(strFind)>=0 )
		{
			m_L_Corp.SetCurSel(i);
			return ;
		}
	}

}

void CK_MmsTask::OnRclickListList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRMenu();
}

void CK_MmsTask::ShowRMenu()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}

	CMenu menu;
	menu.CreatePopupMenu();
	BOOL bLock = false;
	long lItem = this->GetCurrentSelected();
	//Ìí¼Ó
	if ( lItem>=0 )
	{
		//menu.AppendMenu(MF_STRING     , MENU_LIST_SEE    , _T(" ²é ¿´ ") );
		menu.AppendMenu(MF_STRING     , MENU_LIST_CORPLIST, _T(" ²éѯ´ËÆóÒµÇåµ¥ ") );

		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING     , MENU_LIST_CORPOFF , _T(" ½ûÓÃ´ËÆóÒµ ") );
		menu.AppendMenu(MF_SEPARATOR );
		//menu.AppendMenu(MF_STRING     , MENU_LIST_ADDBACK, _T(" Ìí¼Óµ½ºÚÃûµ¥ ") );
		//menu.AppendMenu(MF_SEPARATOR );
		//menu.AppendMenu(MF_STRING     , MENU_LIST_SENDBBS, _T(" ·¢ËͺÚÃûµ¥ÆÁ±Î֪ͨ ") );

		ANS_PLTaskMms_SeeData * pSeeData = NULL;
		if ( m_wndList.GetItemData(lItem) >0 )
		{
			pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem));
		}
		if ( pSeeData )
		{
			//0-ÕýÔÚÉÏ´«£¬1-´ý·¢ËÍ£¬2-ÉóºË£¬3-ÉóºËʧ°Ü,4-ÕýÔÚ·¢ËÍ£¬5-Óà¶î²»×㣬6-Ç¿ÖÆÍ£Ö¹,7-·¢ËÍÍê³É
			switch(pSeeData->lStatus)
			{
			case 1:  //´ý·¢ËÍ
			case 2:  //ÉóºËÖÐ
			case 4:  //ÕýÔÚ·¢ËÍ
			case 5:  //Óà¶î²»×ã
			case 8:  //Óû§ÉóºË
			case 9:  //Óû§ÉóºË2
				if (pSeeData->lStatus==2)  //ÉóºËÖÐ
				{
					menu.AppendMenu(MF_STRING     , MENU_MMSTASK_PASS , _T(" ÉóºËͨ¹ý ") );
					menu.AppendMenu(MF_STRING     , MENU_MMSTASK_NOPASS , _T(" ÉóºËʧ°Ü ") );
					menu.AppendMenu(MF_SEPARATOR );
				}
				menu.AppendMenu(MF_STRING     , MENU_MMSTASK_STOP , _T(" Ç¿ÖÆÍ£Ö¹ÈÎÎñ ") );
				 break;
			}
			if ( m_pMainFrame->GetUserPurview(PURVIEW_LIST,false) )
			{
				switch(pSeeData->lStatus)
				{
				case 5:  //Óà¶î²»×ã
				case 6:  //Ç¿ÖÆÍ£Ö¹
				case 7:  //ÒÑ·¢ËÍÍê³É
					{
						BOOL bReSend=true;
						if ( pSeeData->lStatus==7 || pSeeData->lStatus==6 ) //·¢ËÍÍê³ÉµÄ£¬Èç¹ûÒÑ·¢ÊýÁ¿Ð¡ÓÚÈÎÎñÊýÁ¿£¬ÔÊÐíÖØÆôÈÎÎñ
						{
							if ( pSeeData->lYFMobileCount >= pSeeData->lMobileCount )
							{
								bReSend = false;
							}
						}
						if ( bReSend )
						{
							menu.AppendMenu(MF_STRING     , MENU_MMSTASK_RESEND , _T(" ÖØÆôÈÎÎñ ") );
						}
					}
					break;
				}
			}
		}

	}
	else
	{
		//menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_SEE    , _T(" ²é ¿´ ") );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_CORPLIST, _T(" ²éѯ´ËÆóÒµÇåµ¥ ") );
		menu.AppendMenu(MF_SEPARATOR );
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_CORPOFF , _T(" ½ûÓÃ´ËÆóÒµ ") );
		menu.AppendMenu(MF_SEPARATOR );
		//menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_ADDBACK, _T(" Ìí¼Óµ½ºÚÃûµ¥ ") );
		//menu.AppendMenu(MF_SEPARATOR );
		//menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED     , MENU_LIST_SENDBBS, _T(" ·¢ËͺÚÃûµ¥ÆÁ±Î֪ͨ ") );
	}
	menu.AppendMenu(MF_SEPARATOR );
	menu.AppendMenu(MF_STRING     , MENU_LIST_COPY    , _T(" ¸´ ÖÆ ") );
	//ÏÔʾ²Ëµ¥
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}

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


void CK_MmsTask::On_Task_Pass()
{
	long lRet = MessageBox( _T("ȷʵҪ½«´ËÈÎÎñÉóºË³É¹¦£¿"),_T("ÌáÎÊ"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return ;

	long lItem  = this->GetCurrentSelected();
	if ( lItem<0 )
		return ;

	ANS_PLTaskMms_SeeData * pSeeData = NULL;
	if ( m_wndList.GetItemData(lItem) >0 )
	{
		pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem));
	}
	if ( !pSeeData )
		return ;


	REQ_PLTaskMms_Modify * pModify = new REQ_PLTaskMms_Modify;

	memset(pModify , 0 , sizeof(REQ_PLTaskMms_Modify) );

	pModify->lCorpID = pSeeData->lCorpID;
	pModify->lUserID = pSeeData->lUserID;
	pModify->lPLTaskMmsID = pSeeData->lPLTaskMmsID;
	pModify->lItem   = lItem;
	pModify->lOldStatus = pSeeData->lStatus;
	pModify->lStatus    = 1;  //Æô¶¯ÈÎÎñ,ÉóºË³É¹¦£¬Ï൱ÓÚÆô¶¯ÈÎÎñ
	pModify->tMaxDelayTime = pSeeData->tCreateTime;  //´´½¨Ê±¼ä
	_tcscpy(pModify->szTitle, pSeeData->szTitle);


	m_pMainFrame->SendFrame( SMSFUNC_PLTASKMMS_MODIFY , (BYTE*)pModify , sizeof(REQ_PLTaskMms_Modify) );
}
void CK_MmsTask::On_Task_NoPass()
{
	long lRet = MessageBox( _T("ȷʵҪ½«´ËÈÎÎñÉóºËʧ°Ü£¿"),_T("ÌáÎÊ"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return ;

	long lItem  = this->GetCurrentSelected();
	if ( lItem<0 )
		return ;

	ANS_PLTaskMms_SeeData * pSeeData = NULL;
	if ( m_wndList.GetItemData(lItem) >0 )
	{
		pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem));
	}
	if ( !pSeeData )
		return ;


	REQ_PLTaskMms_Modify * pModify = new REQ_PLTaskMms_Modify;

	memset(pModify , 0 , sizeof(REQ_PLTaskMms_Modify) );

	pModify->lCorpID = pSeeData->lCorpID;
	pModify->lUserID = pSeeData->lUserID;
	pModify->lPLTaskMmsID = pSeeData->lPLTaskMmsID;
	pModify->lItem   = lItem;
	pModify->lOldStatus = pSeeData->lStatus;
	pModify->lStatus    = 3;  //ÉóºËʧ°Ü
	pModify->tMaxDelayTime = pSeeData->tCreateTime;  //´´½¨Ê±¼ä
	_tcscpy(pModify->szTitle, pSeeData->szTitle);


	m_pMainFrame->SendFrame( SMSFUNC_PLTASKMMS_MODIFY , (BYTE*)pModify , sizeof(REQ_PLTaskMms_Modify) );
}
void CK_MmsTask::On_Task_Stop()
{
	long lRet = MessageBox( _T("È·ÊµÒªÇ¿ÖÆÍ£Ö¹´ËÈÎÎñÂð£¿"),_T("ÌáÎÊ"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return ;

	long lItem  = this->GetCurrentSelected();
	if ( lItem<0 )
		return ;

	ANS_PLTaskMms_SeeData * pSeeData = NULL;
	if ( m_wndList.GetItemData(lItem) >0 )
	{
		pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem));
	}
	if ( !pSeeData )
		return ;


	REQ_PLTaskMms_Modify * pModify = new REQ_PLTaskMms_Modify;

	memset(pModify , 0 , sizeof(REQ_PLTaskMms_Modify) );

	pModify->lCorpID = pSeeData->lCorpID;
	pModify->lUserID = pSeeData->lUserID;
	pModify->lPLTaskMmsID = pSeeData->lPLTaskMmsID;
	pModify->lItem   = lItem;
	pModify->lOldStatus = pSeeData->lStatus;
	pModify->lStatus    = 6;  //Ç¿ÖÆÍ£Ö¹

	m_pMainFrame->SendFrame( SMSFUNC_PLTASKMMS_MODIFY , (BYTE*)pModify , sizeof(REQ_PLTaskMms_Modify) );
}
void CK_MmsTask::On_Task_ReSend()
{
	long lRet = MessageBox( _T("È·ÊµÒªÖØÐÂÆô¶¯´ËÈÎÎñÂð£¿"),_T("ÌáÎÊ"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
	if ( lRet != IDYES )
		return ;

	long lItem  = this->GetCurrentSelected();
	if ( lItem<0 )
		return ;

	ANS_PLTaskMms_SeeData * pSeeData = NULL;
	if ( m_wndList.GetItemData(lItem) >0 )
	{
		pSeeData = m_ListData.GetAt((POSITION)m_wndList.GetItemData(lItem));
	}
	if ( !pSeeData )
		return ;


	REQ_PLTaskMms_Modify * pModify = new REQ_PLTaskMms_Modify;

	memset(pModify , 0 , sizeof(REQ_PLTaskMms_Modify) );

	pModify->lCorpID = pSeeData->lCorpID;
	pModify->lUserID = pSeeData->lUserID;
	pModify->lPLTaskMmsID = pSeeData->lPLTaskMmsID;
	pModify->lItem   = lItem;
	pModify->lOldStatus = pSeeData->lStatus;
	pModify->lStatus    = 1;  //ÖØÐÂÆô¶¯

	m_pMainFrame->SendFrame( SMSFUNC_PLTASKMMS_MODIFY , (BYTE*)pModify , sizeof(REQ_PLTaskMms_Modify) );
}

void CK_MmsTask::On_User_See()
{
/*	
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}

	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

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

	SMS_See sms={0};

	_tcscpy( sms.szStatus , _T("δ֪") );
	switch( pData->lSmsType )
	{
	case SMSTYPE_SEND:
		_tcscpy(sms.szStatus , _T("·¢ ËÍ") );
		break;
	case SMSTYPE_ZF:
		_tcscpy(sms.szStatus , _T("ת ·¢") );
		break;
	case SMSTYPE_ALARM:
		_tcscpy(sms.szStatus , _T("ÈÕ³ÌÌáÐÑ") );
		break;
	case SMSTYPE_EMAIL:
		_tcscpy(sms.szStatus , _T("Óʼþ֪ͨ") );
		break;
	case SMSTYPE_RECV:
		_tcscpy(sms.szStatus , _T("½Ó ÊÕ") );
		break;
	case SMSTYPE_SP:
		_tcscpy(sms.szStatus , _T("ÔöÖµÒµÎñ") );
		break;
	case SMSTYPE_SWT:
		_tcscpy(sms.szStatus , _T("ÉÌÎñͨ") );
		break;
	}

	if ( _tcslen(pData->szSender))
		_stprintf( sms.szSender , _T("%s-%s") , pData->szSender,pData->szSendNum);
	else
		_stprintf( sms.szSender , _T("%s") , pData->szSendNum );

	if ( _tcslen(pData->szRecver))
		_stprintf( sms.szRecver , _T("%s-%s") , pData->szRecver,pData->szRecvNum);
	else
		_stprintf( sms.szRecver , _T("%s") , pData->szRecvNum );

	_stprintf( sms.szSendTime , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tSendTime.wYear, pData->tSendTime.wMonth,pData->tSendTime.wDay,pData->tSendTime.wHour,pData->tSendTime.wMinute,pData->tSendTime.wSecond );
	_stprintf( sms.szRecvTime , _T("%04d.%02d.%02d %02d:%02d:%02d") ,pData->tRecvTime.wYear,pData->tRecvTime.wMonth,pData->tRecvTime.wDay,pData->tRecvTime.wHour,pData->tRecvTime.wMinute,pData->tRecvTime.wSecond );
	_tcscpy( sms.szMsg , pData->szMsg );

	CString str;
	str.Format(_T("%s;  %-32s;%-4d") , pData->szRecvStatus,pData->szMsgID,pData->lSendRet);
	str.TrimLeft();
	str.TrimRight();
	_tcscpy(sms.szAdd,str);

	DLG_SmsLogSee dlg(this);
	dlg.SetParam(sms);
	dlg.DoModal();
*/
}
void CK_MmsTask::On_User_AddBack()
{
/*
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

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


	CString strTemp;
	CString strMobile;
	CString strMobile2;
	CString strMsg;
	CString str;
	if ( pData->lSmsType == 4 )
	{
		strMobile = pData->szSendNum;
	}
	else
	{
		strMobile = pData->szRecvNum;
	}
	strMobile2 = strMobile;
#ifdef SMSMANAGER_KF
	if ( strMobile2.GetLength()>7 )
	{
		strMobile2.SetAt(4,'*');
		strMobile2.SetAt(5,'*');
		strMobile2.SetAt(6,'*');
	}
	pData->szSendNum[4]='*';pData->szSendNum[5]='*';pData->szSendNum[6]='*';
#endif
	strMsg = pData->szMsg;

	str.Format( _T("ÕæµÄÒªÌí¼ÓÒÔÏÂÄÚÈݵ½ºÚÃûµ¥:\r\nºÅÂë:%s\r\nÄÚÈÝ:%s\r\n"),strMobile2,strMsg );

	int iRet = MessageBox( str , _T("ÌáÎÊ") , MB_ICONQUESTION|MB_YESNO );
	if ( iRet !=IDYES )
		return ;

	REQ_Back_Add * pAdd = new REQ_Back_Add;
	memset(pAdd , 0 ,sizeof(REQ_Back_Add));
	pAdd->lCorpID = pData->lCorpID;
	pAdd->lUserID = -1;
	_tcscpy(pAdd->szMobile , strMobile );
	_stprintf( pAdd->szBZ , _T("ºǫ́Ìí¼Ó:%s") , strMsg );
	
	m_pMainFrame->SendFrame(SMSFUNC_BACK_ADD,(BYTE*)pAdd,sizeof(REQ_Back_Add));
*/
}
void CK_MmsTask::On_User_SendBBS()
{
/*
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}
	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

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

	//ÏòÓû§·¢ËÍÏûÏ¢
	ANS_BBS_SeeData See={0};
	See.lBBSID = 0;
	See.lSCorpID = 0;  //¹ÜÀíÔ±·¢µÄ
	See.lSUserID = m_pMainFrame->m_lUserID;  //¹ÜÀíÔ±ID
	_tcscpy(See.szSCorpName,_T("¹ÜÀíÔ±"));
	_tcscpy(See.szSLoginName , m_pMainFrame->m_Setup.szUser );
	See.lRCorpID = pData->lCorpID;
	See.lRUserID = pData->lUserID;
	DLG_BBS_Send dlg(this);
	dlg.SetParam( See , 3 );
	if ( dlg.DoModal() == IDOK )
	{
		long lSize = sizeof(REQ_BBS_Send)+sizeof(ANS_BBS_SeeData);
		BYTE * pModifyData = new BYTE[lSize];memset(pModifyData,0,lSize);
		REQ_BBS_Send * pModify = (REQ_BBS_Send *)pModifyData;   //Í·
		ANS_BBS_SeeData * pSPData = (ANS_BBS_SeeData *)(pModifyData+sizeof(REQ_BBS_Send));
		*pSPData = dlg.GetParam();
		pModify->lItem  = lItem;
		pModify->lCount = 1;
		m_pMainFrame->SendFrame( SMSFUNC_BBS_SEND , pModifyData , lSize );
	}
	return ;
*/
}

void CK_MmsTask::On_User_Export()
{
	m_wndList.CopyToClipboard();
/*
	//m_wndList.SetHeadings(_T("ÐòºÅ,40; Àà ÐÍ,80;״̬,50;ÆóÒµID,60;·¢ËÍÈË,70; ·¢ËͺÅÂë,120; ½ÓÊÕÈË,70; ½ÓÊÕºÅÂë,120;  Ìύʱ¼ä,150;  ·¢ËÍʱ¼ä,150;  ½ÓÊÕʱ¼ä,150;  ¶¨Ê±Ê±¼ä,150;     ¶ÌÐÅÄÚÈÝ,1000;    ÐÅÏ¢ID,150;"));
	SortItem item[32]={0};
	_tcscpy(item[0].szItem,_T("Àà ÐÍ"));
	_tcscpy(item[1].szItem,_T("״̬"));
	_tcscpy(item[2].szItem,_T("ÆóÒµID"));
	_tcscpy(item[3].szItem,_T("·¢ËÍÈË"));
	_tcscpy(item[4].szItem,_T("·¢ËͺÅÂë"));
	_tcscpy(item[5].szItem,_T("½ÓÊÕÈË"));
	_tcscpy(item[6].szItem,_T("½ÓÊÕºÅÂë"));
	_tcscpy(item[7].szItem,_T("Ìύʱ¼ä"));
	_tcscpy(item[8].szItem,_T("·¢ËÍʱ¼ä"));
	_tcscpy(item[9].szItem,_T("½ÓÊÕʱ¼ä"));
	_tcscpy(item[10].szItem,_T("¶¨Ê±Ê±¼ä"));
	_tcscpy(item[11].szItem,_T("²ÊÐűêÌâ"));
	_tcscpy(item[12].szItem,_T("״̬±¨¸æ"));
	DLG_HZB_Export dlg(this);
	dlg.SetParam( &m_wndList );
	dlg.SetListItem(item,13,-2);
	dlg.DoModal();
*/
}
void CK_MmsTask::On_User_Copy()
{
	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

	HGLOBAL hglbCopy;
	LPTSTR  lptstrCopy; 
    if (!OpenClipboard()) 
        return ;
    EmptyClipboard();

	CString str,strTemp;

	long lCol   = m_wndList.GetColumnCount();
	long lCount = m_wndList.GetSelectedItemCount();

	for ( int i=0 ; i<lCol ; i++ )
	{
		LVCOLUMN  lmn={0};
		TCHAR szBuf[256]={0};
		lmn.mask = LVCF_TEXT;
		lmn.pszText = szBuf;
		lmn.cchTextMax = sizeof(szBuf);
		m_wndList.GetColumn(i , &lmn);

		str += CString(lmn.pszText );
		str += CString(_T("\t"));

	}
	str += _T("\r\n");


	lItem = -1;
	for ( i=0 ; i<lCount ; i++ )
	{
		lItem = m_wndList.GetFirstSelectedItem(lItem);
		if ( lItem >=0 )
		{
			CString str1;
			for ( int j=0 ; j<lCol; j++ )
			{
				str1=m_wndList.GetItemText(lItem,j);
#ifdef SMSMANAGER_KF
				if ( j == 12 )
					str1 = _T("");
				
#endif
				str1.TrimLeft();str1.TrimRight();str1.Replace( _T("\t") , _T("") );str1.Replace( _T("\r") , _T("") );str1.Replace( _T("\n") , _T("") );
				strTemp.Format(_T("%s\t"),str1);
				str += strTemp;
			}
			str += _T("\r\n");

		}
	}

	hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (str.GetLength()+1)*sizeof(TCHAR));
	if (hglbCopy == NULL) 
	{ 
		CloseClipboard(); 
		return ; 
	} 
	lptstrCopy = (LPTSTR)GlobalLock(hglbCopy); 
	_tcscpy(lptstrCopy,str);
	GlobalUnlock(hglbCopy); 
#ifdef _UNICODE
	::SetClipboardData(CF_UNICODETEXT, hglbCopy);
#else
	::SetClipboardData(CF_TEXT, hglbCopy);
#endif
	CloseClipboard(); 

	return ;

}

void CK_MmsTask::Close_Corp()
{
	//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
	while (!m_Corp.IsEmpty())
	{
		ANS_Corp_NameData * pData = m_Corp.GetHead();
		m_Corp.RemoveHead();
		delete pData;
	}

}

void CK_MmsTask::Close_ListData()
{
	//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
	while (!m_ListData.IsEmpty())
	{
		ANS_PLTaskMms_SeeData * pData = m_ListData.GetHead();
		m_ListData.RemoveHead();
		delete pData;
	}

}

void CK_MmsTask::On_User_CorpList()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}

	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

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

	m_lQueryCorpID = pData->lCorpID;
	OnListQuery();
}

void CK_MmsTask::On_User_CorpOFF()
{
	if ( !m_pMainFrame->GetUserPurview(PURVIEW_FILT) )
	{
		return ;
	}

	long lItem = m_wndList.GetFirstSelectedItem();
	if ( lItem < 0 )
		return ;

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

//	CString str;
//	str.Format( _T("ÊÇ·ñÒª½ûÓÃ´ËÆóÒµID:%d£¿\r\n½ûÓúó´ËÆóÒµ½«²»ÄܵǼ!"),pData->lCorpID );
//	if ( MessageBox(str , _T("ÌáÎÊ") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2) != IDYES )
//		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->szBZ , dlg.m_strBZ );
		_tcscpy(pCorp->szOper , dlg.m_strOperName );

		m_pMainFrame->SendFrame(SMSFUNC_CORPOFF,(BYTE*)pCorp,sizeof(REQ_CorpOFF));
	}
}