CorpSms/FTDSet.cpp

890 lines
21 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// FTDSet.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "FTDSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFTDSet dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_Back_Add.h"
#include "DLG_User_InportP2.h"
#include "DLG_Back_Export.h"
#include "DLG_TDSet_Modify.h"
#include "DLG_Find_TDSet.h"
CFTDSet::CFTDSet(CWnd* pParent /*=NULL*/)
: CDialog(CFTDSet::IDD, pParent)
{
//{{AFX_DATA_INIT(CFTDSet)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_bRefresh2= false;
m_CliSmsTDData = NULL;
memset(&m_CliSmsTD,0,sizeof(m_CliSmsTD));
}
void CFTDSet::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFTDSet)
DDX_Control(pDX, IDC_QUERYFILT_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFTDSet, CDialog)
//{{AFX_MSG_MAP(CFTDSet)
ON_WM_SIZE()
ON_NOTIFY(NM_DBLCLK, IDC_QUERYFILT_LIST, OnDblclkQueryfiltList)
ON_NOTIFY(LVN_KEYDOWN, IDC_QUERYFILT_LIST, OnKeydownQueryfiltList)
ON_NOTIFY(NM_RCLICK, IDC_QUERYFILT_LIST, OnRclickQueryfiltList)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
ON_COMMAND( MENU_BACK_ADD , On_R_Add )
ON_COMMAND( MENU_BACK_MODIFY , On_R_Modify )
ON_COMMAND( MENU_BACK_DELETE , On_R_Delete )
ON_COMMAND( MENU_BACK_INPORT , On_R_Inport )
ON_COMMAND( MENU_BACK_EXPORT , On_R_Export )
ON_COMMAND( MENU_BACK_REFRESH, On_R_Refresh )
ON_COMMAND( MENU_BACK_FIND, On_R_Find )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFTDSet message handlers
BOOL CFTDSet::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;
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
m_AdoRS2.SetAdoConnection( &m_pMainFrame->m_adoConnection );
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_TDSET) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,50; ״̬,60; ÊÖ»úºÅÂë,100; ÒÆ¶¯Í¨µÀ,100; ÁªÍ¨Í¨µÀ,100; СÁéͨͨµÀ,100; µçÐÅͨµÀ,100;ͨµÀ±êʶ,80;ÊÇ·ñÈ«Íø,80;˵Ã÷,250;"));
m_wndList.SetGridLines(true);
//m_wndList.SetCheckboxes(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
//m_wndList.SetBkColor( RGB(237,191,175) );
//m_wndList.SetTextBkColor( RGB(237,191,175) );
m_bInit = true;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFTDSet::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
void CFTDSet::OnOK()
{
//CDialog::OnOK();
}
void CFTDSet::OnCancel()
{
//CDialog::OnCancel();
}
BOOL CFTDSet::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFTDSet::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CFTDSet::RefreshInfo()
{
//·¢ËÍÇëÇó²é¿´
REQ_CliSmsTD * pSee = new REQ_CliSmsTD;
memset( pSee , 0 , sizeof(REQ_CliSmsTD) );
pSee->lType = 0; //ȡͨµÀ
pSee->lCorpID = m_pMainFrame->m_lCorpID;
m_pMainFrame->SendFrame( SMSFUNC_CLISMSTD , (BYTE*)pSee , sizeof(REQ_CliSmsTD) );
return true;
}
BOOL CFTDSet::ProcessSocket(Socket_Head *pHead)
{
if ( pHead->lFuncType == SMSFUNC_CLISMSTD )
{
ANS_CliSmsTD * pTD = (ANS_CliSmsTD *)pHead->pFrame;
m_CliSmsTD = *pTD;
//¸´ÖÆÍ¨µÀÊý¾Ý
if ( m_CliSmsTDData )
{delete m_CliSmsTDData;m_CliSmsTDData=NULL;}
long lDataLen=pHead->lFrameLen - sizeof(ANS_CliSmsTD);
m_CliSmsTDData = new BYTE[lDataLen];
memcpy(m_CliSmsTDData,pHead->pFrame+sizeof(ANS_CliSmsTD),lDataLen);
m_bRefresh = true;
//·¢ËÍÇëÇó²é¿´ºÅÂëͨµÀÉèÖÃÇé¿ö
REQ_TDSet_Get * pSee = new REQ_TDSet_Get;
memset( pSee , 0 , sizeof(REQ_TDSet_Get) );
pSee->lCorpID = m_pMainFrame->m_lCorpID;
pSee->lUserID = m_pMainFrame->m_lUserID;
m_pMainFrame->SendFrame( SMSFUNC_TDSET_GET , (BYTE*)pSee , sizeof(REQ_TDSet_Get) );
return true;
}
return false;
}
void CFTDSet::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
//Ìí¼Ó
menu.AppendMenu(MF_STRING , MENU_BACK_ADD, _T(" Ìí ¼Ó ") );
menu.AppendMenu(MF_SEPARATOR );
//ÐÞ¸Ä
if ( lItem >=0 && !bLock)
{
menu.AppendMenu(MF_STRING , MENU_BACK_MODIFY, _T(" ÐÞ ¸Ä ") );
menu.AppendMenu(MF_STRING , MENU_BACK_DELETE, _T(" ɾ ³ý ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_BACK_MODIFY, _T(" ÐÞ ¸Ä ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_BACK_DELETE, _T(" ɾ ³ý ") );
}
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_BACK_FIND, _T(" ²éÕÒ... ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_BACK_INPORT, _T(" µ¼Èë... ") );
menu.AppendMenu(MF_STRING , MENU_BACK_EXPORT, _T(" µ¼³ö... ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_BACK_REFRESH, _T(" ˢ Р") );
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
long CFTDSet::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CFTDSet::OnDblclkQueryfiltList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_R_Modify();
}
void CFTDSet::OnKeydownQueryfiltList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
*pResult = 0;
if ( pLVKeyDow->wVKey == VK_DELETE )
{
On_R_Delete();
}
if ( pLVKeyDow->wVKey == VK_INSERT)
{
On_R_Add();
}
if ( pLVKeyDow->wVKey == VK_SPACE)
{
On_R_Modify();
}
if ( pLVKeyDow->wVKey == 'I' || pLVKeyDow->wVKey == 'i')
{
On_R_Inport();
}
if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r')
{
On_R_Refresh();
}
if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a')
{
m_wndList.SelectAllItems();
}
}
void CFTDSet::OnRclickQueryfiltList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CFTDSet::On_R_Add()
{
ANS_TDSet_Data data={0};
data.lStatus = 1; //ĬÈÏÆô¶¯
_tcscpy(data.szOutAll , _T("0"));
_tcscpy(data.szTD , _T("0000"));
DLG_TDSet_Modify dlg(this);
dlg.SetParam(m_CliSmsTD ,m_CliSmsTDData ,data,1 );
if ( dlg.DoModal()==IDOK )
{
data = dlg.GetParam();
//·¢ËÍÇëÇó²é¿´
REQ_TDSet_Ins * pModify = new REQ_TDSet_Ins;
memset( pModify , 0 , sizeof(REQ_TDSet_Ins) );
data.lCorpID = m_pMainFrame->m_lCorpID;
pModify->data = data;
pModify->lCount = 1;
m_pMainFrame->SendFrame( SMSFUNC_TDSET_INS , (BYTE*)pModify , sizeof(REQ_TDSet_Ins) );
}
}
void CFTDSet::On_R_Modify()
{
long lItem = this->GetCurrentSelected();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
ANS_TDSet_Data * pSeeData=NULL;
if ( pos>0 )
{
pSeeData = m_TDData.GetNext(pos);
}
if ( !pSeeData )
return ;
long lModifyCount = m_wndList.GetSelectedCount();
DLG_TDSet_Modify dlg(this);
dlg.SetParam(m_CliSmsTD ,m_CliSmsTDData ,*pSeeData,lModifyCount);
if ( dlg.DoModal()==IDOK )
{
ANS_TDSet_Data data = dlg.GetParam();
//·¢ËÍÇëÇó²é¿´
long lSize = sizeof(REQ_TDSet_Modify) + sizeof(ANS_TDSet_ModifyData)*lModifyCount;
BYTE * pData = new BYTE[lSize];
memset(pData , 0 , lSize);
REQ_TDSet_Modify * pModify = (REQ_TDSet_Modify *)pData;
ANS_TDSet_ModifyData * pModifyData = (ANS_TDSet_ModifyData *)(pData+sizeof(REQ_TDSet_Modify));
data.lCorpID = m_pMainFrame->m_lCorpID;
data.lItemID = lItem;
pModify->data = data;
pModify->lCount = lModifyCount;
POSITION pos2 = m_wndList.GetFirstSelectedItemPosition();
while(pos2)
{
long lItem = m_wndList.GetNextSelectedItem(pos2);
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
ANS_TDSet_Data * pSeeData=NULL;
if ( pos>0 )
{
pSeeData = m_TDData.GetNext(pos);
}
pModifyData->lItem = lItem;
if ( pSeeData )
pModifyData->lTDSetID = pSeeData->lTDSetID;
pModifyData ++;
}
m_pMainFrame->SendFrame( SMSFUNC_TDSET_MODIFY , (BYTE*)pData , lSize );
}
}
void CFTDSet::On_R_Delete()
{
long lCount = m_wndList.GetSelectedCount();
long lSize = sizeof(REQ_TDSet_Del)+sizeof(ANS_TDSet_DelData)*lCount;
BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize);
REQ_TDSet_Del * pDel = (REQ_TDSet_Del *)pDelSend; //Í·
ANS_TDSet_DelData * pDelData = (ANS_TDSet_DelData *)(pDelSend+sizeof(REQ_TDSet_Del));
pDel->lCount = lCount;
pDel->lCorpID= m_pMainFrame->m_lCorpID;
POSITION pos2 = m_wndList.GetFirstSelectedItemPosition();
while(pos2)
{
long lItem = m_wndList.GetNextSelectedItem(pos2);
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
ANS_TDSet_Data * pSeeData=NULL;
if ( pos>0 )
{
pSeeData = m_TDData.GetNext(pos);
}
pDelData->lItem = lItem;
if ( pSeeData )
pDelData->lTDSetID = pSeeData->lTDSetID;
pDelData++;
}
m_pMainFrame->SendFrame( SMSFUNC_TDSET_DEL , (BYTE*)pDelSend , lSize );
}
void CFTDSet::On_R_Inport()
{
Close_TDSetIns();
//m_wndList.ShowWindow(SW_HIDE); //¼Ó¿ìÏÔʾËÙ¶È
Inport_Field Field[] =
{
{_T("ÊÖ»úºÅÂë"),0,7,-1},
//{_T("˵Ã÷"),0,12,-1},
};
DLG_User_InportP2 dlg(this);
dlg.SetParam(&Field[0],sizeof(Field)/sizeof(Inport_Field),9);
//DLG_Send_Inport dlg(this);
//dlg.SetInport(true);
dlg.DoModal();
CString str;
long lCount = m_TDDataIns.GetCount();
if ( lCount>500 )
{
str.Format( _T("ͨµÀ°ó¶¨Ã¿´Î×î¶àÉÏ´«500Ìõ¼Ç¼£¬±¾´Îµ¼ÈëµÄ¼Ç¼Ϊ%dÌõ£¡²»ÄÜÉÏ´«¡£") , lCount );
MessageBox(str , _T("´íÎó") , MB_ICONWARNING );
return ;
}
long lSize = sizeof(REQ_TDSet_Ins) + sizeof(ANS_TDSet_InsData)*lCount;
BYTE * pData = new BYTE[lSize];
memset(pData , 0 , lSize);
//·¢ËÍÇëÇó²é¿´
REQ_TDSet_Ins * pIns = (REQ_TDSet_Ins*)pData;
ANS_TDSet_InsData * pInsData = (ANS_TDSet_InsData*)(pData+sizeof(REQ_TDSet_Ins));
pIns->data.lCorpID = m_pMainFrame->m_lCorpID;
pIns->data.lStatus = 1;//ĬÈÏÆô¶¯
_tcscpy(pIns->data.szOutAll , _T("0"));
_tcscpy(pIns->data.szTD , _T("0000"));
pIns->lCount = lCount;
for ( int i=0 ; i<lCount ; i++ )
{
ANS_TDSet_InsData * pMobile = m_TDDataIns.RemoveHead();
if ( pMobile )
{
*pInsData = *pMobile;
}
pInsData++;
}
m_pMainFrame->SendFrame( SMSFUNC_TDSET_INS , (BYTE*)pData , lSize );
}
void CFTDSet::On_R_Export()
{
DLG_Back_Export dlg(this);
dlg.SetParam(&m_AdoRS2,&m_wndList,1);
dlg.DoModal();
}
void CFTDSet::On_R_Find()
{
DLG_Find_TDSet dlg(this);
if ( dlg.DoModal() == IDOK )
{
BOOL bFirst = true;
m_wndList.UnSelectAllItems();
long lCount = m_wndList.GetItemCount();
for ( int i=0 ; i<lCount ;i++ )
{
CString str = m_wndList.GetItemText(i,2);
if ( str.Find(dlg.m_strMobile)>=0 )
{
m_wndList.SelectItem(i);
if ( bFirst )
{
m_wndList.EnsureVisible(i,true);
bFirst = false;
}
}
}
if ( bFirst )
{
CString str;
str.Format(_T("ÕÒ²»µ½ÊÖ»úºÅÂëΪ:%sµÄ¼Ç¼¡£") , dlg.m_strMobile );
MessageBox(str , _T("´íÎó") , MB_OK|MB_ICONWARNING);
}
}
}
void CFTDSet::On_R_Refresh()
{
RefreshInfo();
}
BOOL CFTDSet::QueryMobile(const TCHAR *pMobile, long lID)
{
long lCount = m_wndList.GetItemCount();
for ( int i=0 ; i<lCount ; i++ )
{
long lID2 = m_wndList.GetItemData(i);
if ( lID2 != lID )
{
CString strMobile;
strMobile = m_wndList.GetItemText(i,4);
if ( strMobile == CString(pMobile) )
{
return true;
}
}
}
return false;
}
void CFTDSet::OnDestroy()
{
Close();
CDialog::OnDestroy();
}
void CFTDSet::ShowBack()
{
m_wndList.ShowWindow( SW_HIDE ); //ΪÁ˼ӿìÏÔʾËÙ¶È
m_wndList.DeleteAllItems();
CString strWhere;
strWhere = _T("Select * from Back Order by Mobile ");
BOOL b = m_AdoRS.Open( strWhere );
long lCount = m_AdoRS.GetRecordCount();
if ( b && lCount )
{
COleDateTime t;
m_AdoRS.MoveFirst();
for ( int i = 0 ; i< lCount ; i++ )
{
Back_Data data={0};
TCHAR szBuf[32]={0};
COleDateTime t;
m_AdoRS.GetCollect( _T("BackID") , data.lBackID);
m_AdoRS.GetCollect( _T("Status") , data.lStatus);
m_AdoRS.GetCollect( _T("Mobile") , data.szMobile);
m_AdoRS.GetCollect( _T("BZ") , data.szBZ);
m_AdoRS.MoveNext();
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ÐÕÃû,80; µç»°,80;ÊÖ»ú,100; ÉúÈÕ,90; Ê¡·Ý,100; ³µÅÆ,100; ³µÐÍ,100;"));
m_wndList.InsertItem( i , _itot(i+1,szBuf,10) ); //ÐòºÅ
m_wndList.SetItemData( i , data.lBackID );
if ( data.lStatus == 1 )
m_wndList.SetItemText(i,1, _T("ÆôÓÃ") );
else
m_wndList.SetItemText(i,1, _T("") );
m_wndList.SetItemText(i,2, data.szMobile );
m_wndList.SetItemText(i,3, data.szBZ );
}
}
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
return ;
}
BOOL CFTDSet::AddUser(PAddress user, long lItem)
{
if ( MobileInList(user.szMobile) ) //ÒÑÔÚÁбíµÄ£¬²»¼ÓÌí¼Ó
return false;
ANS_TDSet_InsData * data=new ANS_TDSet_InsData;
memset(data , 0 , sizeof(ANS_TDSet_InsData));
_tcscpy(data->szMobile , user.szMobile );
m_TDDataIns.AddTail(data);
//m_TDDataIns.AddTail(data);
/*
//·¢ËÍÇëÇó²é¿´
REQ_TDSet_Ins * pModify = new REQ_TDSet_Ins;
memset( pModify , 0 , sizeof(REQ_TDSet_Ins) );
data.lCorpID = m_pMainFrame->m_lCorpID;
pModify->data = data;
m_pMainFrame->SendFrame( SMSFUNC_TDSET_INS , (BYTE*)pModify , sizeof(REQ_TDSet_Ins) );
*/
return true;
}
BOOL CFTDSet::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
//È¡ÍÆ¼öÐÅÏ¢
if (pHead->lFuncType == SMSFUNC_TDSET_GET)
{
ANS_TDSet_Get * pSee = (ANS_TDSet_Get *)pFrame;
ANS_TDSet_Data * pData = (ANS_TDSet_Data *)(pFrame+sizeof(ANS_TDSet_Get));
m_wndList.ShowWindow( SW_HIDE );
m_wndList.DeleteAllItems(); //ɾ³ýÔ­ÓеÄÄÚÈÝ
Close_TDSet();
TCHAR Buf[128];
CString str;
BOOL bTip = false;
for ( int i=0;i<pSee->lCount;i++ )
{
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ״̬,60; ÊÖ»úºÅÂë,100; ÒÆ¶¯Í¨µÀ,100; ÁªÍ¨Í¨µÀ,100; СÁéͨͨµÀ,100; µçÐÅͨµÀ,100;ÊÇ·ñÈ«Íø,80;˵Ã÷,250;"));
ANS_TDSet_Data * pNewData = new ANS_TDSet_Data;
*pNewData = *pData;
POSITION pos = m_TDData.AddTail(pNewData);
_stprintf(Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf ,0 );
m_wndList.SetItemData( i , (DWORD_PTR)pos ); //´æPos
long lTemp=1;
if ( pData->lStatus == 1 )
m_wndList.SetItemText(i , lTemp++ , _T("ÆôÓÃ"));
else
m_wndList.SetItemText(i , lTemp++ , _T("½ûÓÃ"));
m_wndList.SetItemText(i , lTemp++ , pData->szMobile );
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[0],0) ); //ÒÆ¶¯
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[1],1) ); //ÁªÍ¨
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[2],2) ); //СÁéͨ
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[3],3) ); //µçÐÅ
m_wndList.SetItemText(i , lTemp++ , pData->szTD ); //ͨµÀ±êʶ
switch ( pData->szOutAll[0]-'0' )
{
case 0:
default:
m_wndList.SetItemText(i , lTemp++ , _T("ĬÈÏ"));
break;
case 1:
m_wndList.SetItemText(i , lTemp++ , _T("·ÇÈ«Íø"));
break;
case 2:
m_wndList.SetItemText(i , lTemp++ , _T("È«Íø"));
break;
}
m_wndList.SetItemText(i , lTemp++ , pData->szBZ);
pData ++;
}
m_wndList.ShowWindow( SW_SHOW );
return true;
}
if (pHead->lFuncType == SMSFUNC_TDSET_INS)
{
ANS_TDSet_Ins * pSee = (ANS_TDSet_Ins *)pFrame;
if ( pSee->bOK )
{
if ( pSee->lCount>2 )
{
this->On_R_Refresh(); //Ë¢ÐÂͨµÀ
}
else
{
//¸üе½ÁбíÖÐ
ANS_TDSet_Data * pData = new ANS_TDSet_Data;
*pData = pSee->ins.data;
POSITION pos = m_TDData.AddTail(pData);
TCHAR Buf[32]={0};
long i=m_wndList.GetItemCount();
_stprintf(Buf , _T("%d") , i+1 );
m_wndList.InsertItem( i , Buf ,0 );
m_wndList.SetItemData( i , (DWORD_PTR)pos ); //´æPos
long lTemp=1;
if ( pData->lStatus == 1 )
m_wndList.SetItemText(i , lTemp++ , _T("ÆôÓÃ"));
else
m_wndList.SetItemText(i , lTemp++ , _T("½ûÓÃ"));
m_wndList.SetItemText(i , lTemp++ , pData->szMobile );
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[0],0) ); //ÒÆ¶¯
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[1],1) ); //ÁªÍ¨
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[2],2) ); //СÁéͨ
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[3],3) ); //µçÐÅ
m_wndList.SetItemText(i , lTemp++ , pData->szTD ); //ͨµÀ±êʶ
switch ( pData->szOutAll[0]-'0' )
{
case 0:
default:
m_wndList.SetItemText(i , lTemp++ , _T("ĬÈÏ"));
break;
case 1:
m_wndList.SetItemText(i , lTemp++ , _T("·ÇÈ«Íø"));
break;
case 2:
m_wndList.SetItemText(i , lTemp++ , _T("È«Íø"));
break;
}
m_wndList.SetItemText(i , lTemp++ , pData->szBZ);
}
}
else
{
MessageBox(_T("Ìí¼Ó°ó¶¨Í¨µÀʧ°Ü£¬Çë¼ì²é£¡") , _T("´íÎó") , MB_ICONWARNING );
}
return true;
}
if (pHead->lFuncType == SMSFUNC_TDSET_MODIFY)
{
ANS_TDSet_Modify * pSee = (ANS_TDSet_Modify *)pFrame;
if ( pSee->bOK )
{
if ( pSee->lCount>1 )
{
this->On_R_Refresh(); //Ë¢ÐÂͨµÀ
}
else
{
//¸üе½ÁбíÖÐ
ANS_TDSet_Data * pData = &pSee->modify.data;
ANS_TDSet_Data * pData2 = NULL;
POSITION pos = (POSITION)m_wndList.GetItemData(pData->lItemID);
if ( pos )
{
pData2 = m_TDData.GetNext(pos);
if ( pData2 )
*pData2 = *pData;
}
TCHAR Buf[32]={0};
long i=pData->lItemID;
_stprintf(Buf , _T("%d") , i+1 );
long lTemp=1;
if ( pData->lStatus == 1 )
m_wndList.SetItemText(i , lTemp++ , _T("ÆôÓÃ"));
else
m_wndList.SetItemText(i , lTemp++ , _T("½ûÓÃ"));
m_wndList.SetItemText(i , lTemp++ , pData->szMobile );
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[0],0) ); //ÒÆ¶¯
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[1],1) ); //ÁªÍ¨
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[2],2) ); //СÁéͨ
m_wndList.SetItemText(i , lTemp++ , GetTDName(pData->szTD[3],3) ); //µçÐÅ
m_wndList.SetItemText(i , lTemp++ , pData->szTD ); //ͨµÀ±êʶ
switch ( pData->szOutAll[0]-'0' )
{
case 0:
default:
m_wndList.SetItemText(i , lTemp++ , _T("ĬÈÏ"));
break;
case 1:
m_wndList.SetItemText(i , lTemp++ , _T("·ÇÈ«Íø"));
break;
case 2:
m_wndList.SetItemText(i , lTemp++ , _T("È«Íø"));
break;
}
m_wndList.SetItemText(i , lTemp++ , pData->szBZ);
}
}
else
{
MessageBox(_T("Ð޸İó¶¨Í¨µÀʧ°Ü£¬Çë¼ì²é£¡") , _T("´íÎó") , MB_ICONWARNING );
}
return true;
}
//ɾ³ýÓû§
if (pHead->lFuncType == SMSFUNC_TDSET_DEL)
{
ANS_TDSet_Del * pDel = (ANS_TDSet_Del *)pFrame;
ANS_TDSet_DelData * pDelData = (ANS_TDSet_DelData *)(pFrame+sizeof(ANS_TDSet_Del));
for ( int i = pDel->lCount-1 ; i>=0 ; i-- )
{
if ( pDelData[i].lItem >= 0 )
{
POSITION pos = (POSITION)m_wndList.GetItemData( pDelData[i].lItem );
POSITION pos2 = pos;
ANS_TDSet_Data * pSetData = m_TDData.GetNext( pos );
if ( pSetData->lTDSetID == pDelData[i].lTDSetID ) //IDÏàͬ²Å¿Éɾ³ý
{
delete pSetData; //ÏÈɾ³ýÊý¾Ý
m_TDData.RemoveAt(pos2); //´ÓÁбíÖÐɾ³ý
m_wndList.DeleteItem(pDelData[i].lItem); //´ÓListCtrlÖÐɾ³ý
}
}
}
m_wndList.ShowWindow( SW_SHOW ); //ΪÁ˼ӿìÏÔʾËÙ¶È
return true;
}
return false;
}
void CFTDSet::Close()
{
Close_TDSet();
Close_TDSetIns();
if ( m_CliSmsTDData )
{delete m_CliSmsTDData ; m_CliSmsTDData=NULL;}
}
CString CFTDSet::GetTDName(TCHAR cTD, long lType)
{
CString strRet=_T("ĬÈÏ");
SC_CliTD * pRetTD=NULL;
long lCount=0;
switch(lType)
{
case 0:
default:
pRetTD = (SC_CliTD *)(m_CliSmsTDData);
lCount = m_CliSmsTD.lCliTD_Cmcc;
break;
case 1:
pRetTD = (SC_CliTD *)(m_CliSmsTDData+sizeof(SC_CliTD)*(m_CliSmsTD.lCliTD_Cmcc));
lCount = m_CliSmsTD.lCliTD_Unicom;
break;
case 2:
pRetTD = (SC_CliTD *)(m_CliSmsTDData+sizeof(SC_CliTD)*(m_CliSmsTD.lCliTD_Cmcc+m_CliSmsTD.lCliTD_Unicom));
lCount = m_CliSmsTD.lCliTD_Phs;
break;
case 3:
pRetTD = (SC_CliTD *)(m_CliSmsTDData+sizeof(SC_CliTD)*(m_CliSmsTD.lCliTD_Cmcc+m_CliSmsTD.lCliTD_Unicom+m_CliSmsTD.lCliTD_Phs));
lCount = m_CliSmsTD.lCliTD_Telcom;
break;
}
//ÉèÒÆ¶¯Êý¾Ý
for ( int i=0 ; i<lCount ; i++ )
{
if ( pRetTD[i].cSrcTD == cTD )
{
strRet=pRetTD[i].szTDName;
break;
}
}
return strRet;
}
void CFTDSet::Close_TDSet()
{
//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
while (!m_TDData.IsEmpty())
{
ANS_TDSet_Data * pMsg = m_TDData.GetHead();
m_TDData.RemoveHead();
delete pMsg;
}
}
void CFTDSet::Close_TDSetIns()
{
//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
while (!m_TDDataIns.IsEmpty())
{
ANS_TDSet_InsData * pMsg = m_TDDataIns.GetHead();
m_TDDataIns.RemoveHead();
delete pMsg;
}
}
BOOL CFTDSet::MobileInList(CString strMobile)
{
BOOL bRet=false;
POSITION pos = m_TDData.GetHeadPosition();
int i=0;
while ( pos )
{
ANS_TDSet_Data * pSeeData = m_TDData.GetNext(pos);
if ( pSeeData )
{
if ( strMobile == CString(pSeeData->szMobile))
{
bRet = true;
break;
}
}
}
return bRet;
}