// DLG_CliSmsTD.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "DLG_CliSmsTD.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_CliSmsTD dialog #include "DLG_CliSmsTD_Modify.h" DLG_CliSmsTD::DLG_CliSmsTD(CWnd* pParent /*=NULL*/) : CDialog(DLG_CliSmsTD::IDD, pParent) { //{{AFX_DATA_INIT(DLG_CliSmsTD) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_pTD = NULL; m_bRefresh = false; m_pReqTD = NULL; m_lReqSize = 0; } void DLG_CliSmsTD::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_CliSmsTD) DDX_Control(pDX, IDD_CLISMSTD_TELCOM, m_wndTelcom); DDX_Control(pDX, IDD_CLISMSTD_CW, m_B_CW); DDX_Control(pDX, IDD_CLISMSTD_UNICOM, m_wndUnicom); DDX_Control(pDX, IDD_CLISMSTD_PHS, m_wndPhs); DDX_Control(pDX, IDD_CLISMSTD_CMCC, m_wndCmcc); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_CliSmsTD, CDialog) //{{AFX_MSG_MAP(DLG_CliSmsTD) ON_NOTIFY(LVN_ITEMCHANGED, IDD_CLISMSTD_CMCC, OnItemchangedClismstdCmcc) ON_NOTIFY(LVN_ITEMCHANGED, IDD_CLISMSTD_UNICOM, OnItemchangedClismstdUnicom) ON_NOTIFY(LVN_ITEMCHANGED, IDD_CLISMSTD_PHS, OnItemchangedClismstdPhs) ON_NOTIFY(LVN_ITEMCHANGED, IDD_CLISMSTD_TELCOM, OnItemchangedClismstdTelcom) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_CliSmsTD message handlers BOOL DLG_CliSmsTD::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here //加入图像列表 m_wndCmcc.SetTextBkColor( RGB(237,238,188) ); //设置成热激活形式 m_wndCmcc.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES); m_wndCmcc.InsertColumn( 0 , _T(" 实际通道") , LVCFMT_LEFT , 90 , 0); m_wndCmcc.InsertColumn( 1 , _T("客户端显示通道名称") , LVCFMT_LEFT , 200 , 1); m_wndCmcc.SetTextColor( RGB( 0 , 0 , 255 ) ); m_wndUnicom.SetTextBkColor( RGB(237,238,188) ); //设置成热激活形式 m_wndUnicom.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES); m_wndUnicom.InsertColumn( 0 , _T(" 实际通道") , LVCFMT_LEFT , 90 , 0); m_wndUnicom.InsertColumn( 1 , _T("客户端显示通道名称") , LVCFMT_LEFT , 200 , 1); m_wndUnicom.SetTextColor( RGB( 0 , 0 , 255 ) ); m_wndPhs.SetTextBkColor( RGB(237,238,188) ); //设置成热激活形式 m_wndPhs.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES); m_wndPhs.InsertColumn( 0 , _T(" 实际通道") , LVCFMT_LEFT , 90 , 0); m_wndPhs.InsertColumn( 1 , _T("客户端显示通道名称") , LVCFMT_LEFT , 200 , 1); m_wndPhs.SetTextColor( RGB( 0 , 0 , 255 ) ); m_wndTelcom.SetTextBkColor( RGB(237,238,188) ); //设置成热激活形式 m_wndTelcom.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES); m_wndTelcom.InsertColumn( 0 , _T(" 实际通道") , LVCFMT_LEFT , 90 , 0); m_wndTelcom.InsertColumn( 1 , _T("客户端显示通道名称") , LVCFMT_LEFT , 200 , 1); m_wndTelcom.SetTextColor( RGB( 0 , 0 , 255 ) ); m_B_CW.SetCheck(m_pTD->bCliTD_CW); SC_CliTD * pRetTD_Cmcc = (SC_CliTD *)((BYTE*)m_pTD+sizeof(ANS_CliSmsTD)); SC_CliTD * pRetTD_Unicom = (SC_CliTD *)((BYTE*)m_pTD+sizeof(ANS_CliSmsTD)+sizeof(SC_CliTD)*(m_pTD->lCliTD_Cmcc)); SC_CliTD * pRetTD_Phs = (SC_CliTD *)((BYTE*)m_pTD+sizeof(ANS_CliSmsTD)+sizeof(SC_CliTD)*(m_pTD->lCliTD_Cmcc+m_pTD->lCliTD_Unicom)); SC_CliTD * pRetTD_Telcom = (SC_CliTD *)((BYTE*)m_pTD+sizeof(ANS_CliSmsTD)+sizeof(SC_CliTD)*(m_pTD->lCliTD_Cmcc+m_pTD->lCliTD_Unicom+m_pTD->lCliTD_Phs)); m_bRefresh = true; //设移动数据 int j=0; for ( int i=0 ; i<30 ; i++ ) { CString strSrcTD; if ( i== 0 ) strSrcTD = _T("自动选择"); if ( i>0 && i<10 ) strSrcTD.Format( _T("第%d通道"),i ); if ( i== 10 ) strSrcTD = _T("随机通道"); if ( i>10 ) strSrcTD.Format( _T("第%d通道"),i-1 ); m_wndCmcc.InsertItem( i , strSrcTD ); if (jlCliTD_Cmcc && (TCHAR)('0'+i) == pRetTD_Cmcc[j].cSrcTD ) { m_wndCmcc.SetCheck(i); m_wndCmcc.SetItemText(i,1,pRetTD_Cmcc[j].szTDName); j++; } } //设联通数据 j=0; for ( i=0 ; i<30 ; i++ ) { CString strSrcTD; if ( i== 0 ) strSrcTD = _T("自动选择"); if ( i>0 && i<10 ) strSrcTD.Format( _T("第%d通道"),i ); if ( i== 10 ) strSrcTD = _T("随机通道"); if ( i>10 ) strSrcTD.Format( _T("第%d通道"),i-1 ); m_wndUnicom.InsertItem( i , strSrcTD ); if (jlCliTD_Unicom && (TCHAR)('0'+i) == pRetTD_Unicom[j].cSrcTD ) { m_wndUnicom.SetCheck(i); m_wndUnicom.SetItemText(i,1,pRetTD_Unicom[j].szTDName); j++; } } //设小灵通数据 j=0; for ( i=0 ; i<30 ; i++ ) { CString strSrcTD; if ( i== 0 ) strSrcTD = _T("自动选择"); if ( i>0 && i<10 ) strSrcTD.Format( _T("第%d通道"),i ); if ( i== 10 ) strSrcTD = _T("随机通道"); if ( i>10 ) strSrcTD.Format( _T("第%d通道"),i-1 ); m_wndPhs.InsertItem( i , strSrcTD ); if (jlCliTD_Phs && (TCHAR)('0'+i) == pRetTD_Phs[j].cSrcTD ) { m_wndPhs.SetCheck(i); m_wndPhs.SetItemText(i,1,pRetTD_Phs[j].szTDName); j++; } } //设电信数据 j=0; for ( i=0 ; i<30 ; i++ ) { CString strSrcTD; if ( i== 0 ) strSrcTD = _T("自动选择"); if ( i>0 && i<10 ) strSrcTD.Format( _T("第%d通道"),i ); if ( i== 10 ) strSrcTD = _T("随机通道"); if ( i>10 ) strSrcTD.Format( _T("第%d通道"),i-1 ); m_wndTelcom.InsertItem( i , strSrcTD ); if (jlCliTD_Telcom && (TCHAR)('0'+i) == pRetTD_Telcom[j].cSrcTD ) { m_wndTelcom.SetCheck(i); m_wndTelcom.SetItemText(i,1,pRetTD_Telcom[j].szTDName); j++; } } m_bRefresh = false; return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_CliSmsTD::SetParam(ANS_CliSmsTD *pTD) { m_pTD = pTD; } void DLG_CliSmsTD::OnItemchangedClismstdCmcc(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0; // if ( !m_wndCmcc.GetFirstSelectedItemPosition() ) // return ; if ( m_bRefresh ) return ; //原是禁用,现在是启用 if ( pNMListView->uNewState==8192 && pNMListView->uOldState== 4096 ) { CString strName = m_wndCmcc.GetItemText(pNMListView->iItem , 1 ); DLG_CliSmsTD_Modify dlg(this); dlg.SetParam(strName); if ( dlg.DoModal() == IDOK ) { m_wndCmcc.SetItemText(pNMListView->iItem,1,dlg.m_strTDName); } else { m_wndCmcc.SetCheck(pNMListView->iItem,false); } } //原是启用,现在是禁用 if ( pNMListView->uNewState==4096 && pNMListView->uOldState== 8192 ) { //m_wndCmcc.SetItemText(pNMListView->iItem,1,_T("")); } } void DLG_CliSmsTD::OnItemchangedClismstdUnicom(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0; if ( m_bRefresh ) return ; //原是禁用,现在是启用 if ( pNMListView->uNewState==8192 && pNMListView->uOldState== 4096 ) { CString strName = m_wndUnicom.GetItemText(pNMListView->iItem , 1 ); DLG_CliSmsTD_Modify dlg(this); dlg.SetParam(strName); if ( dlg.DoModal() == IDOK ) { m_wndUnicom.SetItemText(pNMListView->iItem,1,dlg.m_strTDName); } else { m_wndUnicom.SetCheck(pNMListView->iItem,false); } } //原是启用,现在是禁用 if ( pNMListView->uNewState==4096 && pNMListView->uOldState== 8192 ) { //m_wndUnicom.SetItemText(pNMListView->iItem,1,_T("")); } } void DLG_CliSmsTD::OnItemchangedClismstdPhs(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0; if ( m_bRefresh ) return ; //原是禁用,现在是启用 if ( pNMListView->uNewState==8192 && pNMListView->uOldState== 4096 ) { CString strName = m_wndPhs.GetItemText(pNMListView->iItem , 1 ); DLG_CliSmsTD_Modify dlg(this); dlg.SetParam(strName); if ( dlg.DoModal() == IDOK ) { m_wndPhs.SetItemText(pNMListView->iItem,1,dlg.m_strTDName); } else { m_wndPhs.SetCheck(pNMListView->iItem,false); } } //原是启用,现在是禁用 if ( pNMListView->uNewState==4096 && pNMListView->uOldState== 8192 ) { //m_wndPhs.SetItemText(pNMListView->iItem,1,_T("")); } } void DLG_CliSmsTD::OnOK() { REQ_CliSmsTD m_TD={0}; m_TD.lType = 1; //设通道 m_TD.bCliTD_CW = m_B_CW.GetCheck(); //先取数量 m_TD.lCliTD_Cmcc = 0; for (int i = 0; i < m_wndCmcc.GetItemCount(); i++) { if(m_wndCmcc.GetCheck(i)) m_TD.lCliTD_Cmcc++; } m_TD.lCliTD_Unicom = 0; for (i = 0; i < m_wndUnicom.GetItemCount(); i++) { if(m_wndUnicom.GetCheck(i)) m_TD.lCliTD_Unicom++; } m_TD.lCliTD_Phs = 0; for (i = 0; i < m_wndPhs.GetItemCount(); i++) { if(m_wndPhs.GetCheck(i)) m_TD.lCliTD_Phs++; } m_TD.lCliTD_Telcom = 0; for (i = 0; i < m_wndTelcom.GetItemCount(); i++) { if(m_wndTelcom.GetCheck(i)) m_TD.lCliTD_Telcom++; } m_lReqSize = sizeof(REQ_CliSmsTD)+sizeof(SC_CliTD)*(m_TD.lCliTD_Cmcc+m_TD.lCliTD_Unicom+m_TD.lCliTD_Phs+m_TD.lCliTD_Telcom); BYTE * pData = new BYTE[m_lReqSize]; memset(pData , 0 , m_lReqSize ); REQ_CliSmsTD * pRetTD = (REQ_CliSmsTD*)pData; SC_CliTD * pRetTD_Cmcc = (SC_CliTD *)(pData+sizeof(REQ_CliSmsTD)); SC_CliTD * pRetTD_Unicom = (SC_CliTD *)(pData+sizeof(REQ_CliSmsTD)+sizeof(SC_CliTD)*(m_TD.lCliTD_Cmcc)); SC_CliTD * pRetTD_Phs = (SC_CliTD *)(pData+sizeof(REQ_CliSmsTD)+sizeof(SC_CliTD)*(m_TD.lCliTD_Cmcc+m_TD.lCliTD_Unicom)); SC_CliTD * pRetTD_Telcom = (SC_CliTD *)(pData+sizeof(REQ_CliSmsTD)+sizeof(SC_CliTD)*(m_TD.lCliTD_Cmcc+m_TD.lCliTD_Unicom+m_TD.lCliTD_Phs)); *pRetTD = m_TD; int j=0; for (i = 0; i < m_wndCmcc.GetItemCount(); i++) { if(m_wndCmcc.GetCheck(i)) { pRetTD_Cmcc[j].cSrcTD = (TCHAR)('0'+i); m_wndCmcc.GetItemText(i,1,pRetTD_Cmcc[j].szTDName,sizeof(pRetTD_Cmcc[j].szTDName)); j++; } } j=0; for (i = 0; i < m_wndUnicom.GetItemCount(); i++) { if(m_wndUnicom.GetCheck(i)) { pRetTD_Unicom[j].cSrcTD = (TCHAR)('0'+i); m_wndUnicom.GetItemText(i,1,pRetTD_Unicom[j].szTDName,sizeof(pRetTD_Unicom[j].szTDName)); j++; } } j=0; for (i = 0; i < m_wndPhs.GetItemCount(); i++) { if(m_wndPhs.GetCheck(i)) { pRetTD_Phs[j].cSrcTD = (TCHAR)('0'+i); m_wndPhs.GetItemText(i,1,pRetTD_Phs[j].szTDName,sizeof(pRetTD_Phs[j].szTDName)); j++; } } j=0; for (i = 0; i < m_wndTelcom.GetItemCount(); i++) { if(m_wndTelcom.GetCheck(i)) { pRetTD_Telcom[j].cSrcTD = (TCHAR)('0'+i); m_wndTelcom.GetItemText(i,1,pRetTD_Telcom[j].szTDName,sizeof(pRetTD_Telcom[j].szTDName)); j++; } } m_pReqTD= pData; CDialog::OnOK(); } void DLG_CliSmsTD::OnItemchangedClismstdTelcom(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0; if ( m_bRefresh ) return ; //原是禁用,现在是启用 if ( pNMListView->uNewState==8192 && pNMListView->uOldState== 4096 ) { CString strName = m_wndTelcom.GetItemText(pNMListView->iItem , 1 ); DLG_CliSmsTD_Modify dlg(this); dlg.SetParam(strName); if ( dlg.DoModal() == IDOK ) { m_wndTelcom.SetItemText(pNMListView->iItem,1,dlg.m_strTDName); } else { m_wndTelcom.SetCheck(pNMListView->iItem,false); } } //原是启用,现在是禁用 if ( pNMListView->uNewState==4096 && pNMListView->uOldState== 8192 ) { //m_wndTelcom.SetItemText(pNMListView->iItem,1,_T("")); } }