// DLG_UBoxPop.cpp : ʵÏÖÎļþ // #include "stdafx.h" #include "CorpSms.h" #include "DLG_UBoxPop.h" #include "afxdialogex.h" #include "MainFrm.h" #include "FUBoxLog.h" #include "DLG_SmsDY.h" #include "DLG_UserSelect.h" // DLG_UBoxPop ¶Ô»°¿ò IMPLEMENT_DYNAMIC(DLG_UBoxPop, CDialogEx) DLG_UBoxPop::DLG_UBoxPop(CWnd* pParent /*=NULL*/) : CDialogEx(DLG_UBoxPop::IDD, pParent) { m_lCallingCount = 0; m_strKH_BZ = _T(""); m_strKH_Job = _T(""); m_strCall_BZ = _T(""); m_strCallTime = _T(""); m_strCallType = _T(""); m_strKH_Local = _T(""); m_strKH_LTD = _T(""); m_strKH_Mobile = _T(""); // m_strKH_ = _T(""); m_strKH_Name = _T(""); m_strKH_Tel = _T(""); m_strCall_Number = _T(""); m_strCall_NumberLocal = _T(""); m_lCallStatus = 0; m_lCallWay=0; m_bAddressModify = false; m_lAddressType = 0; m_lUserID = 0; m_bSelGroup = false; m_bCallModify = true; m_bCallSendSms = true; m_bAddressSave = false; m_bCallYModify = false; m_bAddressYModify = false; m_dwCallJT = 0; m_bCallBegin = false; m_bCallEnd = false; m_lUBoxLogID = 0; m_bSaveCallPro = false; m_lCallSC = 0; m_lTickCount = GetTickCount(); m_lBeginTime = 0; m_lGroupID = 0; m_bRecord = false; m_bRecordEnd = false; } DLG_UBoxPop::~DLG_UBoxPop() { int i=10; } void DLG_UBoxPop::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDD_UBOXPOP__KH_BZ, m_strKH_BZ); // DDV_MaxChars(pDX, m_strKH_BZ, 50); DDX_Text(pDX, IDD_UBOXPOP__KH_JOB, m_strKH_Job); DDV_MaxChars(pDX, m_strKH_Job, 30); DDX_Text(pDX, IDD_UBOXPOP_CALLBZ, m_strCall_BZ); DDV_MaxChars(pDX, m_strCall_BZ, 500); DDX_Control(pDX, IDD_UBOXPOP_CALLSTATUS, m_S_CallStatus); DDX_Text(pDX, IDD_UBOXPOP_CALLTIME, m_strCallTime); DDV_MaxChars(pDX, m_strCallTime, 30); DDX_Text(pDX, IDD_UBOXPOP_CALLTYPE, m_strCallType); DDV_MaxChars(pDX, m_strCallType, 30); DDX_Control(pDX, IDD_UBOXPOP_CALLWAY, m_S_CallWay); DDX_Text(pDX, IDD_UBOXPOP_KH_LOCAL, m_strKH_Local); DDV_MaxChars(pDX, m_strKH_Local, 200); DDX_Text(pDX, IDD_UBOXPOP_KH_LTD, m_strKH_LTD); DDV_MaxChars(pDX, m_strKH_LTD, 50); DDX_Text(pDX, IDD_UBOXPOP_KH_MOBILE, m_strKH_Mobile); DDV_MaxChars(pDX, m_strKH_Mobile, 30); DDX_Text(pDX, IDD_UBOXPOP_KH_NAME, m_strKH_Name); DDV_MaxChars(pDX, m_strKH_Name, 24); DDX_Text(pDX, IDD_UBOXPOP_KH_TEL, m_strKH_Tel); DDV_MaxChars(pDX, m_strKH_Tel, 24); DDX_Text(pDX, IDD_UBOXPOP_NUMBER, m_strCall_Number); DDV_MaxChars(pDX, m_strCall_Number, 30); DDX_Text(pDX, IDD_UBOXPOP_NUMBERLOCAL, m_strCall_NumberLocal); DDV_MaxChars(pDX, m_strCall_NumberLocal, 120); DDX_Control(pDX, IDD_UBOXPOP_LIST, m_wndList); } BEGIN_MESSAGE_MAP(DLG_UBoxPop, CDialogEx) ON_WM_TIMER() ON_EN_CHANGE(IDD_UBOXPOP_KH_NAME, &DLG_UBoxPop::OnEnChangeUboxpopKhName) ON_EN_CHANGE(IDD_UBOXPOP_KH_LTD, &DLG_UBoxPop::OnEnChangeUboxpopKhLtd) ON_EN_CHANGE(IDD_UBOXPOP__KH_JOB, &DLG_UBoxPop::OnEnChangeUboxpop) ON_EN_CHANGE(IDD_UBOXPOP_KH_MOBILE, &DLG_UBoxPop::OnEnChangeUboxpopKhMobile) ON_EN_CHANGE(IDD_UBOXPOP_KH_TEL, &DLG_UBoxPop::OnEnChangeUboxpopKhTel) ON_EN_CHANGE(IDD_UBOXPOP__KH_BZ, &DLG_UBoxPop::OnEnChangeUboxpopKhBZ) ON_BN_CLICKED(IDD_UBOXPOP_KH_LOCAL_SEL, &DLG_UBoxPop::OnBnClickedUboxpopKhLocalSel) ON_BN_CLICKED(IDD_UBOXPOP_CALLTYPE_SEL, &DLG_UBoxPop::OnBnClickedUboxpopCalltypeSel) ON_EN_CHANGE(IDD_UBOXPOP_CALLBZ, &DLG_UBoxPop::OnEnChangeUboxpopCallbz) ON_COMMAND_RANGE(UBOXPOP_CALLTYPE_BEGIN,UBOXPOP_CALLTYPE_END,&DLG_UBoxPop::On_CallType) ON_COMMAND_RANGE(UBOXPOP_SMSDY_BEGIN,UBOXPOP_SMSDY_END,&DLG_UBoxPop::On_SmsDY) ON_COMMAND(UBOXPOP_SMSDY_OTHER , &DLG_UBoxPop::On_SmsDY_Other) ON_COMMAND(UBOXPOP_SMSDY_MANAGER , &DLG_UBoxPop::On_SmsDY_Manager) ON_MESSAGE( UBOX_EVENT , UBox_Event ) ON_BN_CLICKED(IDOK, &DLG_UBoxPop::OnBnClickedOk) ON_BN_CLICKED(IDCANCEL, &DLG_UBoxPop::OnBnClickedCancel) ON_BN_CLICKED(IDD_UBOXPOP_CALL_RESMS, &DLG_UBoxPop::OnBnClickedUboxpopCallResms) END_MESSAGE_MAP() // DLG_UBoxPop ÏûÏ¢´¦Àí³ÌÐò void DLG_UBoxPop::SetMainFrame(CMainFrame * pFrame) { m_pMainFrame = pFrame; } void DLG_UBoxPop::ReSetTitle(void) { CString str; if ( m_lCallWay==0 ) str = _T("ºôÈë"); else str = _T("ºô³ö"); str = str + CString(_T(" ")) + m_strCall_NumberLocal; str = str + CString(_T(" ")) + m_strNumber; str = str + CString(_T(" ")) + m_strKH_Name; str = str + CString(_T(" ")) + m_strKH_LTD; if ( m_lCallingCount>1 ) { CString strTemp; strTemp.Format( _T("%d´Î"),this->m_lCallingCount); str = str + CString(_T(" ")) + strTemp; } SetWindowText(str); } void DLG_UBoxPop::SetNumber(CString strNumber) { m_strNumber = strNumber; } void DLG_UBoxPop::OnTimer(UINT_PTR nIDEvent) { CDialogEx::OnTimer(nIDEvent); if ( nIDEvent ==1 ) { KillTimer(nIDEvent); GetAddress(); } if ( nIDEvent ==2 ) { if ( m_dwCallJT>0 ) { DWORD dwTime = ::GetTickCount()-m_dwCallJT; long lSec = dwTime/1000; COleDateTimeSpan sc(0,0,0,lSec); CString str; str.Format(_T("%02d:%02d") , sc.GetMinutes(),sc.GetSeconds()); m_S_CallStatus.SetWindowText(str); } } if ( nIDEvent ==7 ) //ÓÃÓÚ×Ô¶¯½ÓÌý { KillTimer(nIDEvent); Call_Begin(); } if ( nIDEvent == 8 ) //ÓÃÓÚÅжÏÉÏ´«Í¨»°¼Ç¼³¬Ê± { KillTimer(nIDEvent); Call_Close(); //¹Ø±Õͨ»°´°¿Ú } } void DLG_UBoxPop::GetAddress(void) { m_AdoRS.SetAdoConnection(&this->m_pMainFrame->m_adoConnection); m_AdoRS2.SetAdoConnection(&this->m_pMainFrame->m_adoConnection); UpdateData(true); CString str; m_bCallModify = true; //ĬÈÏÊÇÔÊÐíÐÞ¸ÄÀ´µçÊôÐÔ m_bCallSendSms = true; //ĬÈÏÊÇÔÊÐí»Ø¸´¶ÌÐÅµÄ m_bAddressSave = false; //ĬÈϲ»ÊÇÐÂÔöͨѶ¼£¬²»ÄÜÑ¡Ôñ±£´æ //ÊÕµ½DTMF£¬¼ì²éÏà¹ØÊý¾Ý if ( m_strNumber.GetLength()>0 ) { BOOL bGetAddress=false; if (m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_SEE,false)) //Óй«ÓÃͨѶ¼²é¿´È¨ÏÞ { //²éÓû§ str.Format(_T("select * from gaddress where Mobile='%s' or Tel='%s'"),m_strNumber,m_strNumber); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { bGetAddress = true; m_lAddressType = 0; //¹«ÓÃͨѶ¼ m_bSelGroup = false; //ÒÑÓÐÓû§£¬²»ÔÊÐíÑ¡Ôñ×é /* if (m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_MODIFY,false)) //Óй«ÓÃͨѶ¼²é¿´È¨ÏÞ { m_bAddressModify = true; //ÔÊÐíÐÞ¸ÄͨѶ¼ } */ m_bAddressModify = false; //¹«ÓÃͨѶ¼µÄ£¬²»ÔÊÐíÐÞ¸Ä m_AdoRS.GetCollect(_T("UserID") , m_lUserID ); m_AdoRS.GetCollect(_T("Name") , m_strKH_Name ); m_AdoRS.GetCollect(_T("LTD") , m_strKH_LTD ); m_AdoRS.GetCollect(_T("Job") , m_strKH_Job ); m_AdoRS.GetCollect(_T("Mobile") , m_strKH_Mobile ); m_AdoRS.GetCollect(_T("Tel") , m_strKH_Tel ); m_AdoRS.GetCollect(_T("BZ") , m_strKH_BZ ); TCHAR szGroupID[32]={0}; m_AdoRS.GetCollect(_T("GroupID") , szGroupID ); TCHAR szLocal[512]={0}; GetLocal(_T("¹«ÓÃͨѶ¼"),_T("gaddress") , szLocal,szGroupID); m_strKH_Local = szLocal; } } if ( !bGetAddress ) { //²éÓû§ str.Format(_T("select * from paddress where Mobile='%s' or Tel='%s'"),m_strNumber,m_strNumber); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { bGetAddress = true; m_lAddressType = 1; //˽ÈËͨѶ¼ m_bSelGroup = false; //ÒÑÓÐÓû§£¬²»ÔÊÐíÑ¡Ôñ×é m_bAddressModify = true; //ÔÊÐíÐÞ¸ÄͨѶ¼ m_AdoRS.GetCollect(_T("UserID") , m_lUserID ); m_AdoRS.GetCollect(_T("Name") , m_strKH_Name ); m_AdoRS.GetCollect(_T("LTD") , m_strKH_LTD ); m_AdoRS.GetCollect(_T("Job") , m_strKH_Job ); m_AdoRS.GetCollect(_T("Mobile") , m_strKH_Mobile ); m_AdoRS.GetCollect(_T("Tel") , m_strKH_Tel ); m_AdoRS.GetCollect(_T("BZ") , m_strKH_BZ ); TCHAR szGroupID[32]={0}; m_AdoRS.GetCollect(_T("GroupID") , szGroupID ); TCHAR szLocal[512]={0}; GetLocal(_T("˽ÈËͨѶ¼"),_T("paddress") , szLocal,szGroupID); m_strKH_Local = szLocal; } } if ( !bGetAddress ) { m_lAddressType = -1; //δ֪ m_bSelGroup = true; //ÔÊÐíÑ¡ÔñÓû§×é m_bAddressModify = true; //ÔÊÐíÐÞ¸ÄͨѶ¼ m_bAddressSave = true; //ÔÊÐíÑ¡Ôñ±£´æÍ¨Ñ¶Â¼ m_lAddressType = 1; //˽ÈËͨѶ¼ m_strKH_Local = _T("˽ÈËͨѶ¼"); m_strKHGroupID = _T(""); //ĬÈϱ£´æÎ»Öà if ( m_strNumber.Left(1) == _T("1") ) //ÊÖ»ú { m_strKH_Mobile = m_strNumber; } else { m_strKH_Tel = m_strNumber; } } //·¢³öÇëÇ󣬶Áȡͨ»°¼Ç¼.Èç¹ûÊÇ100000£¬¶ÁÈ¡ÆóÒµID¡£ REQ_UBox_GetPro * pGetPro = new REQ_UBox_GetPro; memset(pGetPro , 0 , sizeof(REQ_UBox_GetPro)); pGetPro->lCorpID = m_pMainFrame->m_lCorpID; pGetPro->lUserID = m_pMainFrame->m_lUserID; pGetPro->lTickCount = m_lTickCount; pGetPro->lAddressType = m_lAddressType; pGetPro->lKH_UserID = m_lUserID; _tcscpy(pGetPro->szCallNumber , m_strNumber); pGetPro->bGetCorpPro = false; if ( !bGetAddress && m_pMainFrame->m_lCorpID==100000) { pGetPro->bGetCorpPro = true; } m_pMainFrame->SendFrame(SMSFUNC_UBOX_GETPRO,(BYTE*)pGetPro,sizeof(REQ_UBox_GetPro)); } else { m_lAddressType = -1; //δ֪ m_bSelGroup = false; //ÒÑÓÐÓû§£¬²»ÔÊÐíÑ¡Ôñ×é m_bAddressModify = false; //ÔÊÐíÐÞ¸ÄͨѶ¼ m_bCallSendSms = false; //²»ÔÊÐí·¢ËͶÌÐÅ } EnableCtrl(); ReSetTitle(); UpdateData(false); } void DLG_UBoxPop::GetLocal(CString strType,CString strDBName,TCHAR *pLocal, TCHAR *pGroupID) { long lLen = _tcslen( pGroupID ); TCHAR szGroup[16]={0}; TCHAR szTemp[16]={0}; TCHAR szSelect[128]={0}; _stprintf( pLocal , strType ); for ( int i = 1 ; i<= lLen ; i++ ) { _tcsncpy( szGroup , pGroupID , i ); _stprintf( szSelect , _T("select Name from %s where GroupID='%s' AND UserType='0' ") ,strDBName, szGroup ); BOOL b = m_AdoRS.Open( szSelect ); if (b && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect( _T("Name") , szTemp ); _tcscat( pLocal , _T("\\") ); _tcscat( pLocal , szTemp ); } } } BOOL DLG_UBoxPop::OnInitDialog() { CDialogEx::OnInitDialog(); m_lTickCount = GetTickCount(); //³õʼ»¯List m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CALLIN) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CALLIN2) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CALLOUT) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CALLOUT2) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T("µç»°ºÅÂë,130; ʱ ¼ä,130;ͨ»°Ê±³¤,80;½ÓÌýÈË,90; ÐÕÃû,90; µ¥Î»Ãû³Æ,200; ±¸×¢,220;")); m_wndList.SetGridLines(true); m_wndList.SetImageList(&m_Image,LVSIL_SMALL); m_strCall_Number = m_strNumber; GetLocalTime(&m_tCallTime); m_strCallTime.Format(_T("%02d:%02d:%02d") , m_tCallTime.wHour,m_tCallTime.wMinute,m_tCallTime.wSecond); m_strCall_NumberLocal=_T("δ֪¹éÊôµØ"); m_strCallType = _T("δ·ÖÀà"); SetCallStatus(); SetCallWay(); UpdateData(false); SetTimer(1,100,NULL); //½øÐÐȡͨѶ¼²Ù×÷ if ( m_lCallWay == 1 ) //ºô³ö { long lDelay = m_pMainFrame->m_Setup.UBox_lPhoneOutDelay; if ( lDelay <7 || lDelay>20 ) lDelay = 7; if ( m_lBeginTime>0 ) SetTimer( 7 , m_lBeginTime*1000 , NULL ); //×Ô¶¯½Óͨ,ÐèÒªÁ¢¼´½Óͨ else SetTimer( 7 , lDelay*1000 , NULL ); //×Ô¶¯½Óͨ } ReSetTitle(); return TRUE; // return TRUE unless you set the focus to a control // Òì³£: OCX ÊôÐÔÒ³Ó¦·µ»Ø FALSE } void DLG_UBoxPop::SetCallStatus(void) { if ( m_lCallStatus ==0 ) { m_S_CallStatus.SetWindowText(_T("δ½Ó")); } else { m_S_CallStatus.SetWindowText(_T("ÒѽÓ")); } } void DLG_UBoxPop::SetCallWay(void) { if ( m_lCallWay ==0 ) { m_S_CallWay.SetWindowText(_T("ºôÈë")); } else { m_S_CallWay.SetWindowText(_T("ºô³ö")); } } void DLG_UBoxPop::EnableCtrl(void) { if ( m_bSelGroup ) { GetDlgItem(IDD_UBOXPOP_KH_LOCAL_SEL)->EnableWindow(true); } else { GetDlgItem(IDD_UBOXPOP_KH_LOCAL_SEL)->EnableWindow(false); } if ( m_bCallModify ) { GetDlgItem(IDD_UBOXPOP_CALLTYPE_SEL)->EnableWindow(true); ((CEdit *)GetDlgItem(IDD_UBOXPOP_CALLBZ))->SetReadOnly(false); } else { GetDlgItem(IDD_UBOXPOP_CALLTYPE_SEL)->EnableWindow(false); ((CEdit *)GetDlgItem(IDD_UBOXPOP_CALLBZ))->SetReadOnly(true); } if ( m_bCallSendSms ) { GetDlgItem(IDD_UBOXPOP_CALL_RESMS)->EnableWindow(true); } else { GetDlgItem(IDD_UBOXPOP_CALL_RESMS)->EnableWindow(false); } if ( m_bAddressModify ) { ((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_NAME))->SetReadOnly(false); ((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_LTD))->SetReadOnly(false); ((CEdit *)GetDlgItem(IDD_UBOXPOP__KH_JOB))->SetReadOnly(false); ((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_MOBILE))->SetReadOnly(false); ((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_TEL))->SetReadOnly(false); ((CEdit *)GetDlgItem(IDD_UBOXPOP__KH_BZ))->SetReadOnly(false); } else { ((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_NAME))->SetReadOnly(true); ((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_LTD))->SetReadOnly(true); ((CEdit *)GetDlgItem(IDD_UBOXPOP__KH_JOB))->SetReadOnly(true); ((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_MOBILE))->SetReadOnly(true); ((CEdit *)GetDlgItem(IDD_UBOXPOP_KH_TEL))->SetReadOnly(true); ((CEdit *)GetDlgItem(IDD_UBOXPOP__KH_BZ))->SetReadOnly(true); } if ( m_bAddressSave ) { GetDlgItem(IDD_UBOXPOP__KH_SAVE)->EnableWindow(true); } else { GetDlgItem(IDD_UBOXPOP__KH_SAVE)->EnableWindow(false); } } void DLG_UBoxPop::OnEnChangeUboxpopKhName() { m_bAddressYModify = true; //Ð޸ĹýͨѶ¼×ÊÁÏ } void DLG_UBoxPop::OnEnChangeUboxpopKhLtd() { m_bAddressYModify = true; //Ð޸ĹýͨѶ¼×ÊÁÏ } void DLG_UBoxPop::OnEnChangeUboxpop() { m_bAddressYModify = true; //Ð޸ĹýͨѶ¼×ÊÁÏ } void DLG_UBoxPop::OnEnChangeUboxpopKhMobile() { m_bAddressYModify = true; //Ð޸ĹýͨѶ¼×ÊÁÏ } void DLG_UBoxPop::OnEnChangeUboxpopKhTel() { m_bAddressYModify = true; //Ð޸ĹýͨѶ¼×ÊÁÏ } void DLG_UBoxPop::OnEnChangeUboxpopKhBZ() { m_bCallYModify = true; //Ð޸ĹýͨѶÊôÐÔ×ÊÁÏ } void DLG_UBoxPop::OnBnClickedUboxpopKhLocalSel() { DLG_UserSelect dlg(this); dlg.SetParam( m_pMainFrame,_T("paddress"),_T("¸ùĿ¼"),false ); if ( dlg.DoModal()==IDOK ) { m_lGroupID = dlg.GetParam(m_strGroupID); m_bAddressYModify = true; //Ð޸ĹýͨѶ¼×ÊÁÏ m_lAddressType = 1; //˽ÈËͨѶ¼ //µ½GroupID CString str; m_strGroupID = _T(""); str.Format(_T("select * from paddress where UserID=%d") , m_lGroupID ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("GroupID") , m_strGroupID); } TCHAR szLocal[512]={0}; GetLocal(_T("˽ÈËͨѶ¼"),_T("paddress") , szLocal,m_strGroupID.GetBuffer(0)); UpdateData(true); m_strKH_Local = szLocal; //m_Address.lAccessGroupID = dlg.GetParam(m_strGroup); UpdateData(false); } } void DLG_UBoxPop::OnBnClickedUboxpopCalltypeSel() { CMenu menu; menu.CreatePopupMenu(); long lCount = m_CallType.GetCount(); for ( long i=0 ; i<lCount; i++ ) { menu.AppendMenu(MF_STRING , UBOXPOP_CALLTYPE_BEGIN+i, m_CallType.GetAt(i).szType ); } CRect rect; GetDlgItem(IDD_UBOXPOP_CALLTYPE_SEL)->GetWindowRect(&rect); //this->ClientToScreen(&rect); //ÏÔʾ²Ëµ¥ menu.TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON | TPM_RIGHTBUTTON,rect.right,rect.bottom, this, NULL); menu.DestroyMenu(); //m_bCallYModify = true; //Ð޸ĹýͨѶÊôÐÔ×ÊÁÏ } void DLG_UBoxPop::OnEnChangeUboxpopCallbz() { m_bCallYModify = true; //Ð޸ĹýͨѶÊôÐÔ×ÊÁÏ } BOOL DLG_UBoxPop::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame) { try { CString str; //È¡ÍÆ¼öÐÅÏ¢ if (pHead->lFuncType == SMSFUNC_UBOX_GETPRO) { ANS_UBox_GetPro * pGetPro = (ANS_UBox_GetPro *)pFrame; ANS_UBox_CallType * pCallType = (ANS_UBox_CallType *)(pFrame+sizeof(ANS_UBox_GetPro)); ANS_UBox_CallLog * pCallLog = (ANS_UBox_CallLog *)(pFrame+sizeof(ANS_UBox_GetPro)+sizeof(ANS_UBox_CallType)*pGetPro->lCallTypeCount); if ( pGetPro->lTickCount != m_lTickCount ) //²»ÊÇ´Ë´°¿Ú·¢³öµÄ£¬²»´¦Àí¡£ { return true; } UpdateData(true); m_strCall_NumberLocal = pGetPro->szCall_Local; if ( pGetPro->bGetCorpPro) { m_strKH_Name = pGetPro->szKH_Name; m_strKH_LTD = pGetPro->szKH_LTD; m_strKH_Job = pGetPro->szKH_Job; m_strKH_Mobile = pGetPro->szKH_Mobile; m_strKH_Tel = pGetPro->szKH_Tel; m_strKH_Local = pGetPro->szKH_Local; m_bCallModify = true; m_bCallSendSms = true; m_bAddressSave = false; m_bAddressModify = false; m_bAddressYModify = false; m_bSelGroup = false; EnableCtrl(); } ReSetTitle(); UpdateData(false); m_CallType.RemoveAll(); for ( long i=0; i<pGetPro->lCallTypeCount;i++ ) { ANS_UBox_CallType callType = pCallType[i]; m_CallType.Add(callType); } m_wndList.DeleteAllItems(); for ( i=0 ; i< pGetPro->lCallLogCount ; i++ ) { //m_wndList.SetHeadings(_T("µç»°ºÅÂë,90;·½Ïò,50; ʱ ¼ä,120;ͨ»°Ê±³¤,60; ÐÕÃû,80; µ¥Î»Ãû³Æ,120; ±¸×¢,120;")); m_wndList.InsertItem(i,pCallLog[i].szCallNumber,CFUBoxLog::GetCallLogIconIndex(&pCallLog[i])); long lTemp=1; str.Format(_T("%04d.%02d.%02d %02d:%02d") , pCallLog[i].tCallTime.wYear,pCallLog[i].tCallTime.wMonth,pCallLog[i].tCallTime.wDay,pCallLog[i].tCallTime.wHour,pCallLog[i].tCallTime.wMinute); m_wndList.SetItemText(i,lTemp++,str); //ͨ»°Ê±¼ä COleDateTimeSpan span(0,0,0,pCallLog[i].lCallSC); str.Format(_T("%02d:%02d:%02d"),span.GetHours(),span.GetMinutes(),span.GetSeconds()); m_wndList.SetItemText(i,lTemp++,str); //ʱ³¤ m_wndList.SetItemText(i,lTemp++,pCallLog[i].szUserName); //½ÓÌýÈË m_wndList.SetItemText(i,lTemp++,pCallLog[i].szKHName); //ÐÕÃû m_wndList.SetItemText(i,lTemp++,pCallLog[i].szKHLTD); //µ¥Î» m_wndList.SetItemText(i,lTemp++,pCallLog[i].szCallBZ); //±¸×¢ } return true; } if (pHead->lFuncType == SMSFUNC_UBOX_UPLOAD) { ANS_UBox_UpLoad * pUpload = (ANS_UBox_UpLoad *)pFrame; if ( pUpload->req.lTickCount != m_lTickCount ) //²»ÊÇ´Ë´°¿Ú·¢³öµÄ£¬²»´¦Àí¡£ { return true; } if ( pUpload->lUploadStatus == 1 ) { m_lUBoxLogID = pUpload->req.callLog.lUBoxLogID; } Call_Close(); return true; } return false; } catch(...) { } return false; } void DLG_UBoxPop::On_CallType(UINT nID) { UpdateData(true); long lID = nID; long lBegin = UBOXPOP_CALLTYPE_BEGIN; long lIndex = nID-lBegin; m_strCallType = m_CallType.GetAt(lIndex).szType; m_bCallYModify = true; //Ð޸ĹýͨѶÊôÐÔ×ÊÁÏ UpdateData(false); } void DLG_UBoxPop::On_SmsDY_Other() { if ( m_pMainFrame->m_pFuncView->On_User_List_Add() ) //н¨Áбí { //Ìí¼ÓÄÚÈÝ m_pMainFrame->m_pFuncView->m_DLGSend.List_SetMsg( _T("") ); //Ìí¼ÓºÅÂë long lCount=1; //·ÖÅäÊý¾Ý long lSize = sizeof(Send_User)*lCount; BYTE *pS = new BYTE[lSize]; memset( pS , 0 , lSize ); Send_User * pUser = (Send_User * )pS; _tcscpy(pUser->szName,this->m_strKH_Name); _tcscpy(pUser->szMobile,this->m_strNumber); m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS); delete pS; } } void DLG_UBoxPop::On_SmsDY_Manager() { DLG_SmsDY dlg(this); dlg.SetParam( &m_AdoRS ); dlg.m_bDblclkSelect = false; //Ë«»÷²»ÓÃÑ¡Ôñ dlg.DoModal(); } void DLG_UBoxPop::On_SmsDY(UINT nID) { long lID = nID; long lBegin = UBOXPOP_SMSDY_BEGIN; long lIndex = nID-lBegin; if ( lIndex<m_SmsDY.GetCount() ) { CString strSmsDY = m_SmsDY.GetAt(lIndex); if ( strSmsDY.GetLength()>0 && m_strNumber.GetLength()>0 ) { m_pMainFrame->SendSms(m_strNumber,strSmsDY); } } } LONG DLG_UBoxPop::UBox_Event( WPARAM wParam , LPARAM lParam ) { long lCmd = (long)wParam; CString str; if ( lCmd == UBOX_EVENT_HOOK_UP || lCmd == UBOX_EVENT_HOOK_UP2) //¹Ò»ú { if (lCmd== UBOX_EVENT_HOOK_UP2 ) //ÖØ¸´Í¨»°µÄ£¬¹Ø±Õǰһ¸öͨ»° { CDialogEx::OnCancel(); } Call_End(); return true; } if ( lCmd == UBOX_EVENT_HOOK_OFF ) //Õª»ú { if ( m_lCallWay ==0 ) //ºôÈë,ºôÈëʱժ»úΪ¿ªÊ¼½ÓÌý { Call_Begin(); //ºô½Ð¿ªÊ¼ } if ( m_lCallWay == 1 ) //ºô³ö,ºô³öÊÇÕª»úºó²ÅÄܲ¦ºÅµÄ£¬Èç¹ûÔÙ´ÎÕª»ú£¬¿Ï¶¨ÊǽáÊøÍ¨»°ÁË { Call_End(); //ºô½Ð½áÊø } return true; } if ( lCmd == UBOX_EVENT_WJ ) //δ½Ó { if ( m_lCallWay ==0 ) //ºôÈë,ºôÈëʱ³öÏÖδ½ÓΪ½Óºô½áÊø£¬ºô½Ðʱ¼äΪ0 { Call_End(); //ºô½Ð½áÊø } if ( m_lCallWay == 1 ) //ºô³ö,ºô³öÊÇÕª»úºó²ÅÄܲ¦ºÅµÄ£¬Èç¹ûÔÙ´ÎÕª»ú£¬¿Ï¶¨ÊǽáÊøÍ¨»°ÁË { Call_End(); //ºô½Ð½áÊø } return true; } return 0; } void DLG_UBoxPop::Call_End(void) { #ifdef SUPPER_UBOX KillTimer(2); //½áÊøÓÃÓÚÏÔʾʱ¼äµÄTimer KillTimer(7); //½áÊøÓÃÓÚ×Ô¶¯½ÓÌýµÄTimer //if ( m_bCallEnd ) //´Ëºô½ÐÊÇÒѽáÊøµÄ£¬²»ÓÃÔÙ´¦Àí // return; m_bCallEnd = true; //¼ÆËãͨ»°Ê±³¤ if ( m_dwCallJT>0 && m_lCallSC<=0 ) { DWORD dwTime = ::GetTickCount()-m_dwCallJT; m_lCallSC = dwTime/1000; } //ֹͣ¼Òô if ( m_bRecord ) { m_bRecordEnd = true; m_pMainFrame->m_ubox_stop_record(m_pMainFrame->m_ubox_endHandle); } if ( this->m_lUBoxLogID <=0 ) { //Ϊ²¦ºÅ½çÃæÔö¼Ó²¦ºÅÈÕÖ¾ this->m_pMainFrame->m_DlgUBoxDial.AddCallLog(m_strNumber,m_lCallWay,m_lCallStatus); //½«Êý¾ÝÉÏ´«µ½·þÎñÆ÷ Call_Upload(); } #endif } void DLG_UBoxPop::Call_Begin(void) { #ifdef SUPPER_UBOX KillTimer(7); //½áÊøÓÃÓÚ×Ô¶¯½ÓÌýµÄTimer if ( m_bCallBegin ) //´Ëºô½ÐÊÇÒÑ¿ªÊ¼µÄ£¬²»Óô¦Àí return ; if ( m_bCallEnd ) //´Ëºô½ÐÊÇÒѽáÊøµÄ£¬²»Óô¦Àí return ; m_bCallBegin = true; m_dwCallJT = GetTickCount(); m_lCallStatus =1 ;//ͨ»°×´Ì¬±ä»¯ÒÑ½Ó m_S_CallStatus.SetWindowText(_T("00:00")); SetTimer(2 , 1000 , NULL ); if ( !m_bRecord && m_pMainFrame->m_Setup.UBox_bAutoRecord ) //δ¿ªÊ¼Â¼Òô£¬½øÐмÒô²Ù×÷ { //ȡ¼ÒôÎļþÃû m_bRecordEnd = false; //δ¼ÒôÍê³É TCHAR szPath[512]={0}; m_pMainFrame->GetCurrentPath(szPath); _tcscat(szPath , _T("Record") ); ::CreateDirectory(szPath , NULL ); //ÓÐÀíûÀí£¬ÏÈ´´½¨Îļþ¼Ð SYSTEMTIME t;::GetLocalTime(&t); m_strRecordName.Format( _T("%s\\%04d%02d%02d%02d%02d%02d%d.mp3"),szPath,t.wYear,t.wMonth,t.wDay,t.wHour,t.wMinute,t.wSecond,t.wMilliseconds); m_pMainFrame->m_ubox_stop_record(m_pMainFrame->m_ubox_endHandle); //CODER_ALAW //CODER_MP3 #ifdef _UNICODE int iRet = m_pMainFrame->m_ubox_record_file(m_pMainFrame->m_ubox_endHandle,CW2A(m_strRecordName),CODER_ALAW); #else int iRet = m_pMainFrame->m_ubox_record_file(m_pMainFrame->m_ubox_endHandle,m_strRecordName,CODER_MP3); #endif if ( iRet ==0 ) { m_bRecord = true; } } #endif } void DLG_UBoxPop::SetCallCount(long lCount) { this->m_lCallingCount = lCount; } void DLG_UBoxPop::SetCallWay(long lCallWay) { m_lCallWay = lCallWay; } void DLG_UBoxPop::Call_Upload(void) { UpdateData(true); REQ_UBox_UpLoad * pUpload = new REQ_UBox_UpLoad; memset(pUpload , 0 , sizeof(REQ_UBox_UpLoad)); pUpload->callLog.lUBoxLogID = m_lUBoxLogID; pUpload->lCorpID = m_pMainFrame->m_lCorpID; pUpload->lUserID = m_pMainFrame->m_lUserID; pUpload->lTickCount = m_lTickCount; pUpload->callLog.lCorpID = pUpload->lCorpID; pUpload->callLog.lUserID = pUpload->lUserID; _tcscpy(pUpload->callLog.szUserName , m_pMainFrame->m_pCurUser->szUser); pUpload->callLog.lCallStatus = m_lCallStatus; pUpload->callLog.lCallWay = m_lCallWay; pUpload->callLog.tCallTime = m_tCallTime; _tcscpy(pUpload->callLog.szCallLocal ,this->m_strCall_NumberLocal); _tcscpy(pUpload->callLog.szCallNumber ,m_strNumber); pUpload->callLog.lCallSC = m_lCallSC; if ( m_bSaveCallPro ) { _tcscpy(pUpload->callLog.szCallType ,m_strCallType); _tcscpy(pUpload->callLog.szCallBZ ,m_strCall_BZ); } pUpload->callLog.lKHAddressType = m_lAddressType; pUpload->callLog.lKHUserID = m_lUserID; _tcscpy(pUpload->callLog.szKHName ,m_strKH_Name); _tcscpy(pUpload->callLog.szKHLTD ,m_strKH_LTD); m_pMainFrame->SendFrame(SMSFUNC_UBOX_UPLOAD,(BYTE*)pUpload,sizeof(REQ_UBox_UpLoad)); SetTimer(8 , 30000 , NULL ); //30Ãëºó³¬Ê±¼ì²â } void DLG_UBoxPop::OnBnClickedOk() { m_bSaveCallPro = true; //ÐèÒª±£´æÍ¨»°ÊôÐÔ UpdateData(true); if ( m_bAddressYModify ) //ÒÑÐ޸ĹýͨѶ¼ { CString str; if ( m_bAddressModify && m_lAddressType==1 && m_lUserID>0 ) //˽ÈËͨѶ¼µÄÔÊÐíÖ±½ÓÐÞ¸Ä { str.Format(_T("Update paddress set Name='%s',Ltd='%s',Job='%s',Mobile='%s',Tel='%s',BZ='%s' where UserID=%d") , SqlStr(m_strKH_Name),SqlStr(m_strKH_LTD),SqlStr(m_strKH_Job),SqlStr(m_strKH_Mobile),SqlStr(m_strKH_Tel),SqlStr(m_strKH_BZ),m_lUserID); m_AdoRS.Open(str); m_AdoRS.Close(); } if ( m_bAddressModify && m_lAddressType==1 && m_lUserID<=0 ) //˽ÈËͨѶ¼µÄÔÊÐíÖ±½ÓÐÞ¸Ä { //Ìí¼Ó˽ÈËͨѶ¼ CString strGroupID = m_strGroupID; str.Format(_T("insert into paddress (GroupID,UserType,Name,Ltd,Job,Mobile,Tel,BZ) values ('%s','1','%s','%s','%s','%s','%s','%s')") , strGroupID,SqlStr(m_strKH_Name),SqlStr(m_strKH_LTD),SqlStr(m_strKH_Job),SqlStr(m_strKH_Mobile),SqlStr(m_strKH_Tel),SqlStr(m_strKH_BZ),m_lUserID); m_AdoRS.Open(str); str.Format(_T("select top 1 * from paddress order by UserID desc")); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect(_T("UserID") , m_lUserID); } m_AdoRS.Close(); } } Call_Upload(); CDialogEx::OnOK(); } void DLG_UBoxPop::OnBnClickedCancel() { if ( this->m_bAddressYModify || this->m_bCallYModify ) { int iRet = MessageBox(_T("ͨѶ¼»òͨ»°ÊôÐÔÒÑ×ö¹ýÐ޸ģ¬ÐèÒª±£´æÂð£¿") , _T("Ìáʾ") , MB_ICONQUESTION|MB_YESNO); if ( iRet == IDYES ) { OnBnClickedOk(); return ; } } m_bSaveCallPro = false; //²»ÐèÒª±£´æÍ¨»°ÊôÐÔ CDialogEx::OnCancel(); Call_Close(); } void DLG_UBoxPop::Call_Close(void) { if ( m_bRecordEnd && m_lUBoxLogID) //¼Òô½áÊø { CString strFileName; //¸ÄÃû TCHAR szPath[512]={0}; m_pMainFrame->GetCurrentPath(szPath); _tcscat(szPath , _T("Record") ); ::CreateDirectory(szPath , NULL ); //ÓÐÀíûÀí£¬ÏÈ´´½¨Îļþ¼Ð strFileName.Format( _T("%s\\%d.mp3"),szPath,m_lUBoxLogID); //½øÐиÄÃû²Ù×÷ if ( strFileName!=m_strRecordName ) { MoveFile(m_strRecordName,strFileName ); m_strRecordName = strFileName; if ( m_pMainFrame->m_Setup.UBox_lReocrdDel>0 && this->m_lCallSC < m_pMainFrame->m_Setup.UBox_lReocrdDel ) //³¤¶È²»¹»£¬É¾³ý { ::DeleteFile(m_strRecordName); } else { m_pMainFrame->UBox_AddUploadRecordFile(m_lUBoxLogID,m_strRecordName); } } } if ( m_bCallEnd && !IsWindowVisible() ) { //ͨ»°½áÊø²¢ÇÒ´°¿Ú¹Ø±Õ£¬¿ÉÒÔ½áÊø±¾´°¿ÚÁË m_pMainFrame->uboxPop_Del(this); OnCancel(); } } void DLG_UBoxPop::OnCancel() { // TODO: ÔÚ´ËÌí¼ÓרÓôúÂëºÍ/»òµ÷ÓûùÀà //CDialogEx::OnCancel(); DestroyWindow(); } void DLG_UBoxPop::PostNcDestroy() { CDialogEx::PostNcDestroy(); delete this; } void DLG_UBoxPop::SetCallBeginTime(long lBeginTime) { m_lBeginTime = lBeginTime; } void DLG_UBoxPop::OnBnClickedUboxpopCallResms() { m_SmsDY.RemoveAll(); CMenu menu; menu.CreatePopupMenu(); long lMaxPopMenu=32; CMenu popMenu[32]; CString str; str.Format(_T("Select * from smsdytype")); m_AdoRS.Open(str); long lIndex=0; long lItemCount=0; while(!m_AdoRS.IsEOF() && lIndex<lMaxPopMenu) { CString strType; long lDYID; m_AdoRS.GetCollect(_T("Title") , strType); m_AdoRS.GetCollect(_T("DYID") , lDYID); popMenu[lIndex].CreatePopupMenu(); menu.AppendMenu( MF_STRING|MF_POPUP,(UINT)popMenu[lIndex].GetSafeHmenu(), strType ); str.Format(_T("Select * from smsdy where Type='%d'"),lDYID); m_AdoRS2.Open(str); while(!m_AdoRS2.IsEOF()) { CString strMsg; m_AdoRS2.GetCollect(_T("Msg") , strMsg); if ( strMsg.GetLength()>0 ) { m_SmsDY.Add(strMsg); popMenu[lIndex].AppendMenu( MF_STRING , UBOXPOP_SMSDY_BEGIN + lItemCount , strMsg ); lItemCount++; } m_AdoRS2.MoveNext(); } m_AdoRS.MoveNext(); lIndex ++; } menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu( MF_STRING , UBOXPOP_SMSDY_OTHER , _T("ÆäËü¶ÌÐÅÄÚÈÝ") ); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu( MF_STRING , UBOXPOP_SMSDY_MANAGER , _T("³£ÓöÌÓï¹ÜÀí") ); CRect rect; GetDlgItem(IDD_UBOXPOP_CALL_RESMS)->GetWindowRect(&rect); //this->ClientToScreen(&rect); //ÏÔʾ²Ëµ¥ menu.TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON | TPM_RIGHTBUTTON,rect.right,rect.bottom, this, NULL); menu.DestroyMenu(); }