SmsManager/C_TDSet.cpp

657 lines
16 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.

// C_TDSet.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "C_TDSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CC_TDSet dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_C_TDSet_Modify1.h"
CC_TDSet::CC_TDSet(CWnd* pParent /*=NULL*/)
: CDialog(CC_TDSet::IDD, pParent)
, m_lOftenUse(0)
{
//{{AFX_DATA_INIT(CC_TDSet)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_lAbility = 0;
m_lTDType = 0;
m_lStatus = 0;
}
void CC_TDSet::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CC_TDSet)
DDX_Control(pDX, IDC_TDSET_LIST, m_wndList);
//}}AFX_DATA_MAP
DDX_Control(pDX, IDC_C_TDSET_S1, m_S_S1);
DDX_CBIndex(pDX, IDC_TDSET_ABILITY, m_lAbility);
DDX_CBIndex(pDX, IDC_TDSET_TDTYPE, m_lTDType);
DDX_CBIndex(pDX, IDC_TDSET_STATUS, m_lStatus);
// DDX_CBString(pDX, IDC_TDSET_OFTENUSE, m_lOftenUse);
DDX_CBIndex(pDX, IDC_TDSET_OFTENUSE, m_lOftenUse);
}
BEGIN_MESSAGE_MAP(CC_TDSet, CDialog)
//{{AFX_MSG_MAP(CC_TDSet)
ON_WM_SIZE()
ON_NOTIFY(NM_DBLCLK, IDC_TDSET_LIST, OnDblclkYwyList)
ON_NOTIFY(NM_RCLICK, IDC_TDSET_LIST, OnRclickYwyList)
ON_NOTIFY(LVN_KEYDOWN, IDC_TDSET_LIST, OnKeydownYwyList)
//}}AFX_MSG_MAP
ON_COMMAND( MENU_PARTNER_ADD , On_User_Add)
ON_COMMAND( MENU_PARTNER_MODIFY , On_User_Modify)
ON_COMMAND( MENU_PARTNER_DEL , On_User_Del)
ON_COMMAND( MENU_PARTNER_COPY , On_User_Copy)
ON_COMMAND( MENU_PARTNER_REFRESH, On_User_Refresh)
ON_BN_CLICKED(IDC_C_TDSET_QUERY, &CC_TDSet::OnBnClickedCTdsetQuery)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CC_TDSet message handlers
BOOL CC_TDSet::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE) )
{
return false;
}
REQ_GetTD2 * pTD = new REQ_GetTD2;
memset(pTD , 0 , sizeof(REQ_GetTD2));
pTD->lStatus = 0;
pTD->lAbility = 0;
pTD->lTDType = 0;
m_pMainFrame->SendFrame(SMSFUNC_GETTD2,(BYTE*)pTD,sizeof(REQ_GetTD2));
return true;
}
void CC_TDSet::Close()
{
Close_Partner();
}
BOOL CC_TDSet::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CC_TDSet::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
void CC_TDSet::SetLockItem(long lItem, BOOL bLock)
{
if ( bLock )
m_wndList.SetIconIndex( lItem , 1 );
else
m_wndList.SetIconIndex( lItem , 0 );
}
long CC_TDSet::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
BOOL CC_TDSet::isLockItem(long lItem, BOOL bShowWarning)
{
BOOL b = (m_wndList.GetIconIndex(lItem) == 1);
if ( b && bShowWarning )
{
MessageBox( _T("<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD>!") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONINFORMATION );
}
return b;
}
BOOL CC_TDSet::ShowInList(ANS_GetTD2Data * pData,long lItem2,POSITION pos)
{
CString str;
long lItem =lItem2;
if ( lItem<0 ) //<2F><><EFBFBD><EFBFBD>
{
lItem = m_wndList.GetItemCount();
str.Format(_T("%d") , lItem+1 );
m_wndList.InsertItem( lItem , str , 0 );
m_wndList.SetItemData( lItem , (DWORD)pos ); //<2F><>Pos
}
//m_wndList.SetHeadings(_T("<22><><EFBFBD><EFBFBD>,50;ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,90;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,80;<3B><><EFBFBD><EFBFBD>,50;Ĭ<><C4AC>,50;<3B><><EFBFBD><EFBFBD>,50;<3B><>Ӫ<EFBFBD><D3AA>,60;ͨ<><CDA8><EFBFBD><EFBFBD>,60;SendRet,50;<3B><><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>,100;ʧ<><CAA7><EFBFBD><EFBFBD>,80;<3B><><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>,100;ʧ<><CAA7><EFBFBD><EFBFBD>,80;<3B><>ע,200;"));
long lTemp11=1;
m_wndList.SetItemText( lItem , lTemp11++ , pData->szName ) ;
m_wndList.SetItemText( lItem , lTemp11++ , pData->szAccessPort ) ;
m_wndList.SetItemText(lItem, lTemp11++, pData->szLoginName);
str = _T("");
if ( pData->lStatus == 1 )
str = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
str = _T("");
if ( pData->lDefaultTD == 1 )
str = _T("Ĭ<EFBFBD><EFBFBD>");
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
switch(pData->lAbility)
{
case 0:
str = _T(" <20><><EFBFBD><EFBFBD>");
break;
case 1:
str = _T(" <20><><EFBFBD><EFBFBD>");
break;
default:
str = _T("");
break;
}
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
switch(pData->lTDType)
{
case 0:
str = _T(" <20>ƶ<EFBFBD>");
break;
case 1:
str = _T(" <20><>ͨ");
break;
case 2:
str = _T(" С<><D0A1>ͨ");
break;
case 3:
str = _T(" <20><><EFBFBD><EFBFBD>");
break;
case 4:
str = _T(" <20><><EFBFBD><EFBFBD>");
break;
default:
str = _T("");
break;
}
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
str.Format(_T("<EFBFBD><EFBFBD>%d<><64><EFBFBD><EFBFBD>"),pData->lLimits+1);
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
str.Format(_T("<EFBFBD><EFBFBD>%dͨ<64><CDA8>"),pData->lTDNum);
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
str.Format(_T(" %d"),pData->lSendRet);
m_wndList.SetItemText( lItem , lTemp11++ , str ) ;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
str.Format(_T(" %d"), pData->lBFPriority);
m_wndList.SetItemText(lItem, lTemp11++, str);
//ÿ<>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>
str.Format( _T("%d") , pData->Day_Send - pData->Day_ReportFail );
m_wndList.SetItemText(lItem,lTemp11++,str);
str = _T("0.00%");
if (pData->Day_ReportFail>0 && pData->Day_Send>0 )
{
str.Format( _T("%.2f%%") , (float)pData->Day_ReportFail/(float)pData->Day_Send );
//if ( pData->Day_ReportFail>=pData->Day_Send )
// str = _T("100.00%");
}
m_wndList.SetItemText(lItem,lTemp11++,str);
str.Format( _T("%d") , pData->Mon_Send - pData->Mon_ReportFail );
m_wndList.SetItemText(lItem,lTemp11++,str);
str = _T("0.00%");
if (pData->Mon_ReportFail>0 && pData->Mon_Send>0 )
{
str.Format( _T("%.2f%%") , (float)pData->Mon_ReportFail/(float)pData->Mon_Send );
//if ( pData->Mon_ReportFail>=pData->Mon_Send )
// str = _T("100.00%");
}
m_wndList.SetItemText(lItem,lTemp11++,str);
m_wndList.SetItemText(lItem,lTemp11++,pData->szBZ);
return true;
}
BOOL CC_TDSet::ProcessSocket(Socket_Head_Add *pHead,BYTE* pFrame)
{
CString str;
//ȡ<><C8A1><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>Ϣ
if (pHead->lFuncType == SMSFUNC_GETTD2)
{
m_bRefresh = true; //<2F>Ѿ<EFBFBD>ˢ<EFBFBD>¹<EFBFBD>
ANS_GetTD2 * pPartner = (ANS_GetTD2 *)pFrame;
ANS_GetTD2Data * pData = (ANS_GetTD2Data *)(pFrame+sizeof(ANS_GetTD2));
m_wndList.DeleteAllItems(); //ɾ<><C9BE>ԭ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
this->Close_Partner(); //<2F>ر<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
long lSubmitCount=0;
long lSendCount=0;
long lReportSucessCount=0;
long lReportFailCount=0;
long lMonSubmitCount=0;
long lMonSendCount=0;
long lMonReportSucessCount=0;
long lMonReportFailCount=0;
for ( int i=0;i<pPartner->lCount;i++ )
{
ANS_GetTD2Data * pNewData = new ANS_GetTD2Data;
*pNewData = *pData;
POSITION pos = m_TD.AddTail(pNewData);
lSubmitCount += pData->Day_Submit;
lSendCount += pData->Day_Send;
lReportSucessCount += pData->Day_ReportSucess;
lReportFailCount += pData->Day_ReportFail;
lMonSubmitCount += pData->Mon_Submit;
lMonSendCount += pData->Mon_Send;
lMonReportSucessCount += pData->Mon_ReportSucess;
lMonReportFailCount += pData->Mon_ReportFail;
ShowInList(pNewData,-1,pos);
pData ++;
}
if (pPartner->lCount>0 )
{
long lItem = m_wndList.GetItemCount();
m_wndList.InsertItem(lItem,_T(""),0);
m_wndList.SetItemData(lItem,-1);
lItem++;
m_wndList.InsertItem(lItem,_T("<EFBFBD>ϼ<EFBFBD>"),0);
m_wndList.SetItemData(lItem,-1);
long lTemp11=10;
str.Format( _T("%d") , lSendCount - lReportFailCount );
m_wndList.SetItemText(lItem,lTemp11++,str);
str = _T("0.00%");
if (lReportFailCount>0 && lSendCount>0 )
{
str.Format( _T("%.2f%%") , (float)lReportFailCount/(float)lSendCount );
//if ( lReportFailCount>=lSendCount )
// str = _T("100.00%");
}
m_wndList.SetItemText(lItem,lTemp11++,str);
str.Format( _T("%d") , lMonSendCount - lMonReportFailCount );
m_wndList.SetItemText(lItem,lTemp11++,str);
str = _T("0.00%");
if (lMonReportFailCount>0 && lMonSendCount>0 )
{
str.Format( _T("%.2f%%") , (float)lMonReportFailCount/(float)lMonSendCount );
//if ( lMonReportFailCount>=pData->lMonSendCount )
// str = _T("100.00%");
}
m_wndList.SetItemText(lItem,lTemp11++,str);
}
return true;
}
//<2F>޸Ĺ<DEB8><C4B9><EFBFBD>Ա<EFBFBD><D4B1>Ϣ
if (pHead->lFuncType == SMSFUNC_TD2_MODIFY)
{
ANS_TD2_Modify * pModify = (ANS_TD2_Modify *)pFrame;
ANS_GetTD2Data * pData = (ANS_GetTD2Data *)(pFrame+sizeof(ANS_TD2_Modify));
SetLockItem( pModify->lItem , false ); //<2F><><EFBFBD><EFBFBD>
if ( pModify->lCount == 1 ) //<2F><><EFBFBD><EFBFBD><31><CAB1>ʾ<EFBFBD>޸ijɹ<C4B3>
{
POSITION pos = (POSITION)m_wndList.GetItemData(pModify->lItem);
ANS_GetTD2Data * pData2 = m_TD.GetNext( pos );
if ( pData2 )
{
*pData2 = *pData; //ȡ<><C8A1><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
ShowInList(pData2,pModify->lItem,pos);
}
}
return true;
}
//<2F><><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD>Ա
if (pHead->lFuncType == SMSFUNC_TD2_ADD)
{
ANS_TD2_Add * pAdd = (ANS_TD2_Add *)pFrame;
ANS_GetTD2Data * pData = (ANS_GetTD2Data *)(pFrame+sizeof(ANS_TD2_Add));
if ( pAdd->lCount == 1 ) //<2F><><EFBFBD><EFBFBD><31><CAB1>ʾ<EFBFBD>޸ijɹ<C4B3>
{
ANS_GetTD2Data * pData2 = new ANS_GetTD2Data;
*pData2 = *pData;
POSITION pos = m_TD.AddTail( pData2 );
ShowInList(pData2,-1,pos);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>û<EFBFBD>ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2>
if ( pData->lTDID <= 0 )
{
RefreshInfo();
}
}
return true;
}
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա
if (pHead->lFuncType == SMSFUNC_TD2_DEL)
{
ANS_TD2_Del * pDel = (ANS_TD2_Del *)pFrame;
ANS_TD2_DelData * pDelData = (ANS_TD2_DelData *)(pFrame+sizeof(ANS_TD2_Del));
POSITION pos,pos2;
ANS_GetTD2Data * pTD2Data;
for ( int i = pDel->lCount-1 ; i>=0 ; i-- )
{
if ( pDelData[i].lTDID ) //ɾ<><C9BE><EFBFBD>ɹ<EFBFBD>
{
pos = (POSITION)m_wndList.GetItemData( pDelData[i].lItem );
pos2 = pos;
pTD2Data = m_TD.GetNext( pos );
if ( pTD2Data->lTDID == pDelData[i].lTDID ) //ID<49><44>ͬ<EFBFBD>IJſ<C4B2>ɾ<EFBFBD><C9BE>
{
delete pTD2Data; //<2F><>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_TD.RemoveAt(pos2); //<2F><><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ɾ<EFBFBD><C9BE>
m_wndList.DeleteItem(pDelData[i].lItem); //<2F><>ListCtrl<72><6C>ɾ<EFBFBD><C9BE>
}
}
}
return true;
}
return false;
}
void CC_TDSet::ShowRMenu()
{
if (!m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_SEE,false)) //û<>в鿴Ȩ<E9BFB4><C8A8>
return ;
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
if ( lItem >= 0 )
bLock = isLockItem( lItem , false ); //ȡ<><C8A1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>
if ( m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD,false) )
{
menu.AppendMenu(MF_STRING , MENU_PARTNER_ADD, _T(" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PARTNER_ADD , _T(" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> ") );
}
//<2F>޸<EFBFBD>
if ( m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_MODIFY,false) && lItem >=0 && !bLock)
{
menu.AppendMenu(MF_STRING , MENU_PARTNER_MODIFY, _T(" <20><> <20><> ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PARTNER_MODIFY , _T(" <20><> <20><> ") );
}
//ɾ<><C9BE>
if ( m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_DEL,false) && lItem >=0 && !bLock )
{
menu.AppendMenu(MF_STRING , MENU_PARTNER_DEL, _T(" ɾ <20><> ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PARTNER_DEL , _T(" ɾ <20><> ") );
}
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_PARTNER_COPY, _T(" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ") );
menu.AppendMenu(MF_SEPARATOR );
//ˢ<><CBA2>
menu.AppendMenu(MF_STRING , MENU_PARTNER_REFRESH, _T(" ˢ <20><> ") );
//<2F><>ʾ<EFBFBD>˵<EFBFBD>
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
BOOL CC_TDSet::OnInitDialog()
{
CDialog::OnInitDialog();
//ȡ<>ù<EFBFBD><C3B9>ò<EFBFBD><C3B2><EFBFBD>
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
//<2F><>ʼ<EFBFBD><CABC>List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_MANAGER) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50;ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,100;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,150;<3B><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>,120;<3B><><EFBFBD><EFBFBD>,60;Ĭ<><C4AC>,60;<3B><><EFBFBD><EFBFBD>,60;<3B><>Ӫ<EFBFBD><D3AA>,90;<3B><><EFBFBD>к<EFBFBD>,80;ͨ<><CDA8><EFBFBD><EFBFBD>,80;SendRet,80;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,80;<3B><><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>,100;ʧ<><CAA7><EFBFBD><EFBFBD>,80;<3B><><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>,100;ʧ<><CAA7><EFBFBD><EFBFBD>,80;<3B><>ע,200;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_bInit = true;
m_lAbility = 0;
m_lTDType = 0;
m_lStatus = 0;
m_lOftenUse = 2; //Ĭ<>ϲ<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>õ<EFBFBD>
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CC_TDSet::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 CC_TDSet::OnDblclkYwyList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_User_Modify();
}
void CC_TDSet::OnRclickYwyList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CC_TDSet::OnKeydownYwyList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CC_TDSet::On_User_Add()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD) )
{
return ;
}
ANS_GetTD2Data TD2Data={0};
TD2Data.lStatus = 1; //Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TD2Data.lLimits=1; //Ĭ<>ϵڶ<CFB5><DAB6><EFBFBD><EFBFBD><EFBFBD>
TD2Data.lOftenUse = 1;//<2F>¼ӵ<C2BC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
TD2Data.lBFPriority = 100; //Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
DLG_C_TDSet_Modify dlg(this);
dlg.SetParam( TD2Data);
if ( dlg.DoModal() == IDOK )
{
long lSize = sizeof(REQ_TD2_Add)+sizeof(ANS_GetTD2Data);
BYTE * pAddData = new BYTE[lSize];memset(pAddData,0,lSize);
REQ_TD2_Add * pAdd = (REQ_TD2_Add *)pAddData; //ͷ
ANS_GetTD2Data * pTD2Data = (ANS_GetTD2Data *)(pAddData+sizeof(REQ_TD2_Add));
*pTD2Data = dlg.GetParam();
pAdd->lCount = 1;
m_pMainFrame->SendFrame( SMSFUNC_TD2_ADD , pAddData , lSize );
}
}
void CC_TDSet::On_User_Modify()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_MODIFY) )
{
return ;
}
long lItem = GetCurrentSelected();
if ( lItem < 0 )
return ;
if (isLockItem(lItem))
{
return ;
}
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
if ( (long)pos<0 )
return ;
POSITION pos2 = pos;
ANS_GetTD2Data * pData = m_TD.GetNext( pos );
if (pData)
{
DLG_C_TDSet_Modify dlg(this);
dlg.SetParam( *pData);
if ( dlg.DoModal() == IDOK )
{
SetLockItem( lItem ,true);
long lSize = sizeof(REQ_TD2_Modify)+sizeof(ANS_GetTD2Data);
BYTE * pModifyData = new BYTE[lSize];memset(pModifyData,0,lSize);
REQ_TD2_Modify * pModify = (REQ_TD2_Modify *)pModifyData; //ͷ
ANS_GetTD2Data * pTD2Data = (ANS_GetTD2Data *)(pModifyData+sizeof(REQ_TD2_Modify));
*pTD2Data = dlg.GetParam();
pModify->lItem = lItem;
pModify->lCount = 1;
m_pMainFrame->SendFrame( SMSFUNC_TD2_MODIFY , pModifyData , lSize );
}
}
}
void CC_TDSet::On_User_Del()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_DEL) )
{
return ;
}
long lRet = MessageBox( _T("<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD>󽫻<EFBFBD>Ӱ<EFBFBD><EFBFBD>ͳ<EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2);
if ( lRet != IDYES )
return;
long lCount = m_wndList.GetSelectedCount();
long lSize = sizeof(REQ_TD2_Del)+sizeof(ANS_TD2_DelData)*lCount;
BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize);
REQ_TD2_Del * pDel = (REQ_TD2_Del *)pDelSend; //ͷ
ANS_TD2_DelData * pDelData = (ANS_TD2_DelData *)(pDelSend+sizeof(REQ_TD2_Del));
pDel->lCount = lCount;
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
ANS_GetTD2Data * pTD2Data;
POSITION pos2;
while(pos)
{
pDelData->lItem = m_wndList.GetNextSelectedItem(pos);
pos2 = (POSITION)m_wndList.GetItemData(pDelData->lItem);
if ( (long)pos2 >=0 )
{
pTD2Data = m_TD.GetNext(pos2); //ȡ<><C8A1><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD>pos
pDelData->lTDID = pTD2Data->lTDID;
pDelData ++;
}
}
m_pMainFrame->SendFrame( SMSFUNC_TD2_DEL , pDelSend , lSize );
}
void CC_TDSet::On_User_Refresh()
{
RefreshInfo();
}
void CC_TDSet::On_User_Copy()
{
m_wndList.CopyToClipboard();
}
BOOL CC_TDSet::FindPartnerName(const TCHAR *pName, POSITION exPos)
{
POSITION pos = m_TD.GetHeadPosition();
POSITION pos2;
while (pos)
{
pos2 = pos;
ANS_GetTD2Data * pData = m_TD.GetNext( pos );
if ( pos2 != exPos )
{
if ( !_tcscmp( pData->szName , pName ) )
return true;
}
}
return false;
}
void CC_TDSet::Close_Partner()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
while (!m_TD.IsEmpty())
{
ANS_GetTD2Data * pPartner = m_TD.GetHead();
m_TD.RemoveHead();
delete pPartner;
}
}
void CC_TDSet::OnBnClickedCTdsetQuery()
{
if ( !UpdateData(true) )
return ;
REQ_GetTD2 * pTD = new REQ_GetTD2;
memset(pTD , 0 , sizeof(REQ_GetTD2));
pTD->lStatus = m_lStatus;
pTD->lAbility = m_lAbility;
pTD->lTDType = m_lTDType;
pTD->lOftenUse = m_lOftenUse;
m_pMainFrame->SendFrame(SMSFUNC_GETTD2,(BYTE*)pTD,sizeof(REQ_GetTD2));
}