// FPAddress.cpp : implementation file // #include "stdafx.h" #include "corpsms.h" #include "FPAddress.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CFPAddress dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_User_ModifyP.h" #include "DLG_Group_Modify.h" #include "FuncView.h" #include "DLG_User_Inport2.h" #include "DLG_AddWarning.h" #include "DLG_User_Log.h" #include "DLG_User_InportP2.h" #include "..\public\StringSort\StringSort.h" CFPAddress::CFPAddress(CWnd* pParent /*=NULL*/) : CDialog(CFPAddress::IDD, pParent) { //{{AFX_DATA_INIT(CFPAddress) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; m_lUserID = 0; memset(m_szGroupID,0,sizeof(m_szGroupID)); memset(m_szLocal,0,sizeof(m_szLocal)); m_bFind2 = false; m_Copy_UserID = 0; memset(m_Copy_GroupID,0,sizeof(m_Copy_GroupID)); m_Copy_Count = 0; m_Copy_Type = 0; m_Copy_Data = NULL; m_bShowAllRecord = false; m_FindPro.m_bName = TRUE; m_FindPro.m_bNickName = TRUE; m_FindPro.m_bJob = TRUE; m_FindPro.m_bTel = TRUE; m_FindPro.m_bMobile = TRUE; m_FindPro.m_bEmail = TRUE; m_FindPro.m_bSex = TRUE; m_FindPro.m_bBZ = TRUE; m_FindPro.m_bLTD = TRUE; m_lCurUserID = 0; m_lPlace_Count = 0; m_lPlace_Index = 0; } void CFPAddress::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFPAddress) DDX_Control(pDX, IDC_PADDRESS_LIST, m_wndList); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFPAddress, CDialog) //{{AFX_MSG_MAP(CFPAddress) ON_WM_SIZE() ON_WM_TIMER() ON_NOTIFY(NM_DBLCLK, IDC_PADDRESS_LIST, OnDblclkPaddressList) ON_NOTIFY(NM_RCLICK, IDC_PADDRESS_LIST, OnRclickPaddressList) ON_NOTIFY(LVN_KEYDOWN, IDC_PADDRESS_LIST, OnKeydownPaddressList) ON_WM_DESTROY() //}}AFX_MSG_MAP ON_MESSAGE( LIST_DROP_BEGIN , On_List_DropBegin ) ON_COMMAND( MENU_PADDRESS_ADD , On_User_Add) ON_COMMAND( MENU_PADDRESS_ADDGROUP , On_User_AddGroup) ON_COMMAND( MENU_PADDRESS_MODIFY , On_User_Modify) ON_COMMAND( MENU_PADDRESS_DEL , On_User_Del) ON_COMMAND( MENU_PADDRESS_FIND , On_User_Find) ON_COMMAND( MENU_PADDRESS_ADDTOLIST , On_User_AddToList) ON_COMMAND( MENU_PADDRESS_ADDTOLIST_FAX , On_User_AddToList_Fax) ON_COMMAND( MENU_PADDRESS_ADDTOLIST_MMS , On_User_AddToList_Mms) ON_COMMAND( MENU_PADDRESS_INPORT , On_User_Inport) ON_COMMAND( MENU_PADDRESS_EXPORT , On_User_Export) ON_COMMAND( MENU_PADDRESS_REFRESH, On_User_Refresh) ON_COMMAND( MENU_PADDRESS_LOG , On_User_Log) ON_COMMAND( MENU_PADDRESS_COPY , On_User_Copy) ON_COMMAND( MENU_PADDRESS_CUT , On_User_Cut) ON_COMMAND( MENU_PADDRESS_PASTE , On_User_Paste) ON_COMMAND( MENU_PADDRESS_SHOWALLRECORD , On_User_Refresh_All) ON_COMMAND( MENU_GADDRESS_UBOX_MOBILE , On_User_UBox_Mobile) ON_COMMAND( MENU_GADDRESS_UBOX_TEL , On_User_UBox_Tel) ON_COMMAND( MENU_GADDRESS_UBOX_LOG , On_User_UBox_Log) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFPAddress message handlers BOOL CFPAddress::ReHide() { ShowWindow( SW_HIDE ); return true; } BOOL CFPAddress::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CFPAddress::RefreshInfo() { return true; } long CFPAddress::ShowUser(long lUserID) { m_bFind2 = false; m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 m_wndList.DeleteAllItems(); TCHAR szSelect[128]={0}; CString str,str2; m_lUserID = lUserID; memset( m_szGroupID , 0 , sizeof(m_szGroupID) ); if ( lUserID != -1 ) //等于-1是代表根 { _stprintf( szSelect , _T("select GroupID from paddress where UserID=%d AND UserType='0' ") , lUserID ); //查询用户ID,并且只能为组 BOOL b = m_AdoRS.Open( szSelect ); long lCount = m_AdoRS.GetRecordCount(); if ( b && lCount ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("GroupID") , m_szGroupID ); } else { m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 return 0; } } //DWORD dwTime = GetTickCount(); CString strTop; if ( !m_bShowAllRecord && m_pMainFrame->m_Setup.lTopRecord>0 ) { strTop.Format(_T(" top %d "),m_pMainFrame->m_Setup.lTopRecord ); } GetLocal( m_szLocal , m_szGroupID ); //取用户路径 if ( lUserID == -1 ) //如果是根,用户组为NULL _stprintf( szSelect , _T("select %s * from paddress where GroupID is null or len(GroupID)=0 and UserType='1' order by UserID "),strTop ); //查找此组下的用户 else _stprintf( szSelect , _T("Select %s * from paddress where GroupID='%s' AND UserType='1' order by UserID ") , strTop , m_szGroupID ); //查找此组下的用户 BOOL b = m_AdoRS.Open( szSelect ); long lCount = m_AdoRS.GetRecordCount(); if ( !m_bShowAllRecord && m_pMainFrame->m_Setup.lTopRecord>0 && lCount>m_pMainFrame->m_Setup.lTopRecord ) { lCount = m_pMainFrame->m_Setup.lTopRecord; } m_bShowAllRecord = false; //显示完一次后,不用再全部显示 if ( b && lCount>0 ) { //CAdopAddress adoAddr; //m_AdoRS.RecordBinding( adoAddr ); COleDateTime t; m_AdoRS.MoveFirst(); for ( int i = 0 ; i< lCount ; i++ ) { PAddress user={0}; m_AdoRS.GetCollect( _T("UserID") , user.lUserID); m_AdoRS.GetCollect( _T("UserType") , user.szUserType); m_AdoRS.GetCollect( _T("GroupID") , user.szGroupID); m_AdoRS.GetCollect( _T("Name") , user.szName); m_AdoRS.GetCollect( _T("NickName") , user.szNickName); m_AdoRS.GetCollect( _T("Sex") , user.szSex); m_AdoRS.GetCollect( _T("Birthday"), t); t.GetAsSystemTime(user.tBirthday); m_AdoRS.GetCollect( _T("Ltd") , user.szLtd); m_AdoRS.GetCollect( _T("Job") , user.szJob); m_AdoRS.GetCollect( _T("Tel") , user.szTel); m_AdoRS.GetCollect( _T("Fax") , user.szFax); m_AdoRS.GetCollect( _T("Email") , user.szEmail); m_AdoRS.GetCollect( _T("Mobile") , user.szMobile); m_AdoRS.GetCollect( _T("QQ") , user.szQQ); m_AdoRS.GetCollect( _T("BZ") , user.szBZ); #ifdef MOBSET_VIPINT m_AdoRS.GetCollect( _T("VipInt") , user.lVipInt); #endif #ifdef GZTJJ_VER m_AdoRS.GetCollect(_T("Place"), user.szPlace); #endif /* user.lUserID = adoAddr.m_UserID; _tcscpy(user.szUserType , adoAddr.m_UserType ); _tcscpy(user.szGroupID , adoAddr.m_GroupID ); _tcscpy(user.szName , adoAddr.m_Name ); _tcscpy(user.szNickName , adoAddr.m_NickName ); _tcscpy(user.szSex , adoAddr.m_Sex ); adoAddr.m_Birthday.GetAsSystemTime(user.tBirthday); _tcscpy(user.szLtd , adoAddr.m_Ltd ); _tcscpy(user.szJob , adoAddr.m_Job ); _tcscpy(user.szTel , adoAddr.m_Tel ); _tcscpy(user.szFax , adoAddr.m_Fax ); _tcscpy(user.szEmail , adoAddr.m_Email ); _tcscpy(user.szMobile , adoAddr.m_Mobile ); _tcscpy(user.szQQ , adoAddr.m_QQ ); _tcscpy(user.szBZ , adoAddr.m_BZ ); memset(&adoAddr,0,sizeof(adoAddr)); */ #ifdef SHMZ_VER if ( this->m_pMainFrame->GetUserPurview_HideNum() ) { user.szMobile[4]='*'; user.szMobile[5]='*'; user.szMobile[6]='*'; user.szMobile[7]='*'; //user.szMobile[8]='*'; } #endif COleDateTime t(user.tBirthday); str = _T(""); if ( t.GetStatus()==COleDateTime::valid) { str.Format( _T("%04d.%02d.%02d"),t.GetYear(),t.GetMonth(),t.GetDay()); } #ifdef SHOWBZ_VER m_wndList.InsertItemAndCol(i,_itot(i+1,szSelect,10),user.szName,user.szNickName,user.szMobile,user.szTel,str,user.szLtd,user.szJob,user.szEmail,user.szBZ); #else #ifdef MOBSET_OEM_YTLE m_wndList.InsertItemAndCol(i,_itot(i+1,szSelect,10),user.szName,user.szNickName,user.szMobile,user.szTel,user.szFax,user.szLtd,user.szJob,user.szEmail,str,user.szBZ); #else #ifdef MOBSET_VIPINT str2.Format(_T("%d") , user.lVipInt); m_wndList.InsertItemAndCol(i,_itot(i+1,szSelect,10),user.szName,user.szNickName,user.szMobile,user.szTel,str,user.szLtd,user.szJob,user.szEmail,str2); #else #ifdef GZTJJ_VER m_wndList.InsertItemAndCol(i, _itot(i + 1, szSelect, 10), user.szName, user.szNickName, user.szMobile, user.szTel, str, user.szLtd, user.szJob, user.szEmail, user.szPlace); #else m_wndList.InsertItemAndCol(i,_itot(i+1,szSelect,10),user.szName,user.szNickName,user.szMobile,user.szTel,str,user.szLtd,user.szJob,user.szEmail); #endif #endif #endif #endif long lIcon = 2; if ( _tcscmp(user.szSex,_T("男"))==0 ) lIcon = 0; if ( _tcscmp(user.szSex,_T("女"))==0 ) lIcon = 1; m_wndList.SetIconIndex(i,lIcon); m_wndList.SetItemData(i,user.lUserID); m_AdoRS.MoveNext(); /* //_T("序号,50; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90;职务,80;Email,80;") m_wndList.InsertItem( i , _itot(i+1,szSelect,10) ); //序号 m_wndList.SetItemData( i , user.lUserID ); m_wndList.SetItemText(i,1, user.szName ); m_wndList.SetItemText(i,2, user.szNickName ); m_wndList.SetItemText(i,3, user.szMobile ); m_wndList.SetItemText(i,4, user.szTel ); COleDateTime t(user.tBirthday); if ( t.GetStatus()== COleDateTime::valid ) { str.Format( "%04d.%02d.%02d",t.GetYear(),t.GetMonth(),t.GetDay()); m_wndList.SetItemText(i,5, str ); } else { m_wndList.SetItemText(i,5, "" ); } m_wndList.SetItemText(i,6, user.szLtd ); m_wndList.SetItemText(i,7, user.szJob ); m_wndList.SetItemText(i,8, user.szEmail ); */ } // return lCount; } //dwTime = ::GetTickCount() - dwTime; //CString strTemp; //strTemp.Format( "需时:%d" , dwTime ); //MessageBox(strTemp); m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 if ( strTop.GetLength()>0 && lCount>=m_pMainFrame->m_Setup.lTopRecord) //显示显示“显示所有记录”的选项 { CMenu menu; menu.CreatePopupMenu(); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_PADDRESS_SHOWALLRECORD, _T(" 显示所有记录 ") ); menu.AppendMenu(MF_SEPARATOR ); CRect rect; GetWindowRect(&rect); //ClientToScreen(&rect); //显示菜单 POINT pt ; pt.x = rect.Width()/2; pt.y = rect.Height()/3; ClientToScreen(&pt); //menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.TrackPopupMenu(TPM_CENTERALIGN,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } return 0; } long CFPAddress::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void CFPAddress::GetLocal(TCHAR *pLocal, TCHAR *pGroupID) { long lLen = _tcslen( pGroupID ); TCHAR szGroup[16]={0}; TCHAR szTemp[64]={0}; TCHAR szSelect[256]={0}; #ifdef MOBSET_CARD_VER _stprintf( pLocal , _T("通讯录") ); #else _stprintf( pLocal , _T("私人通讯录") ); #endif m_strGroupName = pLocal; for ( int i = 1 ; i<= lLen ; i++ ) { _tcsncpy( szGroup , pGroupID , i ); _stprintf( szSelect , _T("select Name from paddress where GroupID='%s' and UserType='0'") , szGroup ); BOOL b = m_AdoRS.Open( szSelect ); if (b && !m_AdoRS.IsEOF()) { m_AdoRS.GetCollect( _T("Name") , szTemp ); _tcscat( pLocal , _T("\\") ); _tcscat( pLocal , szTemp ); m_strGroupName = szTemp; //记录组名 } } } BOOL CFPAddress::OnInitDialog() { CDialog::OnInitDialog(); //取得共用参数 //CMainFrame * pFrame = static_cast ((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_AdoRS_Place.SetAdoConnection(&m_pMainFrame->m_adoConnection); SetTimer( 1 , 200 , NULL ); //为了取得m_pFuncView; //初始化List m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_ADDRESSM) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_ADDRESSW) ); m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_ADDRESSN) ); //分不清性别的,不给图标 m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) ); m_wndList.SubClassWindow2(); #ifdef SHOWBZ_VER m_wndList.SetHeadings(_T("序号,50; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90; 公 司,120;职务,80;Email,80;备注,120;")); #else #ifdef MOBSET_OEM_YTLE m_wndList.SetHeadings(_T("序号,50; 姓名,80; 行业,80;手机,100;行业通,80;电话,80; 公 司,120;产品,80;Email,80; 生日,90;备注,120;")); #else #ifdef MOBSET_VIPINT m_wndList.SetHeadings(_T("序号,50; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90; 公 司,120;职务,80;Email,80;积分,60;")); #else m_wndList.SetHeadings(_T("序号,50; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90; 公 司,120;职务,80;Email,80;")); #endif #endif #endif #ifdef GZTJJ_VER long lCol = m_wndList.GetColumnCount(); m_wndList.InsertColumn(lCol, _T(" 归属地"), 0, 150); #endif m_wndList.SetGridLines(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 CFPAddress::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if ( m_bInit ) { m_wndList.MoveWindow( 0 , 0 , cx,cy); } } void CFPAddress::OnTimer(UINT_PTR nIDEvent) { CDialog::OnTimer(nIDEvent); if ( nIDEvent == 1 ) { KillTimer( 1 ); m_pFuncView = m_pMainFrame->m_pFuncView; return ; } } void CFPAddress::OnDblclkPaddressList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; On_User_Modify(); } void CFPAddress::OnRclickPaddressList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; ShowRMenu(); } LRESULT CFPAddress::On_List_DropBegin( WPARAM wParam , LPARAM lParam ) { //看有没有发送私人地址本的权限 if ( !m_pMainFrame->GetUserPurview( PURVIEW_SENDP , false ) ) return false; long lCount = m_wndList.GetSelectedCount(); if ( lCount <= 0 ) return false; //分配数据 long lSize = sizeof(Send_User)*lCount+sizeof(long); HGLOBAL hData = GlobalAlloc(GHND|GMEM_SHARE, lSize ); BYTE *pS = (BYTE *)GlobalLock( hData ); memset( pS , 0 , lSize ); long * plCount = (long *)pS; Send_User * pUser = (Send_User * )(pS+sizeof(long)); *plCount = lCount; //数据总量 TCHAR szSelect[128]={0}; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); while ( pos ) { long lItem = m_wndList.GetNextSelectedItem( pos ); long lUserID = m_wndList.GetItemData( lItem ); if ( lUserID > 0 ) { _stprintf( szSelect , _T("select * from paddress where UserID=%d"), lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Name") , pUser->szName); m_AdoRS.GetCollect( _T("NickName") , pUser->szNickName); m_AdoRS.GetCollect( _T("Mobile") , pUser->szMobile); m_AdoRS.GetCollect( _T("BZ") , pUser->szBZ); } } pUser ++; } GlobalUnlock( hData ); //设置数据 COleDataSource data ; UINT iCF = ::RegisterClipboardFormat( _T("CORPSMS_USER") ); data.CacheGlobalData( iCF , hData ); // Begin Drag operation CUserDropTarget::m_shWndTreeCtrl = NULL; CUserDropTarget::m_lAddressType = -1; DROPEFFECT dropeffect = data.DoDragDrop(); GlobalFree( hData ); return true; } void CFPAddress::On_User_Add() { if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; PAddress Address={0}; _tcscpy(Address.szGroupID,m_szGroupID); Address.szUserType[0]='1'; //用户类型 DLG_User_ModifyP dlg(this); dlg.SetParam( Address,m_szLocal,true,0); dlg.DoModal(); } void CFPAddress::On_User_AddGroup() { if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; //最多仅能建12层的组 if ( _tcslen(m_szGroupID) >12 ) { MessageBox( _T("对不起,组的数量已满,此目录下已不能新建用户组!") , _T("错误") , MB_ICONWARNING ); return ; } ANS_GAddress_Group_AddData GAdd={0}; //查找空闲的组ID long lGroupLen = _tcslen( m_szGroupID ); TCHAR szSelect[512]={0}; //_stprintf( szSelect , _T("select GroupID from paddress where GroupID like '%s_' AND UserType='0' group by GroupID order by GroupID") , m_szGroupID); //查找当前组下的第一层 _stprintf( szSelect , _T("select GroupID from paddress where GroupID like '%s_' AND UserType='0'") , m_szGroupID); //查找当前组下的第一层 BOOL b = m_AdoRS.Open( szSelect ); CStringSort sort; CString strTemp; while(!m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect( _T("GroupID") , strTemp ); sort.Add(strTemp); m_AdoRS.MoveNext(); } long lCount = sort.GetCount(); long lAllCount=GROUPID_END-GROUPID_BEGIN; if ( lCount >= GROUPID_END-GROUPID_BEGIN ) { MessageBox( _T("对不起,组的数量已满,此目录下已不能新建用户组!") , _T("错误") , MB_ICONWARNING ); return ; } TCHAR szGroupID[16]={0}; _tcscpy( szGroupID , m_szGroupID ); //记住所有的组ID TCHAR szAllID[200][24]={0}; for ( int i = 0 ; i< lCount ;i++ ) { _tcscpy(szAllID[i],sort.GetAt(i)); } //查找组ID for ( i=0 ; i< lCount ; i++ ) { BOOL bFound = false; for ( int j= 0 ; jm_pMainFrame->m_Setup.bSQLUse ) { CString str; str.Format( _T("select * from paddress where UserType='0' and GroupID='%s' and Name='%s'"),GAdd.szGroupID,GAdd.szGroupName ); if ( m_AdoRS.Open(str) && m_AdoRS.GetRecordCount()>0 ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect(_T("UserID") , GAdd.lUserID ); m_AdoRS.Close(); } } } //添加到树 #ifdef DGZD_VER m_pFuncView->AddPGroup( dlg.m_szDGZDGroupName.GetBuffer(0) , m_lUserID , GAdd.lUserID ); #else m_pFuncView->AddPGroup( GAdd.szGroupName , m_lUserID , GAdd.lUserID ); #endif } } void CFPAddress::On_User_Modify() { #ifdef SHMZ_VER if ( this->m_pMainFrame->GetUserPurview_HideNum() ) { return ; } #endif long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; long lUserID = m_wndList.GetItemData( lItem ); CString str; PAddress Address = GetUserData(lUserID); if (_tcslen(Address.szName)>0) { DLG_User_ModifyP dlg(this); TCHAR szLocal[1024]={0}; GetLocal(szLocal,Address.szGroupID); //取用户所在组位置 dlg.SetParam(Address,szLocal,false,0); if ( dlg.DoModal() == IDOK ) { Address = dlg.GetParam(); long lIcon = 2; if ( _tcscmp(Address.szSex,_T("男"))==0 ) lIcon = 0; if ( _tcscmp(Address.szSex,_T("女"))==0 ) lIcon = 1; m_wndList.SetIconIndex(lItem,lIcon); //设置新的数据 m_wndList.SetItemText(lItem,1, Address.szName ); m_wndList.SetItemText(lItem,2, Address.szNickName ); m_wndList.SetItemText(lItem,3, Address.szMobile ); m_wndList.SetItemText(lItem,4, Address.szTel ); #ifdef MOBSET_OEM_YTLE m_wndList.SetItemText(lItem,5, Address.szFax ); #else COleDateTime t(Address.tBirthday); if ( t.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t.GetYear(),t.GetMonth(),t.GetDay()); m_wndList.SetItemText(lItem,5, str ); } else { m_wndList.SetItemText(lItem,5, _T("") ); } #endif m_wndList.SetItemText(lItem,6, Address.szLtd ); m_wndList.SetItemText(lItem,7, Address.szJob ); m_wndList.SetItemText(lItem,8, Address.szEmail ); #ifdef MOBSET_OEM_YTLE COleDateTime t(Address.tBirthday); if ( t.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t.GetYear(),t.GetMonth(),t.GetDay()); m_wndList.SetItemText(lItem,5, str ); } else { m_wndList.SetItemText(lItem,5, _T("") ); } m_wndList.SetItemText(lItem,10, Address.szBZ ); #endif #ifdef MOBSET_VIPINT str.Format(_T("%d") , Address.lVipInt ); m_wndList.SetItemText(lItem,9, str ); #endif #ifdef GZTJJ_VER m_wndList.SetItemText(lItem, 9, Address.szPlace); #endif //将新的数据写入本地数据库 TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("select * from paddress where UserID=%d ") , Address.lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { m_AdoRS.MoveFirst(); m_AdoRS.PutCollect(_T("GroupID") ,Address.szGroupID); m_AdoRS.PutCollect(_T("Name") ,Address.szName ); m_AdoRS.PutCollect(_T("NickName") ,Address.szNickName ); m_AdoRS.PutCollect(_T("Sex") ,Address.szSex ); m_AdoRS.PutCollect(_T("Birthday") ,Address.tBirthday ); m_AdoRS.PutCollect(_T("Ltd") ,Address.szLtd ); m_AdoRS.PutCollect(_T("Addr") ,Address.szAddress ); m_AdoRS.PutCollect(_T("Job") ,Address.szJob ); m_AdoRS.PutCollect(_T("Tel") ,Address.szTel ); m_AdoRS.PutCollect(_T("Fax") ,Address.szFax ); m_AdoRS.PutCollect(_T("Mobile") ,Address.szMobile ); m_AdoRS.PutCollect(_T("Email") ,Address.szEmail ); m_AdoRS.PutCollect(_T("QQ") ,Address.szQQ ); m_AdoRS.PutCollect(_T("BZ") ,Address.szBZ); #ifdef MOBSET_VIPINT m_AdoRS.PutCollect( _T("VipInt") , Address.lVipInt); #endif #ifdef GZTJJ_VER m_AdoRS.PutCollect(_T("Place"), Address.szPlace); #endif m_AdoRS.Update(); m_AdoRS.Close(); } } } } void CFPAddress::On_User_Del() { long lRet = MessageBox( _T("确实要删除选中的用户吗?"),_T("提问"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2); if ( lRet != IDYES ) return ; long lCount = m_wndList.GetSelectedCount(); long *lDel = new long[lCount+2]; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long i = 0; while(pos) { lDel[i]= m_wndList.GetNextSelectedItem(pos); i ++; } long lUserID = 0; TCHAR szSelect[128]; //倒转删除 m_wndList.ShowWindow( SW_HIDE ); //加快显示的速度 for ( i = lCount ; i>0 ; i-- ) { lUserID = m_wndList.GetItemData( lDel[i-1] ); _stprintf( szSelect , _T("delete from paddress where UserID=%d ") , lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { m_wndList.DeleteItem(lDel[i-1]); //从列表中删除 } } m_wndList.ShowWindow( SW_SHOW ); //加快显示的速度 delete lDel; } void CFPAddress::On_User_Find() { DLG_FindUser dlg(this); dlg.SetParam(m_FindPro); if ( dlg.DoModal()==IDOK ) { m_FindPro = dlg.m_FindPro; On_User_Find2(&dlg); } return ; /* m_wndList.UnSelectAllItems(); DLG_FindUser dlg(this); if ( dlg.DoModal()==IDOK ) { if ( dlg.m_bFindAll ) { On_User_Find2(&dlg); return ; } long lFindItem = -1; BOOL bFind; char szFind[32]={0}; _tcscpy(szFind , dlg.m_strMsg ); long lCount = m_wndList.GetItemCount(); char szMsg[64]; for ( int i =0 ; i< lCount ; i++ ) { bFind = false; if ( dlg.m_bName ) //name { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 1 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bNickName )//nickname { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 2 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bJob ) //job { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 7 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bTel ) //Tel { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 4 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bMobile ) //Mobile { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 3 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bEmail ) //Email { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 8 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( bFind ) { if (lFindItem==-1) lFindItem = i; //记录第一条找到的记录 m_wndList.SelectItem( i ); } } if ( lFindItem != -1 ) //显示第一条找到的 { m_wndList.EnsureVisible( lFindItem , false ); m_wndList.SetFocus(); } else { MessageBox( "对不起,没有找到相应的记录,请重新查询!","信息",MB_ICONINFORMATION); } } */ } void CFPAddress::On_User_AddToList() { On_User_AddToList_Publie(0); } void CFPAddress::On_User_AddToList_Fax() { On_User_AddToList_Publie(1); } void CFPAddress::On_User_AddToList_Mms() { On_User_AddToList_Publie(2); } void CFPAddress::On_User_AddToList_Publie(long lSendType) { if ( !m_pMainFrame->GetUserPurview( PURVIEW_SENDP,true) ) return ; long lCount = m_wndList.GetSelectedCount(); if ( lCount <= 0 ) return ; //分配数据 long lSize = sizeof(Send_User)*lCount; BYTE *pS = new BYTE[lSize]; memset( pS , 0 , lSize ); Send_User * pUser = (Send_User * )pS; TCHAR szSelect[128]={0}; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); while ( pos ) { long lItem = m_wndList.GetNextSelectedItem( pos ); long lUserID = m_wndList.GetItemData( lItem ); if ( lUserID > 0 ) { _stprintf( szSelect , _T("select * from paddress where UserID=%d"), lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { //CAdopAddress adoAddr; //m_AdoRS.RecordBinding( adoAddr ); m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("Name") , pUser->szName); m_AdoRS.GetCollect( _T("NickName") , pUser->szNickName); if ( lSendType==1 )//fax m_AdoRS.GetCollect( _T("Fax") , pUser->szMobile); else m_AdoRS.GetCollect( _T("Mobile") , pUser->szMobile); m_AdoRS.GetCollect( _T("BZ") , pUser->szBZ); /* _tcscpy( pUser->szName , adoAddr.m_Name ); _tcscpy( pUser->szNickName , adoAddr.m_NickName ); _tcscpy( pUser->szMobile , adoAddr.m_Mobile ); _tcscpy( pUser->szBZ , adoAddr.m_BZ ); */ } } pUser ++; } switch(lSendType) { case 0: m_pFuncView->On_User_List_AddUser(lCount,(Send_User*)pS); break; case 1: m_pFuncView->On_User_List_AddUser_Fax(lCount,(Send_User*)pS); break; case 2: m_pFuncView->On_User_List_AddUser_Mms(lCount,(Send_User*)pS); break; } delete pS; } void CFPAddress::On_User_Inport() { if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; Inport_Field Field[] = { {_T("姓名"),0,0,-1}, {_T("昵称"),0,1,-1}, {_T("性别"),0,2,-1}, {_T("生日"),0,3,-1}, {_T("公司"),0,4,-1}, {_T("职务"),0,5,-1}, {_T("地址"),0,6,-1}, {_T("手机号码"),0,7,-1}, {_T("电话号码"),0,8,-1}, {_T("传真号码"),0,9,-1}, {_T("Email"),0,10,-1}, {_T("QQ号码"),0,11,-1}, {_T("备注"),0,12,-1}, }; DLG_User_InportP2 dlg(this); dlg.SetParam(&Field[0],sizeof(Field)/sizeof(Inport_Field),0); if ( dlg.DoModal()==IDOK ) { this->On_User_Refresh(); } return ; /* DLG_User_Inport dlg(this); dlg.SetInport(this,&m_wndList,true,true); if ( dlg.DoModal() == IDOK ) { this->On_User_Refresh(); } dlg.Close(); //关闭链表 */ } void CFPAddress::On_User_Export() { DLG_User_Inport2 dlg(this); dlg.SetInport(&m_AdoRS,m_szGroupID,true,false); dlg.SetOutportName(m_strGroupName); dlg.DoModal(); } void CFPAddress::On_User_Refresh() { ShowUser( m_lUserID ); //刷新 } void CFPAddress::On_User_Refresh_All() { m_bShowAllRecord = true; On_User_Refresh(); } void CFPAddress::On_User_Log() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; //CString strMobile = m_wndList.GetItemText(lItem,3); long lUserID = m_wndList.GetItemData( lItem ); PAddress Address = GetUserData(lUserID); CString strMobile = Address.szMobile; DLG_User_Log dlg(this); #ifdef SHMZ_VER dlg.SetHideNum(m_pMainFrame->GetUserPurview_HideNum()); #endif dlg.SetParam(&m_AdoRS,strMobile); dlg.DoModal(); } void CFPAddress::On_User_Copy() { if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; long lCount = m_wndList.GetSelectedCount(); if ( lCount<=0 ) return ; m_Copy_UserID = m_lUserID; _tcscpy(m_Copy_GroupID,m_szGroupID); m_Copy_Count = lCount; if ( m_Copy_Data ) { delete m_Copy_Data; m_Copy_Data = NULL; } m_Copy_Data = new PAddress[lCount]; memset(m_Copy_Data,0,sizeof(PAddress)*lCount); POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long i = 0; long lItem=0; long lUserID=0; while(pos) { lItem = m_wndList.GetNextSelectedItem(pos); lUserID = m_wndList.GetItemData(lItem); m_Copy_Data[i] = GetUserData(lUserID); i ++; } m_Copy_Count = i; m_Copy_Type = PADDRESS_COPYTYPE_COPY; } void CFPAddress::On_User_Cut() { On_User_Copy(); m_Copy_Type = PADDRESS_COPYTYPE_CUT; } void CFPAddress::On_User_Paste() { //if (m_bFind2 || m_lUserID==m_Copy_UserID || m_Copy_Count<=0) //不符合条件 // return ; if (m_bFind2 || m_Copy_Count<=0 || (m_lUserID==m_Copy_UserID && m_Copy_Type==PADDRESS_COPYTYPE_CUT) ) //不符合条件 return ; CString str; if ( m_Copy_Type == PADDRESS_COPYTYPE_CUT ) //剪切,直接更改组ID即可 { for ( int i=0 ; iGetUserPurview(PURVIEW_PADDRESS,false)) //没有查看权限 return ; CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelected(); if (!m_bFind2) { menu.AppendMenu(MF_STRING , MENU_PADDRESS_ADD, _T(" 添加用户 ") ); menu.AppendMenu(MF_STRING , MENU_PADDRESS_ADDGROUP, _T(" 添加用户组 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_ADD, _T(" 添加用户 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_ADDGROUP, _T(" 添加用户组 ") ); } menu.AppendMenu(MF_SEPARATOR ); BOOL bModify=true; #ifdef SHMZ_VER if ( this->m_pMainFrame->GetUserPurview_HideNum() ) { bModify = false; } #endif //修改 if ( lItem >=0 && bModify) { menu.AppendMenu(MF_STRING , MENU_PADDRESS_MODIFY, _T(" 修 改 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_MODIFY , _T(" 修 改 ") ); } //删除 if ( lItem >=0 ) { menu.AppendMenu(MF_STRING , MENU_PADDRESS_DEL, _T(" 删 除 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_DEL , _T(" 删 除 ") ); } menu.AppendMenu(MF_SEPARATOR ); //发送短信 if ( m_pMainFrame->GetUserPurview(PURVIEW_SENDP,false) && lItem >=0 ) { menu.AppendMenu(MF_STRING , MENU_PADDRESS_ADDTOLIST, _T(" 发送短信 ") ); #ifdef SUPPER_FUNC_FAX menu.AppendMenu(MF_STRING , MENU_PADDRESS_ADDTOLIST_FAX, _T(" 发送传真 ") ); #endif #ifdef SUPPER_FUNC_MMS menu.AppendMenu(MF_STRING , MENU_PADDRESS_ADDTOLIST_MMS, _T(" 发送彩信 ") ); #endif } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_ADDTOLIST , _T(" 发送短信 ") ); #ifdef SUPPER_FUNC_FAX menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_ADDTOLIST_FAX, _T(" 发送传真 ") ); #endif #ifdef SUPPER_FUNC_MMS menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_ADDTOLIST_MMS, _T(" 发送彩信 ") ); #endif } #ifdef SUPPER_UBOX BOOL bUBox = m_pMainFrame->m_Setup.bSDK & SDK_UBOX ? true:false; CMenu popMenuUBox; popMenuUBox.CreatePopupMenu(); menu.AppendMenu( MF_STRING|MF_POPUP,(UINT)popMenuUBox.GetSafeHmenu(), _T(" 拨打电话") ); PAddress address={0}; m_lCurUserID = 0; if ( lItem>=0 ) m_lCurUserID=m_wndList.GetItemData(lItem); if ( m_lCurUserID>0 ) address = this->GetUserData(m_lCurUserID); m_strCurName = address.szName; m_strCurMobile = address.szMobile; m_strCurTel = address.szTel; CString str; str.Format(_T(" 拨打手机:%s") , m_strCurMobile ); if ( bUBox && m_strCurMobile.GetLength()>0 ) { popMenuUBox.AppendMenu(MF_STRING , MENU_GADDRESS_UBOX_MOBILE, str ); } else { popMenuUBox.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS_UBOX_MOBILE, str ); } str.Format(_T(" 拨打电话:%s") , m_strCurTel ); if ( bUBox && m_strCurTel.GetLength()>0 ) { popMenuUBox.AppendMenu(MF_STRING , MENU_GADDRESS_UBOX_TEL, str ); } else { popMenuUBox.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS_UBOX_TEL, str ); } popMenuUBox.AppendMenu(MF_SEPARATOR ); if ( bUBox ) { popMenuUBox.AppendMenu(MF_STRING , MENU_GADDRESS_UBOX_LOG, _T(" 通话日志") ); } else { popMenuUBox.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS_UBOX_LOG, _T(" 通话日志") ); } #endif menu.AppendMenu(MF_SEPARATOR ); if ( lItem >=0 && !m_bFind2 ) { menu.AppendMenu(MF_STRING , MENU_PADDRESS_COPY , _T(" 复 制 ") ); menu.AppendMenu(MF_STRING , MENU_PADDRESS_CUT , _T(" 剪 切 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_COPY , _T(" 复 制 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_CUT , _T(" 剪 切 ") ); } //if (!m_bFind2 && m_lUserID!=m_Copy_UserID&&m_Copy_Count>0) if (!m_bFind2 && m_Copy_Count>0 && !(m_lUserID==m_Copy_UserID && m_Copy_Type==PADDRESS_COPYTYPE_CUT)) menu.AppendMenu(MF_STRING , MENU_PADDRESS_PASTE , _T(" 粘 贴 ") ); else menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_PASTE , _T(" 粘 贴 ") ); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , MENU_PADDRESS_FIND, _T(" 查找... ") ); if ( lItem >=0 ) menu.AppendMenu(MF_STRING , MENU_PADDRESS_LOG, _T(" 收发日志... ") ); else menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_LOG, _T(" 收发日志... ") ); menu.AppendMenu(MF_SEPARATOR ); //导入用户 if (!m_bFind2 && bModify) { menu.AppendMenu(MF_STRING , MENU_PADDRESS_INPORT, _T(" 导入通讯录 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_INPORT, _T(" 导入通讯录 ") ); } if (bModify) { menu.AppendMenu(MF_STRING , MENU_PADDRESS_EXPORT, _T(" 导出通讯录 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_PADDRESS_EXPORT, _T(" 导出通讯录 ") ); } menu.AppendMenu(MF_SEPARATOR ); //刷新 menu.AppendMenu(MF_STRING , MENU_PADDRESS_REFRESH, _T(" 刷 新 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } PAddress CFPAddress::GetUserData(long lUserID) { PAddress Address={0}; TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("Select * from paddress where UserID=%d AND UserType='1' ") , lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && m_AdoRS.GetRecordCount() ) { COleDateTime t; m_AdoRS.MoveFirst(); m_AdoRS.GetCollect( _T("UserID") , Address.lUserID); m_AdoRS.GetCollect( _T("UserType") , Address.szUserType); m_AdoRS.GetCollect( _T("GroupID") , Address.szGroupID); m_AdoRS.GetCollect( _T("Name") , Address.szName); m_AdoRS.GetCollect( _T("NickName") , Address.szNickName); m_AdoRS.GetCollect( _T("Sex") , Address.szSex); m_AdoRS.GetCollect( _T("Birthday"), t); t.GetAsSystemTime(Address.tBirthday); m_AdoRS.GetCollect( _T("Ltd") , Address.szLtd); m_AdoRS.GetCollect( _T("Addr") , Address.szAddress); m_AdoRS.GetCollect( _T("Job") , Address.szJob); m_AdoRS.GetCollect( _T("Tel") , Address.szTel); m_AdoRS.GetCollect( _T("Fax") , Address.szFax); m_AdoRS.GetCollect( _T("Email") , Address.szEmail); m_AdoRS.GetCollect( _T("Mobile") , Address.szMobile); m_AdoRS.GetCollect( _T("QQ") , Address.szQQ); m_AdoRS.GetCollect( _T("CreateTime"), t); t.GetAsSystemTime(Address.tCreateTime); m_AdoRS.GetCollect( _T("BZ") , Address.szBZ); #ifdef MOBSET_VIPINT m_AdoRS.GetCollect( _T("VipInt") , Address.lVipInt); #endif #ifdef GZTJJ_VER m_AdoRS.GetCollect(_T("Place"), Address.szPlace); #endif } return Address; } BOOL CFPAddress::AddUser(PAddress user,BOOL bShow) { PAddress Address = user; long lCount = m_wndList.GetItemCount(); if ( bShow ) { TCHAR Buf[32]; CString str; //设置新的数据 //m_wndList.SetHeadings(_T("序号,50;登录名,80; 姓名,80; 昵称80;职务,80;电话,80;手机,80;Email,80;")); m_wndList.InsertItem( lCount , _itot(lCount+1,Buf,10) ); //序号 long lIcon = 2; if ( _tcscmp(Address.szSex,_T("男"))==0 ) lIcon = 0; if ( _tcscmp(Address.szSex,_T("女"))==0 ) lIcon = 1; m_wndList.SetIconIndex(lCount,lIcon); m_wndList.SetItemText(lCount,1, Address.szName ); m_wndList.SetItemText(lCount,2, Address.szNickName ); m_wndList.SetItemText(lCount,3, Address.szMobile ); m_wndList.SetItemText(lCount,4, Address.szTel ); COleDateTime t(Address.tBirthday); if ( t.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t.GetYear(),t.GetMonth(),t.GetDay()); m_wndList.SetItemText(lCount,5, str ); } else { m_wndList.SetItemText(lCount,5, _T("") ); } m_wndList.SetItemText(lCount,6, Address.szLtd ); m_wndList.SetItemText(lCount,7, Address.szJob ); m_wndList.SetItemText(lCount,8, Address.szEmail ); #ifdef SHOWBZ_VER m_wndList.SetItemText(lCount,9, Address.szBZ ); #endif #ifdef MOBSET_VIPINT str.Format(_T("%d") , Address.lVipInt ); m_wndList.SetItemText(lCount,9, str ); #endif } CString str; CString strTime; if ( COleDateTime(Address.tBirthday).GetStatus()==COleDateTime::valid ) { strTime.Format( _T("#%04d-%02d-%02d %02d:%02d:%02d#") , Address.tBirthday.wYear,Address.tBirthday.wMonth,Address.tBirthday.wDay,Address.tBirthday.wHour,Address.tBirthday.wMinute,Address.tBirthday.wSecond ); } else { strTime = _T("NULL"); } //添加到数据库里 if ( m_pMainFrame->m_Setup.bSQLUse ) { str.Format( _T("insert into paddress (UserType,GroupID,Name,NickName,Sex,Birthday,Ltd,Job,Tel,Fax,Mobile,Email,QQ,BZ) Values ('%s','%s','%s','%s','%s',%s,'%s','%s','%s','%s','%s','%s','%s','%s') "), SqlStr(Address.szUserType), Address.szGroupID, SqlStr(Address.szName), SqlStr(Address.szNickName), Address.szSex, strTime, SqlStr(Address.szLtd), SqlStr(Address.szJob), SqlStr(Address.szTel), SqlStr(Address.szFax), SqlStr(Address.szMobile), SqlStr(Address.szEmail), SqlStr(Address.szQQ), SqlStr(Address.szBZ)); m_AdoRS.Open(str); } else { str.Format( _T("insert into paddress (UserType,GroupID,Name,NickName,Sex,Birthday,Ltd,Addr,Job,Tel,Fax,Mobile,Email,QQ,BZ,CreateTime) Values ('%s','%s','%s','%s','%s',%s,'%s','%s','%s','%s','%s','%s','%s','%s','%s',now()) "), Address.szUserType, Address.szGroupID, SqlStr(Address.szName), SqlStr(Address.szNickName), Address.szSex, strTime, SqlStr(Address.szLtd), SqlStr(Address.szAddress), SqlStr(Address.szJob), SqlStr(Address.szTel), SqlStr(Address.szFax), SqlStr(Address.szMobile), SqlStr(Address.szEmail), SqlStr(Address.szQQ), SqlStr(Address.szBZ)); #ifdef MOBSET_VIPINT str.Format( _T("insert into paddress (UserType,GroupID,Name,NickName,Sex,Birthday,Ltd,Addr,Job,Tel,Fax,Mobile,Email,QQ,BZ,CreateTime,VipInt) Values ('%s','%s','%s','%s','%s',%s,'%s','%s','%s','%s','%s','%s','%s','%s','%s',now(),%d) "), Address.szUserType, Address.szGroupID, SqlStr(Address.szName), SqlStr(Address.szNickName), Address.szSex, strTime, SqlStr(Address.szLtd), SqlStr(Address.szAddress), SqlStr(Address.szJob), SqlStr(Address.szTel), SqlStr(Address.szFax), SqlStr(Address.szMobile), SqlStr(Address.szEmail), SqlStr(Address.szQQ), SqlStr(Address.szBZ), Address.lVipInt); #endif m_AdoRS.Open(str); if ( bShow ) { str.Format(_T("select top 1 * from paddress where mobile='%s' order by CreateTime desc") , Address.szMobile ); if ( m_AdoRS.Open(str) && !m_AdoRS.IsEOF() ) { m_AdoRS.GetCollect(_T("UserID") ,Address.lUserID ); //取得新添加的UserID m_wndList.SetItemData( lCount , Address.lUserID ); } } /* BOOL b = m_AdoRS.Open( _T("paddress") , adCmdTable ); if ( b ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect(_T("UserType") ,Address.szUserType); m_AdoRS.PutCollect(_T("GroupID") ,Address.szGroupID); m_AdoRS.PutCollect(_T("Name") ,Address.szName ); m_AdoRS.PutCollect(_T("NickName") ,Address.szNickName ); m_AdoRS.PutCollect(_T("Sex") ,Address.szSex ); m_AdoRS.PutCollect(_T("Birthday") ,Address.tBirthday ); m_AdoRS.PutCollect(_T("Ltd") ,Address.szLtd ); m_AdoRS.PutCollect(_T("Addr") ,Address.szAddress ); m_AdoRS.PutCollect(_T("Job") ,Address.szJob ); m_AdoRS.PutCollect(_T("Tel") ,Address.szTel ); m_AdoRS.PutCollect(_T("Fax") ,Address.szFax ); m_AdoRS.PutCollect(_T("Mobile") ,Address.szMobile ); m_AdoRS.PutCollect(_T("Email") ,Address.szEmail ); m_AdoRS.PutCollect(_T("QQ") ,Address.szQQ ); m_AdoRS.PutCollect(_T("BZ") ,Address.szBZ); m_AdoRS.PutCollect(_T("CreateTime") ,COleDateTime::GetCurrentTime() ); m_AdoRS.Update(); m_AdoRS.GetCollect(_T("UserID") ,Address.lUserID ); //取得新添加的UserID if ( bShow ) m_wndList.SetItemData( lCount , Address.lUserID ); } */ m_AdoRS.Close(); } return true; } void CFPAddress::OnKeydownPaddressList(NMHDR* pNMHDR, LRESULT* pResult) { LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR; *pResult = 0; if ( pLVKeyDow->wVKey == VK_DELETE ) { On_User_Del(); } if ( pLVKeyDow->wVKey == VK_INSERT) { On_User_Add(); } if ( pLVKeyDow->wVKey == VK_SPACE) { On_User_Modify(); } if ( pLVKeyDow->wVKey == 'S' || pLVKeyDow->wVKey == 's') { On_User_AddToList(); } if ( pLVKeyDow->wVKey == 'G' || pLVKeyDow->wVKey == 'g') { On_User_AddGroup(); } if ( pLVKeyDow->wVKey == 'F' || pLVKeyDow->wVKey == 'f') { On_User_Find(); } if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r') { On_User_Refresh(); } if ( pLVKeyDow->wVKey == 'C' || pLVKeyDow->wVKey == 'c') { On_User_Copy(); } if ( pLVKeyDow->wVKey == 'X' || pLVKeyDow->wVKey == 'x') { On_User_Cut(); } if ( pLVKeyDow->wVKey == 'V' || pLVKeyDow->wVKey == 'v') { On_User_Paste(); } if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a') { m_wndList.SelectAllItems(); } } void CFPAddress::OnOK() { //CDialog::OnOK(); } void CFPAddress::OnCancel() { //CDialog::OnCancel(); } void CFPAddress::On_User_Find2(DLG_FindUser *pDlg) { CString str; CString strFind; if ( pDlg->m_bFindAll ) //查询所有组 { m_bFind2 = true; //属于查询出来的用户,有些操作不能进行 memset(m_szGroupID,0,sizeof(m_szGroupID)); strFind = _T("select * from paddress where 1<>1 "); } else { //查询本组 if ( _tcslen(m_szGroupID)>0 ) strFind.Format(_T("select * from paddress where GroupID='%s' and ( 1<>1 "),m_szGroupID); else strFind.Format(_T("select * from paddress where (GroupID='' or GroupID is null) and ( 1<>1 "),m_szGroupID); } if ( pDlg->m_bName ) //name { str.Format(_T(" or name like '%%%s%%' "),pDlg->m_strMsg); strFind += str; } if ( pDlg->m_bNickName )//nickname { str.Format(_T(" or nickname like '%%%s%%' "),pDlg->m_strMsg); strFind += str; } if ( pDlg->m_bSex )//sex { str.Format(_T(" or sex like '%%%s%%' "),pDlg->m_strMsg); strFind += str; } if ( pDlg->m_bLTD ) //LTD { str.Format(_T(" or LTD like '%%%s%%' "),pDlg->m_strMsg); strFind += str; } if ( pDlg->m_bJob ) //job { str.Format(_T(" or job like '%%%s%%' "),pDlg->m_strMsg); strFind += str; } if ( pDlg->m_bTel ) //Tel { str.Format(_T(" or tel like '%%%s%%' "),pDlg->m_strMsg); strFind += str; } if ( pDlg->m_bMobile ) //Mobile { str.Format(_T(" or mobile like '%%%s%%' "),pDlg->m_strMsg); strFind += str; } if ( pDlg->m_bEmail ) //Email { str.Format(_T(" or email like '%%%s%%' "),pDlg->m_strMsg); strFind += str; } if ( pDlg->m_bBZ ) //BZ { str.Format(_T(" or BZ like '%%%s%%' "),pDlg->m_strMsg); strFind += str; } if ( !pDlg->m_bFindAll ) { strFind += _T(" )"); } m_wndList.ShowWindow ( SW_HIDE ); //加快显示速度 m_wndList.DeleteAllItems(); TCHAR szBuf[32]={0}; BOOL b = m_AdoRS.Open( strFind ); long lCount = m_AdoRS.GetRecordCount(); if ( b && lCount>0 ) { COleDateTime t; m_AdoRS.MoveFirst(); for ( int i = 0 ; i< lCount ; i++ ) { PAddress user={0}; m_AdoRS.GetCollect( _T("UserID") , user.lUserID); m_AdoRS.GetCollect( _T("UserType") , user.szUserType); m_AdoRS.GetCollect( _T("GroupID") , user.szGroupID); m_AdoRS.GetCollect( _T("Name") , user.szName); m_AdoRS.GetCollect( _T("NickName") , user.szNickName); m_AdoRS.GetCollect( _T("Sex") , user.szSex); m_AdoRS.GetCollect( _T("Birthday"), t); t.GetAsSystemTime(user.tBirthday); m_AdoRS.GetCollect( _T("Ltd") , user.szLtd); m_AdoRS.GetCollect( _T("Job") , user.szJob); m_AdoRS.GetCollect( _T("Tel") , user.szTel); m_AdoRS.GetCollect( _T("Fax") , user.szFax); m_AdoRS.GetCollect( _T("Email") , user.szEmail); m_AdoRS.GetCollect( _T("Mobile") , user.szMobile); m_AdoRS.GetCollect( _T("QQ") , user.szQQ); m_AdoRS.GetCollect( _T("BZ") , user.szBZ); #ifdef MOBSET_VIPINT m_AdoRS.GetCollect( _T("VipInt") , user.lVipInt); #endif m_AdoRS.MoveNext(); #ifdef SHMZ_VER if ( this->m_pMainFrame->GetUserPurview_HideNum() ) { user.szMobile[4]='*'; user.szMobile[5]='*'; user.szMobile[6]='*'; user.szMobile[7]='*'; //user.szMobile[8]='*'; } #endif //_T("序号,50; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90;职务,80;Email,80;") m_wndList.InsertItem( i , _itot(i+1,szBuf,10) ); //序号 m_wndList.SetItemData( i , user.lUserID ); m_wndList.SetItemText(i,1, user.szName ); m_wndList.SetItemText(i,2, user.szNickName ); m_wndList.SetItemText(i,3, user.szMobile ); m_wndList.SetItemText(i,4, user.szTel ); COleDateTime t(user.tBirthday); if ( t.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t.GetYear(),t.GetMonth(),t.GetDay()); m_wndList.SetItemText(i,5, str ); } else { m_wndList.SetItemText(i,5, _T("") ); } m_wndList.SetItemText(i,6, user.szLtd ); m_wndList.SetItemText(i,7, user.szJob ); m_wndList.SetItemText(i,8, user.szEmail ); #ifdef SHOWBZ_VER m_wndList.SetItemText(i,9, user.szBZ ); #endif #ifdef MOBSET_VIPINT str.Format(_T("%d") , user.lVipInt); m_wndList.SetItemText(i,9, str ); #endif } } else { MessageBox( _T("对不起,没有找到相应的记录,请重新查询!"),_T("信息"),MB_ICONINFORMATION); } m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 } void CFPAddress::OnDestroy() { if ( m_Copy_Data ) { delete m_Copy_Data; m_Copy_Data = NULL; } CDialog::OnDestroy(); } void CFPAddress::On_User_UBox_Mobile() { #ifdef SUPPER_UBOX if ( m_lCurUserID<=0 ) return ; if ( m_strCurMobile.GetLength()<=0 ) return; m_pMainFrame->m_DlgUBoxDial.SetDialNumber(m_strCurMobile); #endif } void CFPAddress::On_User_UBox_Tel() { #ifdef SUPPER_UBOX if ( m_lCurUserID<=0 ) return ; if ( m_strCurTel.GetLength()<=0 ) return; m_pMainFrame->m_DlgUBoxDial.SetDialNumber(m_strCurTel); #endif } void CFPAddress::On_User_UBox_Log() { if ( m_lCurUserID<=0 ) return ; REQ_UBox_GetLog2 * pGetLog = new REQ_UBox_GetLog2; memset(pGetLog , 0 , sizeof(REQ_UBox_GetLog2)); pGetLog->lCorpID = m_pMainFrame->m_lCorpID; pGetLog->lUserID = m_pMainFrame->m_lUserID; _tcscpy(pGetLog->szKH_Name , m_strCurName ); pGetLog->lAddressType = 1; //私人通讯录 pGetLog->lKH_UserID = m_lCurUserID; m_pMainFrame->SendFrame(SMSFUNC_UBOX_GETLOG2,(BYTE*)pGetLog,sizeof(REQ_UBox_GetLog2)); } void CFPAddress::On_User_ReadPlace(void) { CString str; str.Format(_T("select * from paddress where UserType='1' and len(mobile)>=7")); //str.Format(_T("select * from paddress where UserType='1' and len(mobile)>=7 and (place is null or len(place)<2)")); //str.Format(_T("select * from paddress where UserType='1'")); BOOL b = m_AdoRS_Place.Open(str); if (!b) { MessageBox(_T("没有需要刷新号码归属地的数据!"), _T("信息"), MB_ICONINFORMATION); return; } m_lPlace_Index = 0; m_lPlace_Count = m_AdoRS_Place.GetRecordCount(); m_DLGGetUser.SetProcessTitle(_T("正在读取号码归属地数据,请稍候...")); m_DLGGetUser.SetProcess(m_lPlace_Count, m_lPlace_Index); Place_GetNext(); m_DLGGetUser.DoModal(); return; } void CFPAddress::Place_GetNext(void) { ANS_GAddress_Place_Data * pData = new ANS_GAddress_Place_Data[GADDRESS_PLACE_MAXCOUNT]; memset(pData, 0, sizeof(ANS_GAddress_Place_Data)*GADDRESS_PLACE_MAXCOUNT); long lRecord = 0; BOOL bEnd = false; for (int i = 0; i < GADDRESS_PLACE_MAXCOUNT; i++) { if (m_AdoRS_Place.IsEOF()) { bEnd = true; break; } else { m_AdoRS_Place.GetCollect(_T("UserID"), pData[lRecord].lUserID); m_AdoRS_Place.GetCollect(_T("Mobile"), pData[lRecord].szMobile); lRecord++; } m_AdoRS_Place.MoveNext(); } if (bEnd) m_lPlace_Index = m_lPlace_Count; else m_lPlace_Index += lRecord; long lSize = sizeof(REQ_GAddress_Place) + sizeof(ANS_GAddress_Place_Data)*lRecord; BYTE * pDataSend = new BYTE[lSize]; memset(pDataSend, 0, lSize); REQ_GAddress_Place * pPlace = (REQ_GAddress_Place*)pDataSend; ANS_GAddress_Place_Data * pPlaceData = (ANS_GAddress_Place_Data*)(pDataSend + sizeof(REQ_GAddress_Place)); pPlace->lCorpID = m_pMainFrame->m_lCorpID; pPlace->lUserID = m_pMainFrame->m_lUserID; pPlace->lPlaceIndex = m_lPlace_Index; pPlace->lPlaceCount = m_lPlace_Count; pPlace->lRecord = lRecord; memcpy(pPlaceData, pData, sizeof(ANS_GAddress_Place_Data)*lRecord); m_pMainFrame->SendFrame(SMSFUNC_GADDRESS_PLACE, (BYTE*)pDataSend, lSize ); delete pData; } BOOL CFPAddress::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame) { CString str; //修改公用地址本 if (pHead->lFuncType == SMSFUNC_GADDRESS_PLACE) { ANS_GAddress_Place * pPlace = (ANS_GAddress_Place *)pFrame; ANS_GAddress_Place_Data * pData = (ANS_GAddress_Place_Data *)(pFrame + sizeof(ANS_GAddress_Place)); if (pPlace->bOK) { for (int i = 0; i < pPlace->lRecord; i++) { str.Format(_T("update paddress set Place='%s' where userid=%d"), pData[i].szPlace, pData[i].lUserID, pData[i].szPlace); m_AdoRS.Open(str); } m_DLGGetUser.SetProcess(pPlace->lPlaceCount, pPlace->lPlaceIndex); //进度条进行滚动 if (pPlace->lPlaceIndex < pPlace->lPlaceCount) { if (m_DLGGetUser.IsWindowVisible()) Place_GetNext(); } else { str.Format(_T("读取手机号码归属地数据完成,共刷新%d条数据。\r\n请刷新后查看号段数据。"), pPlace->lPlaceIndex); MessageBox(str, _T("信息"), MB_ICONINFORMATION); } } else { m_DLGGetUser.SetProcess(1, 1); //停止进度显示 MessageBox(_T("读取手机号码归属地数据异常,请检查!"), _T("错误"), MB_ICONWARNING); } return true; } return false; }