// DLG_Corp_LXR.cpp : implementation file // #include "stdafx.h" #include "smsmanager.h" #include "DLG_Corp_LXR.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_Corp_LXR dialog #include "DLG_Corp_LXR_Modify.h" DLG_Corp_LXR::DLG_Corp_LXR(CWnd* pParent /*=NULL*/) : CDialog(DLG_Corp_LXR::IDD, pParent) { //{{AFX_DATA_INIT(DLG_Corp_LXR) m_strCorpName = _T(""); m_strSMSNum = _T(""); //}}AFX_DATA_INIT m_lModifyCount = 0; m_lLXRCount = 0; memset( &m_LXRReq , 0 , sizeof(m_LXRReq) ); m_pLXRData = NULL; m_bModify = true; m_lCorpType = 0; } void DLG_Corp_LXR::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_Corp_LXR) DDX_Control(pDX, IDC_CORP_LXR_LIST, m_wndList); DDX_Text(pDX, IDC_CORP_LXR_CORPNAME, m_strCorpName); DDX_Text(pDX, IDC_CORP_LXR_SMSNUM, m_strSMSNum); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_Corp_LXR, CDialog) //{{AFX_MSG_MAP(DLG_Corp_LXR) ON_NOTIFY(NM_DBLCLK, IDC_CORP_LXR_LIST, OnDblclkCorpLxrList) ON_BN_CLICKED(IDC_CORP_LXR_MODIFY, OnCorpLxrModify) ON_BN_CLICKED(IDC_CORP_LXR_ADD, OnCorpLxrAdd) ON_BN_CLICKED(IDC_CORP_LXR_DEL, OnCorpLxrDel) //}}AFX_MSG_MAP ON_BN_CLICKED(IDOK, &DLG_Corp_LXR::OnBnClickedOk) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_Corp_LXR message handlers void DLG_Corp_LXR::SetParam(ANS_Corp_LXR LXR , ANS_Corp_LXRData *pLXRData,BOOL bModify, long lCorpType) { m_lLXRCount = LXR.lCount; m_LXRReq = LXR; m_pLXRData = pLXRData; m_bModify = bModify; m_lCorpType = lCorpType; } BOOL DLG_Corp_LXR::OnInitDialog() { CDialog::OnInitDialog(); m_strCorpName = m_LXRReq.szCorpName; m_strSMSNum = m_LXRReq.szSMSNum; this->UpdateData(false); //初始化List m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("序号,50; 姓名,80; 昵称,80; 部门,80; 电话,80; 手机,80;")); m_wndList.SetGridLines(true); m_wndList.SetImageList(&m_Image,LVSIL_SMALL); POSITION pos; TCHAR Buf[32]; for ( int i = 0 ; i< m_lLXRCount ; i++ ) { ANS_Corp_LXRData * pData = new ANS_Corp_LXRData; *pData = m_pLXRData[i]; pos = m_LXR.AddTail( pData ); _stprintf( Buf , _T("%d") , i+1 ); m_wndList.InsertItem( i , Buf , 0 ); m_wndList.SetItemData( i , (DWORD)pos); m_wndList.SetItemText( i , 1 , pData->szName ); m_wndList.SetItemText( i , 2 , pData->szNickName ); m_wndList.SetItemText( i , 3 , pData->szBranch ); m_wndList.SetItemText( i , 4 , pData->szTel ); m_wndList.SetItemText( i , 5 , pData->szMobile ); } if ( !m_bModify ) { GetDlgItem(IDC_CORP_LXR_ADD)->EnableWindow(false); GetDlgItem(IDC_CORP_LXR_MODIFY)->EnableWindow(false); GetDlgItem(IDC_CORP_LXR_DEL)->EnableWindow(false); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_Corp_LXR::OnDblclkCorpLxrList(NMHDR* pNMHDR, LRESULT* pResult) { OnCorpLxrModify(); *pResult = 0; } void DLG_Corp_LXR::OnCorpLxrModify() { if ( !m_bModify ) return ; long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); POSITION pos2 = pos; ANS_Corp_LXRData * pData = m_LXR.GetNext( pos ); if (pData) { DLG_Corp_LXR_Modify dlg(this); dlg.SetParam( *pData,pos2); if ( dlg.DoModal() == IDOK ) { *pData = dlg.GetParam(); //取得修改过后的值 m_wndList.SetItemText( lItem , 1 , pData->szName ); m_wndList.SetItemText( lItem , 2 , pData->szNickName ); m_wndList.SetItemText( lItem , 3 , pData->szBranch ); m_wndList.SetItemText( lItem , 4 , pData->szTel ); m_wndList.SetItemText( lItem , 5 , pData->szMobile ); if ( pData->ucStatus == 0 ) { pData->ucStatus = CORP_LXR_MODIFY; //需要修改 m_lModifyCount ++; //需要修改的记录增加 } } } } long DLG_Corp_LXR::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } BOOL DLG_Corp_LXR::FindLXRName(const TCHAR *pLXRName, POSITION exPos) { POSITION pos = m_LXR.GetHeadPosition(); POSITION pos2; while (pos) { pos2 = pos; ANS_Corp_LXRData * pData = m_LXR.GetNext( pos ); if ( pos2 != exPos ) { if ( !_tcscmp( pData->szName , pLXRName ) ) return true; } } return false; } void DLG_Corp_LXR::OnCorpLxrAdd() { if ( !m_bModify ) return ; ANS_Corp_LXRData LXRData={0}; DLG_Corp_LXR_Modify dlg(this); dlg.SetParam( LXRData,0); if ( dlg.DoModal() == IDOK ) { ANS_Corp_LXRData * pData = new ANS_Corp_LXRData; *pData = dlg.GetParam(); pData->ucStatus = CORP_LXR_ADD; pData->lCorpType = m_lCorpType; m_lModifyCount ++; //需要修改的记录增加 POSITION pos = m_LXR.AddTail( pData ); long lCount = m_wndList.GetItemCount(); TCHAR Buf[32]; _stprintf( Buf, _T("%d") , lCount +1 ); //设置新的数据 m_wndList.InsertItem( lCount , Buf , 0); m_wndList.SetItemData( lCount, (DWORD)pos ); m_wndList.SetItemText( lCount , 1 , pData->szName ); m_wndList.SetItemText( lCount , 2 , pData->szNickName ); m_wndList.SetItemText( lCount , 3 , pData->szBranch ); m_wndList.SetItemText( lCount , 4 , pData->szTel ); m_wndList.SetItemText( lCount , 5 , pData->szMobile ); } } void DLG_Corp_LXR::OnCorpLxrDel() { if ( !m_bModify ) return ; long lCount = m_wndList.GetSelectedCount(); if ( lCount <= 0 ) return ; long lRet = MessageBox( _T("此操作将会删除联系人,是否继续?") , _T("提问") , MB_ICONQUESTION|MB_YESNOCANCEL|MB_DEFBUTTON2); if ( lRet != IDYES ) return; long * lDel = new long[lCount]; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long i=0; while ( pos ) { lDel[i] = m_wndList.GetNextSelectedItem(pos); i++; } for ( i = lCount-1 ; i>=0 ; i-- ) //倒转删除 { long lItem = lDel[i]; POSITION pos = (POSITION)m_wndList.GetItemData(lItem); m_wndList.DeleteItem( lItem ); //删除 POSITION pos2 = pos; ANS_Corp_LXRData * pData = m_LXR.GetNext( pos ); if (pData) { if (pData->ucStatus == 0) { pData->ucStatus = CORP_LXR_DEL; m_lModifyCount ++; //需要修改的记录增加 } else { pData->ucStatus = 0; m_lModifyCount --; //因为修改增加时会加1 } } } delete lDel; } void DLG_Corp_LXR::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CDialog::OnOK(); }