// FGAddress2.cpp : implementation file // #include "stdafx.h" #include "CorpSms.h" #include "FGAddress2.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CFGAddress2 dialog #include "MainFrm.h" #include "ProcessSocket.h" #include "DLG_User_Modify.h" #include "DLG_User_Modify2.h" #include "DLG_Group_Modify.h" #include "FuncView.h" #include "DLG_User_Inport2.h" #include "DLG_User_ModifyP.h" #include "DLG_User_Log.h" #include "DLG_User_InportP2.h" #include "..\public\StringSort\StringSort.h" CFGAddress2::CFGAddress2(CWnd* pParent /*=NULL*/) : CDialog(CFGAddress2::IDD, pParent) { //{{AFX_DATA_INIT(CFGAddress2) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_bInit = false; m_bRefresh = false; m_pInUser = NULL; m_bInUser = false; //不是在插入用户 m_lUserID = 0; m_bFind2 = false; memset(m_szGroupID,0,sizeof(m_szGroupID)); memset(m_szLocal,0,sizeof(m_szLocal)); //复制,粘贴所用到的变量 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_bReBack = false; m_lReBackIndex=0; m_lReBackCount=0; m_bUpLoad = false; m_lReBackType = 0; 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; } void CFGAddress2::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFGAddress2) DDX_Control(pDX, IDC_GADDRESS2_LIST, m_wndList); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CFGAddress2, CDialog) //{{AFX_MSG_MAP(CFGAddress2) ON_WM_SIZE() ON_NOTIFY(NM_DBLCLK, IDC_GADDRESS2_LIST, OnDblclkGaddressList) ON_NOTIFY(NM_RCLICK, IDC_GADDRESS2_LIST, OnRclickGaddressList) ON_WM_TIMER() ON_NOTIFY(LVN_KEYDOWN, IDC_GADDRESS2_LIST, OnKeydownGaddressList) ON_WM_DESTROY() //}}AFX_MSG_MAP ON_MESSAGE( LIST_DROP_BEGIN , On_List_DropBegin ) ON_COMMAND( MENU_GADDRESS2_ADDADDR, On_User_AddAddr) ON_COMMAND( MENU_GADDRESS2_ADDGROUP , On_User_AddGroup) ON_COMMAND( MENU_GADDRESS2_MODIFY , On_User_Modify) ON_COMMAND( MENU_GADDRESS2_DEL , On_User_Del) ON_COMMAND( MENU_GADDRESS2_FIND , On_User_Find) ON_COMMAND( MENU_GADDRESS2_ADDTOLIST , On_User_AddToList) ON_COMMAND( MENU_GADDRESS2_ADDTOLIST_FAX , On_User_AddToList_Fax) ON_COMMAND( MENU_GADDRESS2_ADDTOLIST_MMS , On_User_AddToList_Mms) ON_COMMAND( MENU_GADDRESS2_INPORT , On_User_Inport) ON_COMMAND( MENU_GADDRESS2_EXPORT , On_User_Export) ON_COMMAND( MENU_GADDRESS2_REFRESH, On_User_Refresh) ON_COMMAND( MENU_GADDRESS2_LOG , On_User_Log) ON_COMMAND( MENU_GADDRESS2_COPY , On_User_Copy) ON_COMMAND( MENU_GADDRESS2_CUT , On_User_Cut) ON_COMMAND( MENU_GADDRESS2_PASTE , On_User_Paste) ON_COMMAND( MENU_GADDRESS2_UBOX_MOBILE , On_User_UBox_Mobile) ON_COMMAND( MENU_GADDRESS2_UBOX_TEL , On_User_UBox_Tel) ON_COMMAND( MENU_GADDRESS2_UBOX_LOG , On_User_UBox_Log) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFGAddress2 message handlers BOOL CFGAddress2::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 ); 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 m_wndList.SetHeadings(_T("序号,50; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90; 公 司,120;职务,80;Email,80;")); #endif #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 } BOOL CFGAddress2::ReHide() { ShowWindow( SW_HIDE ); return true; } BOOL CFGAddress2::ReShow(BOOL bRefresh) { ShowWindow( SW_SHOW ); if ( bRefresh || !m_bRefresh ) { RefreshInfo(); } return true; } BOOL CFGAddress2::RefreshInfo() { return true; } void CFGAddress2::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if ( m_bInit ) { m_wndList.MoveWindow( 0 , 0 , cx,cy); } } long CFGAddress2::ShowUser(long lUserID) { m_bFind2 = false; m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 m_wndList.DeleteAllItems(); TCHAR szSelect[128]={0}; CString str; m_lUserID = lUserID; memset( m_szGroupID , 0 , sizeof(m_szGroupID) ); if ( lUserID != -1 ) //等于-1是代表根 { _stprintf( szSelect , _T("select GroupID from gaddress 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; } } GetLocal( m_szLocal , m_szGroupID ); //取用户路径 if ( lUserID == -1 ) //如果是根,用户组为NULL _tcscpy( szSelect , _T("select * from gaddress where GroupID is null or len(GroupID)=0 and UserType='1' order by UserID ") ); //查找此组下的用户 else _stprintf( szSelect , _T("Select * from gaddress where GroupID='%s' AND UserType='1' order by UserID ") , m_szGroupID ); //查找此组下的用户 BOOL b = m_AdoRS.Open( szSelect ); long lCount = m_AdoRS.GetRecordCount(); if ( b && lCount ) { COleDateTime t; m_AdoRS.MoveFirst(); for ( int i = 0 ; i< lCount ; i++ ) { ANS_GAddress22_SeeData 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("Addr") , user.szAddr); 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("CreateTime"), t);t.GetAsSystemTime(user.tCreateTime); m_AdoRS.GetCollect( _T("BZ") , user.szBZ); m_AdoRS.MoveNext(); if ( this->m_pMainFrame->GetUserPurview_HideNum() ) { user.szMobile[4]='*'; user.szMobile[5]='*'; user.szMobile[6]='*'; user.szMobile[7]='*'; //user.szMobile[8]='*'; } //m_wndList.SetHeadings(_T("序号,50; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90; 公 司,120;职务,80;Email,80;")); _stprintf(szSelect, _T("%d"), i + 1); m_wndList.InsertItem( i , szSelect); //序号 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_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 ); #ifdef MOBSET_OEM_YTLE m_wndList.SetItemText(i,5, user.szFax ); #else 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("") ); } #endif m_wndList.SetItemText(i,6, user.szLTD ); m_wndList.SetItemText(i,7, user.szJob ); m_wndList.SetItemText(i,8, user.szEmail ); #ifdef MOBSET_OEM_YTLE 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,9, str ); } else { m_wndList.SetItemText(i,9, _T("") ); } m_wndList.SetItemText(i,10, user.szBZ ); #endif #ifdef SHOWBZ_VER m_wndList.SetItemText(i,9, user.szBZ ); #endif } //return lCount; } m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 return 0; } void CFGAddress2::On_User_AddAddr() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_ADD) ) { return ; } if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; if ( isAddressFull() ) //通讯录已满 return ; PAddress Address={0}; _tcscpy(Address.szGroupID,m_szGroupID); Address.szUserType[0]='1'; //用户类型 DLG_User_ModifyP dlg(this); dlg.SetParam( Address,m_szLocal,true,1); dlg.DoModal(); } void CFGAddress2::On_User_AddGroup() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_ADD) ) { return ; } if ( m_bFind2 ) //属于查询出来的用户,此操作无效 return ; if ( isAddressFull() ) //通讯录已满 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[128]={0}; _stprintf( szSelect , _T("select GroupID from gaddress 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_pCurUser->szUser ); DLG_Group_Modify dlg(this); dlg.SetParam( GAdd,m_szLocal,_T("gaddress") ); if ( dlg.DoModal() == IDOK ) { long lSize = sizeof(REQ_GAddress2_Group_Add)+sizeof(ANS_GAddress2_Group_AddData); BYTE * pAddData = new BYTE[lSize];memset(pAddData,0,lSize); REQ_GAddress2_Group_Add * pAdd = (REQ_GAddress2_Group_Add *)pAddData; //头 ANS_GAddress2_Group_AddData * pGAdd = (ANS_GAddress2_Group_AddData *)(pAddData+sizeof(REQ_GAddress2_Group_Add)); GAdd = dlg.GetParam(); pGAdd->lUserID = GAdd.lUserID; _tcscpy(pGAdd->szBZ , GAdd.szBZ ); _tcscpy(pGAdd->szCreateUser , GAdd.szCreateUser ); _tcscpy(pGAdd->szGroupID , GAdd.szGroupID ); _tcscpy(pGAdd->szGroupName , GAdd.szGroupName ); ::GetLocalTime( &pGAdd->tCreateTime ); pAdd->lCorpID= m_pMainFrame->m_lCorpID; pAdd->lCount = 1; m_pMainFrame->SendFrame( SMSFUNC_GADDRESS2_GROUP_ADD , pAddData , lSize ); } } void CFGAddress2::On_User_Modify() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_SEE) ) { return ; } long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; if (isLockItem(lItem)) { return ; } long lUserID = m_wndList.GetItemData( lItem ); PAddress Address = GetUserData(lUserID); if (_tcslen(Address.szName) >0 ) { if ( m_pMainFrame->GetUserPurview( PURVIEW_GADDRESS_MODIFY,false )) { DLG_User_ModifyP dlg(this); TCHAR szLocal[128]={0}; GetLocal(szLocal,Address.szGroupID); //取用户所在组位置 dlg.SetParam(Address,szLocal,false,1); if ( dlg.DoModal() == IDOK ) { SetLockItem( lItem ,true); long lSize = sizeof(REQ_GAddress22_Modify)+sizeof(ANS_GAddress22_SeeData); BYTE * pModifyData = new BYTE[lSize];memset(pModifyData,0,lSize); REQ_GAddress22_Modify * pModify = (REQ_GAddress22_Modify *)pModifyData; //头 ANS_GAddress22_SeeData * pAddress = (ANS_GAddress22_SeeData *)(pModifyData+sizeof(REQ_GAddress22_Modify)); Address = dlg.GetParam(); pAddress->lUserID = Address.lUserID; _tcscpy(pAddress->szBZ , Address.szBZ ); _tcscpy(pAddress->szEmail , Address.szEmail ); _tcscpy(pAddress->szFax , Address.szFax ); _tcscpy(pAddress->szGroupID , Address.szGroupID ); _tcscpy(pAddress->szJob , Address.szJob ); _tcscpy(pAddress->szAddr , Address.szAddress ); _tcscpy(pAddress->szLTD , Address.szLtd ); _tcscpy(pAddress->szMobile , Address.szMobile ); _tcscpy(pAddress->szName , Address.szName ); _tcscpy(pAddress->szNickName , Address.szNickName ); _tcscpy(pAddress->szQQ , Address.szQQ ); _tcscpy(pAddress->szSex , Address.szSex ); _tcscpy(pAddress->szTel , Address.szTel ); _tcscpy(pAddress->szUserType , Address.szUserType ); pAddress->tBirthday = Address.tBirthday; pAddress->tCreateTime = Address.tCreateTime; pModify->lCorpID= m_pMainFrame->m_lCorpID; pModify->lItem = lItem; pModify->lCount = 1; m_pMainFrame->SendFrame( SMSFUNC_GADDRESS22_MODIFY , pModifyData , lSize ); } } } } void CFGAddress2::On_User_Del() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_DEL) ) { return ; } long lRet = MessageBox( _T("确实要删除选中的用户吗?"),_T("提问"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2); if ( lRet != IDYES ) return ; long lCount = m_wndList.GetSelectedCount(); long lSize = sizeof(REQ_GAddress2_Del)+sizeof(ANS_GAddress2_DelData)*lCount; BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize); REQ_GAddress2_Del * pDel = (REQ_GAddress2_Del *)pDelSend; //头 ANS_GAddress2_DelData * pDelData = (ANS_GAddress2_DelData *)(pDelSend+sizeof(REQ_GAddress2_Del)); pDel->lCount = lCount; POSITION pos = m_wndList.GetFirstSelectedItemPosition(); while(pos) { long lItem = m_wndList.GetNextSelectedItem(pos); long lUserID = m_wndList.GetItemData(lItem); CString strLogin = m_wndList.GetItemText(lItem,1); /* if ( lUserID == m_pMainFrame->m_lUserID ) { long lRet = MessageBox( _T("要删除的用户中包含当前登录用户,删除后你将不能通过本帐号登录!\r\n是否真的删除本帐号?"),_T("提问"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2); if ( lRet != IDYES ) continue; } if ( strLogin == _T("Admin") ) { MessageBox( _T("要删除的用户中包含管理员帐号,此帐号不可删除!"),_T("提示"),MB_ICONINFORMATION); continue; } */ pDelData->lItem = lItem; pDelData->lUserID = lUserID; this->SetLockItem( lItem,true); //加锁 pDelData ++; } m_pMainFrame->SendFrame( SMSFUNC_GADDRESS2_DEL , pDelSend , lSize ); } void CFGAddress2::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 , 3 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bNickName )//nickname { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 4 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bSex )//sex { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 4 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bJob ) //job { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 8 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bTel ) //Tel { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 6 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bMobile ) //Mobile { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 5 , szMsg,sizeof(szMsg) ); bFind = FoundChar(szMsg , szFind , _tcslen(szMsg) ); } if ( !bFind && dlg.m_bEmail ) //Email { memset( szMsg , 0 , sizeof(szMsg) ); m_wndList.GetItemText( i , 9 , 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 CFGAddress2::On_User_AddToList() { On_User_AddToList_Public(0); } void CFGAddress2::On_User_AddToList_Fax() { On_User_AddToList_Public(1); } void CFGAddress2::On_User_AddToList_Mms() { On_User_AddToList_Public(2); } void CFGAddress2::On_User_AddToList_Public(long lSendType) { if ( !m_pMainFrame->GetUserPurview(PURVIEW_SENDG) ) { 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 gaddress 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); if ( lSendType == 1 ) //传真 m_AdoRS.GetCollect( _T("Fax") , pUser->szMobile); else m_AdoRS.GetCollect( _T("Mobile") , pUser->szMobile); m_AdoRS.GetCollect( _T("BZ") , pUser->szBZ); } } 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 CFGAddress2::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),5); //DLG_User_Inport dlg(this); //dlg.SetInport(NULL,&m_wndList,true,false); if ( dlg.DoModal() == IDOK ) { if ( m_pInUser ) {delete m_pInUser;m_pInUser=NULL;}; m_lInUserCount = dlg.m_User.GetCount(); m_lInUserIndex = 0; if ( m_lInUserCount > 0 ) { //取信息 m_pInUser =new ANS_GAddress22_SeeData[m_lInUserCount]; memset(m_pInUser,0,sizeof(ANS_GAddress22_SeeData)*m_lInUserCount); POSITION pos = dlg.m_User.GetHeadPosition(); long i = 0; while (pos) { PAddress pAddress = *dlg.m_User.GetNext( pos ); _tcscpy(m_pInUser[i].szName , pAddress.szName); _tcscpy(m_pInUser[i].szSex , pAddress.szSex); _tcscpy(m_pInUser[i].szNickName , pAddress.szNickName); _tcscpy(m_pInUser[i].szMobile , pAddress.szMobile); _tcscpy(m_pInUser[i].szTel , pAddress.szTel); _tcscpy(m_pInUser[i].szFax , pAddress.szFax); m_pInUser[i].tBirthday = pAddress.tBirthday; _tcscpy(m_pInUser[i].szLTD , pAddress.szLtd); _tcscpy(m_pInUser[i].szJob , pAddress.szJob); _tcscpy(m_pInUser[i].szAddr , pAddress.szAddress); _tcscpy(m_pInUser[i].szEmail , pAddress.szEmail); _tcscpy(m_pInUser[i].szQQ , pAddress.szQQ); _tcscpy(m_pInUser[i].szBZ , pAddress.szBZ); i++; } m_bInUser = true; //正在导入地址本 m_DLGGetUser.SetProcessTitle( _T("正在导入地址本,请稍候...") ); //发送添加地址本信息 Inport_Next(); //启动进度条 m_DLGGetUser.DoModal(); delete m_pInUser; m_pInUser = NULL; m_bInUser = false; //不正在导入地址本 } TCHAR Buf[64]={0}; _stprintf( Buf , _T("导入地址本成功,共导入%d个有效用户!") , m_lInUserIndex ); MessageBox( Buf , _T("信息") , MB_ICONASTERISK ); } dlg.Close(); //关闭链表 } void CFGAddress2::On_User_ReBack() { USES_CONVERSION; int iRet = MessageBox(_T("恢复通讯录后,将会覆盖现有的所有通讯录数据,请慎重!\r\n是否继续?") , _T("确认") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 ); if ( iRet != IDYES ) return ; #define FILE_FILTER_TEXT \ TEXT("bak备份文件 (*.bak)\0*.bak\0")\ TEXT("所有文件 (*.*)\0*.*;\0\0") CString strFileName; TCHAR szFile[ 256 ]; TCHAR szFileB[ 256 ]; *szFileB = NULL; _stprintf( szFile , _T("Address.bak") ); OPENFILENAME sOpen; sOpen.lStructSize = sizeof( sOpen ); sOpen.hwndOwner = this->m_hWnd ; sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY; sOpen.lpstrFilter = FILE_FILTER_TEXT; sOpen.lpstrDefExt = _T("bak"); sOpen.lpstrCustomFilter = NULL; sOpen.nMaxCustFilter = 0; sOpen.lpstrFile = szFile; sOpen.nMaxFile = sizeof( szFile ); sOpen.lpstrFileTitle = szFileB; sOpen.nMaxFileTitle = sizeof( szFileB ); sOpen.lpstrInitialDir = NULL; sOpen.lpstrTitle = _T("选择通讯录备份的文件"); if ( !::GetOpenFileName( &sOpen ) ) { return ; } strFileName = sOpen.lpstrFile; //解密码 char szPasswd[64]={0};strcpy(szPasswd , ACCESS_PASSWD ); char szKey[64]={0};strcpy( szKey , ACCESS_KEY ); char szNew2[64]={0};long lOut=sizeof(szNew2); TCHAR szNew[64]={0}; CDes des; des.Decrypt( szPasswd , strlen(szPasswd),szNew2,lOut,szKey,8); #ifdef UNICODE _tcscpy(szNew , A2W(szNew2)); #else strcpy(szNew , szNew2); #endif if ( !m_BadoConnection.ConnectAccess(strFileName,szNew ) ) //连接数据库错误,需要重新创建 { MessageBox( _T("打开通讯录备份文件错误,请检查!"),_T("错误") ,MB_ICONWARNING ); return ; } m_BAdoRS.SetAdoConnection( &m_BadoConnection ); //设置连接 long lCount = 0; m_BAdoRS.Open(_T("select * from paddress order by GroupID,usertype")); m_lReBackCount=m_BAdoRS.GetRecordCount(); m_lReBackIndex=0; if (m_lReBackCount<=0 ) { MessageBox( _T("备份文件没有任何记录,无法导入!"),_T("错误") ,MB_ICONWARNING ); return ; } strFileName.Format( _T("需要恢复的通迅录共有%d条记录,是否继续?"),m_lReBackCount ); iRet = MessageBox(strFileName , _T("确认") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 ); if ( iRet != IDYES ) return ; m_lReBackType = 0; //先清除此ID的所有通迅录 long lSize = sizeof(REQ_GAddress2_Del)+sizeof(ANS_GAddress2_DelData); BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize); REQ_GAddress2_Del * pDel = (REQ_GAddress2_Del *)pDelSend; //头 ANS_GAddress2_DelData * pDelData = (ANS_GAddress2_DelData *)(pDelSend+sizeof(REQ_GAddress2_Del)); pDel->lCount = 1; pDelData->lItem = -100; pDelData->lUserID=-100; _tcscpy(pDelData->szGroupID,m_pMainFrame->m_strMainGroupID); m_pMainFrame->SendFrame( SMSFUNC_GADDRESS2_DEL , pDelSend , lSize ); /* m_AdoRS.Open(_T("delete from paddress") ); //先删除所有记录 m_AdoRS.Open(_T("paddress") , adCmdTable); AdoRS.MoveFirst(); while ( !AdoRS.IsEOF() ) { PAddress Address={0}; COleDateTime t; AdoRS.GetCollect( _T("UserID") , Address.lUserID); AdoRS.GetCollect( _T("UserType") , Address.szUserType); AdoRS.GetCollect( _T("GroupID") , Address.szGroupID); AdoRS.GetCollect( _T("Name") , Address.szName); AdoRS.GetCollect( _T("NickName") , Address.szNickName); AdoRS.GetCollect( _T("Sex") , Address.szSex); AdoRS.GetCollect( _T("Birthday"), t); t.GetAsSystemTime(Address.tBirthday); AdoRS.GetCollect( _T("Ltd") , Address.szLtd); AdoRS.GetCollect( _T("Addr") , Address.szAddress); AdoRS.GetCollect( _T("Job") , Address.szJob); AdoRS.GetCollect( _T("Tel") , Address.szTel); AdoRS.GetCollect( _T("Fax") , Address.szFax); AdoRS.GetCollect( _T("Email") , Address.szEmail); AdoRS.GetCollect( _T("Mobile") , Address.szMobile); AdoRS.GetCollect( _T("QQ") , Address.szQQ); AdoRS.GetCollect( _T("CreateTime"), t); t.GetAsSystemTime(Address.tCreateTime); AdoRS.GetCollect( _T("BZ") , Address.szBZ); m_AdoRS.AddNew(); //m_AdoRS.PutCollect( _T("UserID") , Address.lUserID); 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("Email") , Address.szEmail); m_AdoRS.PutCollect( _T("Mobile") , Address.szMobile); m_AdoRS.PutCollect( _T("QQ") , Address.szQQ); m_AdoRS.PutCollect( _T("CreateTime") , Address.tCreateTime); m_AdoRS.PutCollect( _T("BZ") , Address.szBZ); m_AdoRS.Update(); AdoRS.MoveNext(); lCount ++; } m_AdoRS.Close(); AdoRS.Close(); adoConnection.Close(); CString strTemp; strTemp.Format( _T("备份通讯录成功,信息如下:\r\n文件名:%s\r\n记录数:%d") , strFileName,lCount ); MessageBox(strTemp , _T("信息") , MB_ICONINFORMATION ); On_User2_Refresh(); */ } void CFGAddress2::On_User_Export() { DLG_User_Inport2 dlg(this); dlg.SetInport(&m_AdoRS,m_szGroupID,2,false); dlg.SetOutportName(m_strGroupName); dlg.DoModal(); } void CFGAddress2::On_User_Refresh() { ShowUser( m_lUserID ); //刷新 } void CFGAddress2::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; } if ( m_Copy_Data ) { delete m_Copy_Data;m_Copy_Data=NULL; } m_Copy_Data = new ANS_GAddress22_SeeData[lCount]; memset(m_Copy_Data,0,sizeof(ANS_GAddress22_SeeData)*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] = GetUserData2(lUserID); i ++; } m_Copy_Count = i; m_Copy_Type = GADDRESS2_COPYTYPE_COPY; } void CFGAddress2::On_User_Cut() { On_User_Copy(); m_Copy_Type = GADDRESS2_COPYTYPE_CUT; } void CFGAddress2::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==GADDRESS2_COPYTYPE_CUT) ) //不符合条件 return ; CString str; //向服务器发送请求,告知用户已移动 long lSize = sizeof(REQ_GAddress2_User_Move)+sizeof(REQ_GAddress2_User_Move_Data)*m_Copy_Count; BYTE * pData = new BYTE[lSize]; memset(pData,0,lSize); REQ_GAddress2_User_Move * pMove = (REQ_GAddress2_User_Move *)pData; REQ_GAddress2_User_Move_Data * pMoveData = (REQ_GAddress2_User_Move_Data *)(pData+sizeof(REQ_GAddress2_User_Move)); pMove->lCount = m_Copy_Count; pMove->lMoveType = 0; //移动 if ( m_Copy_Type == GADDRESS2_COPYTYPE_COPY ) pMove->lMoveType = 1; //复制 _tcscpy(pMove->szTagGroup , m_szGroupID); for ( int i=0 ; ilUserID = m_Copy_Data[i].lUserID; pMoveData ++; } this->m_pMainFrame->SendFrame(SMSFUNC_GADDRESS2_USER_MOVE,pData,lSize); } void CFGAddress2::On_User_Log() { if ( !m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_SEE) ) { return ; } long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; long lUserID = m_wndList.GetItemData( lItem ); PAddress Address = GetUserData(lUserID); //CString strMobile = m_wndList.GetItemText(lItem,3); CString strMobile = Address.szMobile; DLG_User_Log dlg(this); dlg.SetHideNum(m_pMainFrame->GetUserPurview_HideNum()); dlg.SetParam(&m_AdoRS,strMobile); dlg.DoModal(); } long CFGAddress2::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } BOOL CFGAddress2::isLockItem(long lItem, BOOL bShowWarning) { BOOL b = (m_wndList.GetIconIndex(lItem) == 3); if ( b && bShowWarning ) { MessageBox( _T("正录被锁定,请等待服务器返回后再操作!") , _T("锁定中") , MB_ICONINFORMATION ); } return b; } void CFGAddress2::SetLockItem(long lItem, BOOL bLock) { if ( bLock ) m_wndList.SetIconIndex( lItem , 3 ); else { m_wndList.SetIconIndex( lItem , 2 ); //用未知性别 } } void CFGAddress2::ShowRMenu() { if (!m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_SEE,false)) //没有查看权限 return ; CMenu menu; menu.CreatePopupMenu(); BOOL bLock = false; long lItem = this->GetCurrentSelected(); if ( lItem >= 0 ) bLock = isLockItem( lItem , false ); //取得是否正在锁定 //添加 if ( m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_ADD,false) && !m_bFind2 ) { menu.AppendMenu(MF_STRING , MENU_GADDRESS2_ADDADDR, _T(" 添加通讯录 ") ); menu.AppendMenu(MF_STRING , MENU_GADDRESS2_ADDGROUP, _T(" 添加用户组 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_ADDADDR, _T(" 添加通讯录 ") ); menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_ADDGROUP , _T(" 添加用户组 ") ); } menu.AppendMenu(MF_SEPARATOR ); //修改 if ( m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_MODIFY,false) && lItem >=0 && !bLock) { menu.AppendMenu(MF_STRING , MENU_GADDRESS2_MODIFY, _T(" 修 改 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_MODIFY , _T(" 修 改 ") ); } //删除 if ( m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_DEL,false) && lItem >=0 && !bLock ) { menu.AppendMenu(MF_STRING , MENU_GADDRESS2_DEL, _T(" 删 除 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_DEL , _T(" 删 除 ") ); } menu.AppendMenu(MF_SEPARATOR ); //发送短信 if ( m_pMainFrame->GetUserPurview(PURVIEW_SENDG,false) && lItem >=0 && !bLock ) { menu.AppendMenu(MF_STRING , MENU_GADDRESS2_ADDTOLIST, _T(" 发送短信 ") ); #ifdef SUPPER_FUNC_FAX menu.AppendMenu(MF_STRING , MENU_GADDRESS2_ADDTOLIST_FAX, _T(" 发送传真 ") ); #endif #ifdef SUPPER_FUNC_MMS menu.AppendMenu(MF_STRING , MENU_GADDRESS2_ADDTOLIST_MMS, _T(" 发送彩信 ") ); #endif } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_ADDTOLIST , _T(" 发送短信 ") ); #ifdef SUPPER_FUNC_FAX menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_ADDTOLIST_FAX, _T(" 发送传真 ") ); #endif #ifdef SUPPER_FUNC_MMS menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_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_GADDRESS2_UBOX_MOBILE, str ); } else { popMenuUBox.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_UBOX_MOBILE, str ); } str.Format(_T(" 拨打电话:%s") , m_strCurTel ); if ( bUBox && m_strCurTel.GetLength()>0 ) { popMenuUBox.AppendMenu(MF_STRING , MENU_GADDRESS2_UBOX_TEL, str ); } else { popMenuUBox.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_UBOX_TEL, str ); } popMenuUBox.AppendMenu(MF_SEPARATOR ); if ( bUBox ) { popMenuUBox.AppendMenu(MF_STRING , MENU_GADDRESS2_UBOX_LOG, _T(" 通话日志") ); } else { popMenuUBox.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_UBOX_LOG, _T(" 通话日志") ); } #endif menu.AppendMenu(MF_SEPARATOR ); //if ( !m_bFind2 ) menu.AppendMenu(MF_STRING , MENU_GADDRESS2_FIND, _T(" 查找... ") ); //else // menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_FIND, _T(" 查找... ") ); if ( lItem >=0 ) menu.AppendMenu(MF_STRING , MENU_GADDRESS2_LOG, _T(" 收发日志... ") ); else menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_LOG, _T(" 收发日志... ") ); menu.AppendMenu(MF_SEPARATOR ); if ( lItem >=0 && !m_bFind2 ) { menu.AppendMenu(MF_STRING , MENU_GADDRESS2_COPY , _T(" 复 制 ") ); menu.AppendMenu(MF_STRING , MENU_GADDRESS2_CUT , _T(" 剪 切 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_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==GADDRESS2_COPYTYPE_CUT)) menu.AppendMenu(MF_STRING , MENU_GADDRESS2_PASTE , _T(" 粘 贴 ") ); else menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_PASTE , _T(" 粘 贴 ") ); menu.AppendMenu(MF_SEPARATOR ); //导入用户 if ( m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_ADD,false) && !m_bFind2 ) { menu.AppendMenu(MF_STRING , MENU_GADDRESS2_INPORT, _T(" 导入通讯录 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_INPORT , _T(" 导入通讯录 ") ); } //导出用户 if ( m_pMainFrame->GetUserPurview(PURVIEW_GADDRESS_MODIFY,false) ) { menu.AppendMenu(MF_STRING , MENU_GADDRESS2_EXPORT, _T(" 导出通讯录 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_GADDRESS2_EXPORT , _T(" 导出通讯录 ") ); } menu.AppendMenu(MF_SEPARATOR ); //刷新 menu.AppendMenu(MF_STRING , MENU_GADDRESS2_REFRESH, _T(" 刷 新 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } PAddress CFGAddress2::GetUserData(long lUserID) { PAddress Address={0}; TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("Select * from gaddress 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("Job") , Address.szJob); m_AdoRS.GetCollect( _T("Addr") , Address.szAddress); 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); } return Address; } void CFGAddress2::OnDblclkGaddressList(NMHDR* pNMHDR, LRESULT* pResult) { On_User_Modify(); *pResult = 0; } BOOL CFGAddress2::ProcessSocket(Socket_Head *pHead) { CString str; //修改公用地址本 if (pHead->lFuncType == SMSFUNC_GADDRESS22_MODIFY) { ANS_GAddress22_Modify * pModify = (ANS_GAddress22_Modify *)pHead->pFrame; ANS_GAddress22_SeeData * pData = (ANS_GAddress22_SeeData *)(pHead->pFrame+sizeof(ANS_GAddress22_Modify)); SetLockItem( pModify->lItem , false ); //解锁 if ( pModify->lCount == 1 ) //等于1时表示修改成功 { long lUserID = m_wndList.GetItemData(pModify->lItem); if ( lUserID == pData->lUserID ) { long lIcon = 2; if ( _tcscmp( pData->szSex,_T("男"))==0 ) lIcon = 0; if ( _tcscmp( pData->szSex,_T("女"))==0 ) lIcon = 1; m_wndList.SetIconIndex(pModify->lItem,lIcon); m_wndList.SetItemText(pModify->lItem,1, pData->szName ); m_wndList.SetItemText(pModify->lItem,2, pData->szNickName ); m_wndList.SetItemText(pModify->lItem,3, pData->szMobile ); m_wndList.SetItemText(pModify->lItem,4, pData->szTel ); #ifdef MOBSET_OEM_YTLE m_wndList.SetItemText(pModify->lItem,5, pData->szFax ); #else COleDateTime t(pData->tBirthday); if ( t.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t.GetYear(),t.GetMonth(),t.GetDay()); m_wndList.SetItemText(pModify->lItem,5, str ); } else { m_wndList.SetItemText(pModify->lItem,5, _T("") ); } #endif m_wndList.SetItemText(pModify->lItem,6, pData->szLTD ); m_wndList.SetItemText(pModify->lItem,7, pData->szJob ); m_wndList.SetItemText(pModify->lItem,8, pData->szEmail ); #ifdef MOBSET_OEM_YTLE COleDateTime t(pData->tBirthday); if ( t.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t.GetYear(),t.GetMonth(),t.GetDay()); m_wndList.SetItemText(pModify->lItem,9, str ); } else { m_wndList.SetItemText(pModify->lItem,9, _T("") ); } m_wndList.SetItemText(pModify->lItem,10, pData->szBZ ); #endif #ifdef SHOWBZ_VER m_wndList.SetItemText(pModify->lItem,9, pData->szBZ ); #endif } //将新的数据写入本地数据库 TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("select * from gaddress where UserID=%d ") , pData->lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && !m_AdoRS.IsEOF() ) { m_AdoRS.PutCollect(_T("GroupID") ,pData->szGroupID); m_AdoRS.PutCollect(_T("Name") ,pData->szName ); m_AdoRS.PutCollect(_T("NickName") ,pData->szNickName ); m_AdoRS.PutCollect(_T("Sex") ,pData->szSex ); m_AdoRS.PutCollect(_T("Birthday") ,pData->tBirthday ); m_AdoRS.PutCollect(_T("LTD") ,pData->szLTD ); m_AdoRS.PutCollect(_T("Job") ,pData->szJob ); m_AdoRS.PutCollect(_T("Addr") ,pData->szAddr ); m_AdoRS.PutCollect(_T("Tel") ,pData->szTel ); m_AdoRS.PutCollect(_T("Fax") ,pData->szFax ); m_AdoRS.PutCollect(_T("Mobile") ,pData->szMobile ); m_AdoRS.PutCollect(_T("Email") ,pData->szEmail ); m_AdoRS.PutCollect(_T("QQ") ,pData->szQQ ); m_AdoRS.PutCollect(_T("BZ") ,pData->szBZ); m_AdoRS.Update(); m_AdoRS.Close(); } } return true; } //添加用户 if (pHead->lFuncType == SMSFUNC_GADDRESS22_ADD) { ANS_GAddress22_Add * pAdd = (ANS_GAddress22_Add *)pHead->pFrame; ANS_GAddress22_SeeData * pData = (ANS_GAddress22_SeeData *)(pHead->pFrame+sizeof(ANS_GAddress22_Add)); if ( pAdd->lCount == 1 && pData->lUserID >0) //等于1时表示修改成功 { if ( !m_bReBack ) { long lCount = m_wndList.GetItemCount(); TCHAR Buf[32]; //设置新的数据 //m_wndList.SetHeadings(_T("序号,50;登录名,80; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90;职务,80;Email,80;")); m_wndList.InsertItem( lCount , _itot(lCount+1,Buf,10)); //序号 long lIcon = 2; if ( _tcscmp( pData->szSex,_T("男"))==0 ) lIcon = 0; if ( _tcscmp( pData->szSex,_T("女"))==0 ) lIcon = 1; m_wndList.SetIconIndex(lCount,lIcon); m_wndList.SetItemData( lCount , pData->lUserID ); m_wndList.SetItemText(lCount,1, pData->szName ); m_wndList.SetItemText(lCount,2, pData->szNickName ); m_wndList.SetItemText(lCount,3, pData->szMobile ); m_wndList.SetItemText(lCount,4, pData->szTel ); COleDateTime t(pData->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, pData->szLTD ); m_wndList.SetItemText(lCount,7, pData->szJob ); m_wndList.SetItemText(lCount,8, pData->szEmail ); #ifdef SHOWBZ_VER m_wndList.SetItemText(lCount,9, pData->szBZ ); #endif } //添加到数据库里 BOOL b = m_AdoRS.Open( _T("gaddress") , adCmdTable ); if ( b ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect(_T("UserID") ,pData->lUserID); m_AdoRS.PutCollect(_T("UserType") ,pData->szUserType); m_AdoRS.PutCollect(_T("GroupID") ,pData->szGroupID); m_AdoRS.PutCollect(_T("Name") ,pData->szName ); m_AdoRS.PutCollect(_T("NickName") ,pData->szNickName ); m_AdoRS.PutCollect(_T("Sex") ,pData->szSex ); m_AdoRS.PutCollect(_T("Birthday") ,pData->tBirthday ); m_AdoRS.PutCollect(_T("LTD") ,pData->szLTD ); m_AdoRS.PutCollect(_T("Job") ,pData->szJob ); m_AdoRS.PutCollect(_T("Addr") ,pData->szAddr ); m_AdoRS.PutCollect(_T("Tel") ,pData->szTel ); m_AdoRS.PutCollect(_T("Fax") ,pData->szFax ); m_AdoRS.PutCollect(_T("Mobile") ,pData->szMobile ); m_AdoRS.PutCollect(_T("Email") ,pData->szEmail ); m_AdoRS.PutCollect(_T("QQ") ,pData->szQQ ); m_AdoRS.PutCollect(_T("CreateTime") ,pData->tCreateTime); m_AdoRS.PutCollect(_T("BZ") ,pData->szBZ); m_AdoRS.Update(); } m_AdoRS.Close(); } if ( m_bReBack ) { m_lReBackIndex ++; m_DLGGetUser.SetProcess( m_lReBackCount , m_lReBackIndex ); ReBack_Next(); } if ( m_bInUser ) //是导入用户,需要显示进度条,并导入下一条 { m_lInUserIndex ++; m_DLGGetUser.SetProcess( m_lInUserCount , m_lInUserIndex ); Inport_Next(); } return true; } //删除用户 if (pHead->lFuncType == SMSFUNC_GADDRESS2_DEL) { ANS_GAddress2_Del * pDel = (ANS_GAddress2_Del *)pHead->pFrame; ANS_GAddress2_DelData * pDelData = (ANS_GAddress2_DelData *)(pHead->pFrame+sizeof(ANS_GAddress2_Del)); if ( pDel->lCount == -100 ) //删除通迅录 { m_AdoRS.Open( _T("delete from gaddress") ); //清空本地数据 m_AdoRS.Close(); m_bReBack = true; m_DLGGetUser.SetProcessTitle( _T("正在上传地址本,请稍候...") ); //发送添加地址本信息 m_BAdoRS.MoveFirst(); ReBack_Next(); //启动进度条 m_DLGGetUser.DoModal(); m_bReBack = false; //不正在导入地址本 m_pMainFrame->ReadGAddress2(true); return true; } m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 for ( int i = pDel->lCount-1 ; i>=0 ; i-- ) { if ( pDelData[i].lItem >= 0 ) { long lUserID = m_wndList.GetItemData(pDelData[i].lItem); if ( pDelData[i].lUserID && lUserID == pDelData[i].lUserID) //删除成功 { m_wndList.DeleteItem(pDelData[i].lItem); //从ListCtrl中删除 //从数据库中删除 TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("delete from gaddress where UserID=%d ") ,pDelData[i].lUserID ); m_AdoRS.Open( szSelect ); m_AdoRS.Close(); } else { this->SetLockItem( pDelData[i].lItem , false ); //解锁 } } } m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 return true; } //添加用户组 if (pHead->lFuncType == SMSFUNC_GADDRESS2_GROUP_ADD) { ANS_GAddress2_Group_Add * pAdd = (ANS_GAddress2_Group_Add *)pHead->pFrame; ANS_GAddress2_Group_AddData * pData = (ANS_GAddress2_Group_AddData *)(pHead->pFrame+sizeof(ANS_GAddress2_Group_Add)); if ( pAdd->lCount == 1 && pData->lUserID >0) //等于1时表示添加成功 { //添加到树 if ( !m_bReBack ) { m_pFuncView->AddGGroup2( pData->szGroupName , m_lUserID , pData->lUserID ); } if ( m_bUpLoad ) { m_bUpLoad = false; m_bReBack = true; m_strTagGroupID = pData->szGroupID; m_DLGGetUser.SetProcessTitle( _T("正在上传地址本,请稍候...") ); //发送添加地址本信息 if ( m_lReBackCount>1 && !isAddressFull() ) { m_BAdoRS.MoveFirst(); ReBack_Next(); //启动进度条 m_DLGGetUser.DoModal(); } m_bReBack = false; //不正在导入地址本 m_pMainFrame->ReadGAddress2(true); return true; } //添加到数据库里 BOOL b = m_AdoRS.Open( _T("gaddress") , adCmdTable ); if ( b ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect(_T("UserID") ,pData->lUserID); m_AdoRS.PutCollect(_T("UserType") ,_T("0") ); //用户组 m_AdoRS.PutCollect(_T("GroupID") ,pData->szGroupID); m_AdoRS.PutCollect(_T("Name") ,pData->szGroupName ); m_AdoRS.PutCollect(_T("CreateTime") ,pData->tCreateTime); m_AdoRS.PutCollect(_T("BZ") ,pData->szBZ); m_AdoRS.Update(); } } if ( m_bReBack ) { m_lReBackIndex ++; m_DLGGetUser.SetProcess( m_lReBackCount , m_lReBackIndex ); ReBack_Next(); } return true; } //添加用户组 if (pHead->lFuncType == SMSFUNC_GADDRESS2_USER_MOVE) { ANS_GAddress2_User_Move * pMove = (ANS_GAddress2_User_Move *)pHead->pFrame; REQ_GAddress2_User_Move_Data * pMoveData = (REQ_GAddress2_User_Move_Data *)(pHead->pFrame+sizeof(ANS_GAddress2_User_Move)); if ( pMove->lCount>0 && pMove->lCount==m_Copy_Count) //等于1时表示添加成功 { if ( pMove->lMoveType == 0 ) //剪切,直接更改组ID即可 { for ( int i=0 ; ilCount;i++ ) { str.Format( _T("Update gaddress set GroupID='%s' where UserID=%d"),pMove->szTagGroup,pMoveData[i].lUserID ); m_AdoRS.Open(str); m_AdoRS.Close(); } } if ( pMove->lMoveType == 1 ) //复制, { //添加到数据库里 BOOL b = m_AdoRS.Open( _T("gaddress") , adCmdTable ); if ( b ) { for ( int i=0 ; ilCount;i++ ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect(_T("UserID") ,pMoveData[i].lUserID); m_AdoRS.PutCollect(_T("UserType") ,m_Copy_Data[i].szUserType); m_AdoRS.PutCollect(_T("GroupID") ,pMove->szTagGroup); m_AdoRS.PutCollect(_T("Name") ,m_Copy_Data[i].szName ); m_AdoRS.PutCollect(_T("NickName") ,m_Copy_Data[i].szNickName ); m_AdoRS.PutCollect(_T("Sex") ,m_Copy_Data[i].szSex ); m_AdoRS.PutCollect(_T("Birthday") ,m_Copy_Data[i].tBirthday ); m_AdoRS.PutCollect(_T("LTD") ,m_Copy_Data[i].szLTD ); m_AdoRS.PutCollect(_T("Job") ,m_Copy_Data[i].szJob ); m_AdoRS.PutCollect(_T("Addr") ,m_Copy_Data[i].szAddr ); m_AdoRS.PutCollect(_T("Tel") ,m_Copy_Data[i].szTel ); m_AdoRS.PutCollect(_T("Fax") ,m_Copy_Data[i].szFax ); m_AdoRS.PutCollect(_T("Mobile") ,m_Copy_Data[i].szMobile ); m_AdoRS.PutCollect(_T("Email") ,m_Copy_Data[i].szEmail ); m_AdoRS.PutCollect(_T("QQ") ,m_Copy_Data[i].szQQ ); m_AdoRS.PutCollect(_T("CreateTime") ,m_Copy_Data[i].tCreateTime); m_AdoRS.PutCollect(_T("BZ") ,m_Copy_Data[i].szBZ); m_AdoRS.Update(); m_AdoRS.GetCollect(_T("UserID") ,m_Copy_Data[i].lUserID ); //取得新添加的UserID } } m_AdoRS.Close(); } //显示出来 if (CString(pMove->szTagGroup) == CString(this->m_szGroupID) ) { for ( int i=0 ; ilFuncType == SMSFUNC_GADDRESS22_MODIFY) { ANS_GAddress22_Modify * pModify = (ANS_GAddress22_Modify *)pFrame; ANS_GAddress22_SeeData * pData = (ANS_GAddress22_SeeData *)(pFrame+sizeof(ANS_GAddress22_Modify)); SetLockItem( pModify->lItem , false ); //解锁 if ( pModify->lCount == 1 ) //等于1时表示修改成功 { long lUserID = m_wndList.GetItemData(pModify->lItem); if ( lUserID == pData->lUserID ) { long lIcon = 2; if ( _tcscmp( pData->szSex,_T("男"))==0 ) lIcon = 0; if ( _tcscmp( pData->szSex,_T("女"))==0 ) lIcon = 1; m_wndList.SetIconIndex(pModify->lItem,lIcon); m_wndList.SetItemText(pModify->lItem,1, pData->szName ); m_wndList.SetItemText(pModify->lItem,2, pData->szNickName ); m_wndList.SetItemText(pModify->lItem,3, pData->szMobile ); m_wndList.SetItemText(pModify->lItem,4, pData->szTel ); #ifdef MOBSET_OEM_YTLE m_wndList.SetItemText(pModify->lItem,5, pData->szFax ); #else COleDateTime t(pData->tBirthday); if ( t.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t.GetYear(),t.GetMonth(),t.GetDay()); m_wndList.SetItemText(pModify->lItem,5, str ); } else { m_wndList.SetItemText(pModify->lItem,5, _T("") ); } #endif m_wndList.SetItemText(pModify->lItem,6, pData->szLTD ); m_wndList.SetItemText(pModify->lItem,7, pData->szJob ); m_wndList.SetItemText(pModify->lItem,8, pData->szEmail ); #ifdef MOBSET_OEM_YTLE COleDateTime t(pData->tBirthday); if ( t.GetStatus()==COleDateTime::valid ) { str.Format( _T("%04d.%02d.%02d"),t.GetYear(),t.GetMonth(),t.GetDay()); m_wndList.SetItemText(pModify->lItem,9, str ); } else { m_wndList.SetItemText(pModify->lItem,9, _T("") ); } m_wndList.SetItemText(pModify->lItem,10, pData->szBZ ); #endif #ifdef SHOWBZ_VER m_wndList.SetItemText(pModify->lItem,9, pData->szBZ ); #endif } //将新的数据写入本地数据库 TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("select * from gaddress where UserID=%d ") , pData->lUserID ); BOOL b = m_AdoRS.Open( szSelect ); if ( b && !m_AdoRS.IsEOF() ) { m_AdoRS.PutCollect(_T("GroupID") ,pData->szGroupID); m_AdoRS.PutCollect(_T("Name") ,pData->szName ); m_AdoRS.PutCollect(_T("NickName") ,pData->szNickName ); m_AdoRS.PutCollect(_T("Sex") ,pData->szSex ); m_AdoRS.PutCollect(_T("Birthday") ,pData->tBirthday ); m_AdoRS.PutCollect(_T("LTD") ,pData->szLTD ); m_AdoRS.PutCollect(_T("Job") ,pData->szJob ); m_AdoRS.PutCollect(_T("Addr") ,pData->szAddr ); m_AdoRS.PutCollect(_T("Tel") ,pData->szTel ); m_AdoRS.PutCollect(_T("Fax") ,pData->szFax ); m_AdoRS.PutCollect(_T("Mobile") ,pData->szMobile ); m_AdoRS.PutCollect(_T("Email") ,pData->szEmail ); m_AdoRS.PutCollect(_T("QQ") ,pData->szQQ ); m_AdoRS.PutCollect(_T("BZ") ,pData->szBZ); m_AdoRS.Update(); m_AdoRS.Close(); } } return true; } //添加用户 if (pHead->lFuncType == SMSFUNC_GADDRESS22_ADD) { ANS_GAddress22_Add * pAdd = (ANS_GAddress22_Add *)pFrame; ANS_GAddress22_SeeData * pData = (ANS_GAddress22_SeeData *)(pFrame+sizeof(ANS_GAddress22_Add)); if ( pAdd->lCount == 1 && pData->lUserID >0) //等于1时表示修改成功 { if ( !m_bReBack ) { long lCount = m_wndList.GetItemCount(); TCHAR Buf[32]; //设置新的数据 //m_wndList.SetHeadings(_T("序号,50;登录名,80; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90;职务,80;Email,80;")); m_wndList.InsertItem( lCount , _itot(lCount+1,Buf,10)); //序号 long lIcon = 2; if ( _tcscmp( pData->szSex,_T("男"))==0 ) lIcon = 0; if ( _tcscmp( pData->szSex,_T("女"))==0 ) lIcon = 1; m_wndList.SetIconIndex(lCount,lIcon); m_wndList.SetItemData( lCount , pData->lUserID ); m_wndList.SetItemText(lCount,1, pData->szName ); m_wndList.SetItemText(lCount,2, pData->szNickName ); m_wndList.SetItemText(lCount,3, pData->szMobile ); m_wndList.SetItemText(lCount,4, pData->szTel ); COleDateTime t(pData->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, pData->szLTD ); m_wndList.SetItemText(lCount,7, pData->szJob ); m_wndList.SetItemText(lCount,8, pData->szEmail ); #ifdef SHOWBZ_VER m_wndList.SetItemText(lCount,9, pData->szBZ ); #endif } //添加到数据库里 BOOL b = m_AdoRS.Open( _T("gaddress") , adCmdTable ); if ( b ) { m_AdoRS.AddNew(); m_AdoRS.PutCollect(_T("UserID") ,pData->lUserID); m_AdoRS.PutCollect(_T("UserType") ,pData->szUserType); m_AdoRS.PutCollect(_T("GroupID") ,pData->szGroupID); m_AdoRS.PutCollect(_T("Name") ,pData->szName ); m_AdoRS.PutCollect(_T("NickName") ,pData->szNickName ); m_AdoRS.PutCollect(_T("Sex") ,pData->szSex ); m_AdoRS.PutCollect(_T("Birthday") ,pData->tBirthday ); m_AdoRS.PutCollect(_T("LTD") ,pData->szLTD ); m_AdoRS.PutCollect(_T("Job") ,pData->szJob ); m_AdoRS.PutCollect(_T("Addr") ,pData->szAddr ); m_AdoRS.PutCollect(_T("Tel") ,pData->szTel ); m_AdoRS.PutCollect(_T("Fax") ,pData->szFax ); m_AdoRS.PutCollect(_T("Mobile") ,pData->szMobile ); m_AdoRS.PutCollect(_T("Email") ,pData->szEmail ); m_AdoRS.PutCollect(_T("QQ") ,pData->szQQ ); m_AdoRS.PutCollect(_T("CreateTime") ,pData->tCreateTime); m_AdoRS.PutCollect(_T("BZ") ,pData->szBZ); m_AdoRS.Update(); } m_AdoRS.Close(); } if ( m_bReBack ) { m_lReBackIndex ++; m_DLGGetUser.SetProcess( m_lReBackCount , m_lReBackIndex ); ReBack_Next(); } if ( m_bInUser ) //是导入用户,需要显示进度条,并导入下一条 { m_lInUserIndex ++; m_DLGGetUser.SetProcess( m_lInUserCount , m_lInUserIndex ); Inport_Next(); } return true; } return false; } void CFGAddress2::OnRclickGaddressList(NMHDR* pNMHDR, LRESULT* pResult) { ShowRMenu(); *pResult = 0; } void CFGAddress2::OnTimer(UINT nIDEvent) { CDialog::OnTimer(nIDEvent); if ( nIDEvent == 1 ) { KillTimer( 1 ); m_pFuncView = m_pMainFrame->m_pFuncView; return ; } } LRESULT CFGAddress2::On_List_DropBegin( WPARAM wParam , LPARAM lParam ) { //看有没有发送公用地址本的权限 if ( !m_pMainFrame->GetUserPurview( PURVIEW_SENDG , 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 gaddress 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 ); CUserDropTarget::m_shWndTreeCtrl = NULL; CUserDropTarget::m_lAddressType = -1; // Begin Drag operation DROPEFFECT dropeffect = data.DoDragDrop(); GlobalFree( hData ); return true; } void CFGAddress2::Inport_Next() { USES_CONVERSION; if ( m_lInUserIndex >= m_lInUserCount ) //添加已完成 return ; if ( isAddressFull() ) //通讯录已满 { m_DLGGetUser.SetProcess( 1 , 1 ); //停止进度显示 return ; } long lSize = sizeof(REQ_GAddress22_Add)+sizeof(ANS_GAddress22_SeeData); BYTE * pAddSent = new BYTE[lSize];memset(pAddSent,0,lSize); REQ_GAddress22_Add * pAdd = (REQ_GAddress22_Add *)pAddSent; //头 ANS_GAddress22_SeeData * pAddData = (ANS_GAddress22_SeeData *)(pAddSent+sizeof(REQ_GAddress22_Add)); *pAddData = m_pInUser[m_lInUserIndex]; //取得数据 ::GetLocalTime( &pAddData->tCreateTime ); _tcscpy(pAddData->szGroupID,m_szGroupID); pAddData->lCorpID = m_pMainFrame->m_lCorpID; pAddData->szUserType[0]='1'; //用户类型 pAdd->lCount = 1; m_pMainFrame->SendFrame( SMSFUNC_GADDRESS22_ADD , pAddSent , lSize ); } void CFGAddress2::GetLocal(TCHAR *pLocal, TCHAR *pGroupID) { long lLen = _tcslen( pGroupID ); TCHAR szGroup[16]={0}; TCHAR szTemp[16]={0}; TCHAR szSelect[128]={0}; _stprintf( pLocal , _T("公用通讯录") ); m_strGroupName = pLocal; for ( int i = 1 ; i<= lLen ; i++ ) { _tcsncpy( szGroup , pGroupID , i ); _stprintf( szSelect , _T("select Name from gaddress 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 CFGAddress2::AddUser(PAddress user) { if ( isAddressFull() ) //通讯录已满 return false; long lSize = sizeof(REQ_GAddress22_Add)+sizeof(ANS_GAddress22_SeeData); BYTE * pAddSent = new BYTE[lSize];memset(pAddSent,0,lSize); REQ_GAddress22_Add * pAdd = (REQ_GAddress22_Add *)pAddSent; //头 ANS_GAddress22_SeeData * pAddData = (ANS_GAddress22_SeeData *)(pAddSent+sizeof(REQ_GAddress22_Add)); pAddData->lUserID = user.lUserID; _tcscpy(pAddData->szBZ , user.szBZ ); _tcscpy(pAddData->szEmail , user.szEmail ); _tcscpy(pAddData->szFax , user.szFax ); _tcscpy(pAddData->szGroupID , user.szGroupID ); _tcscpy(pAddData->szJob , user.szJob ); _tcscpy(pAddData->szAddr, user.szAddress ); _tcscpy(pAddData->szLTD , user.szLtd ); _tcscpy(pAddData->szMobile , user.szMobile ); _tcscpy(pAddData->szName , user.szName ); _tcscpy(pAddData->szNickName , user.szNickName ); _tcscpy(pAddData->szQQ , user.szQQ ); _tcscpy(pAddData->szSex , user.szSex ); _tcscpy(pAddData->szTel , user.szTel ); _tcscpy(pAddData->szUserType , user.szUserType ); pAddData->tBirthday = user.tBirthday; ::GetLocalTime( &pAddData->tCreateTime ); pAdd->lCount = 1; m_pMainFrame->SendFrame( SMSFUNC_GADDRESS22_ADD , pAddSent , lSize ); return true; } void CFGAddress2::OnKeydownGaddressList(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_AddAddr(); } 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 == 'L' || pLVKeyDow->wVKey == 'l') { On_User_Log(); } if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a') { m_wndList.SelectAllItems(); } //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(); } } void CFGAddress2::OnOK() { //CDialog::OnOK(); } void CFGAddress2::OnCancel() { //CDialog::OnCancel(); } void CFGAddress2::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 gaddress where 1<>1 "); } else { //查询本组 if ( _tcslen(m_szGroupID)>0 ) strFind.Format(_T("select * from gaddress where GroupID='%s' and ( 1<>1 "),m_szGroupID); else strFind.Format(_T("select * from gaddress 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 ) { COleDateTime t; m_AdoRS.MoveFirst(); for ( int i = 0 ; i< lCount ; i++ ) { ANS_GAddress22_SeeData 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("Addr") , user.szAddr); 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("CreateTime"), t);t.GetAsSystemTime(user.tCreateTime); m_AdoRS.GetCollect( _T("BZ") , user.szBZ); m_AdoRS.MoveNext(); if ( this->m_pMainFrame->GetUserPurview_HideNum() ) { user.szMobile[4]='*'; user.szMobile[5]='*'; user.szMobile[6]='*'; user.szMobile[7]='*'; //user.szMobile[8]='*'; } //m_wndList.SetHeadings(_T("序号,50;登录名,80; 姓名,80; 昵称,80;手机,100;电话,80; 生日,90;职务,80;Email,80;")); m_wndList.InsertItem( i , _itot(i+1,szBuf,10)); //序号 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_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 } } else { MessageBox( _T("对不起,没有找到相应的记录,请重新查询!"),_T("信息"),MB_ICONINFORMATION); } m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 } void CFGAddress2::OnDestroy() { CDialog::OnDestroy(); if ( m_Copy_Data ) { delete m_Copy_Data; m_Copy_Data = NULL; } if ( m_pInUser ) {delete m_pInUser;m_pInUser=NULL;}; } BOOL CFGAddress2::isAddressFull(BOOL bTip) { long lCount=0; CString str=_T("select count(*) as abc from gaddress"); if ( m_AdoRS.Open( str ) && m_AdoRS.GetRecordCount()>0 ) { m_AdoRS.MoveFirst(); m_AdoRS.GetCollect(_T("abc"), lCount ); m_AdoRS.Close(); } if ( lCountGetMaxAddressCount() ) return false; if ( bTip ) { MessageBox( _T("你的公用通讯录容量已达上限,不能继续添加,请联系服务提供商!") , _T("错误") , MB_ICONWARNING ); } return true; } ANS_GAddress22_SeeData CFGAddress2::GetUserData2(long lUserID) { ANS_GAddress22_SeeData Address={0}; TCHAR szSelect[128]={0}; _stprintf( szSelect , _T("Select * from gaddress 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("Job") , Address.szJob); m_AdoRS.GetCollect( _T("Addr") , Address.szAddr); 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); } return Address; } void CFGAddress2::ReBack_Next() { USES_CONVERSION; if ( m_lReBackIndex >= m_lReBackCount ) //添加已完成 { return ; } if ( m_BAdoRS.IsEOF() ) { return ; } if ( isAddressFull() ) //通讯录已满 { if ( m_DLGGetUser.IsWindowVisible() ) m_DLGGetUser.SetProcess( 1 , 1 ); //停止进度显示 return ; } //取通迅录数据 COleDateTime t; ANS_GAddress22_SeeData Address={0}; m_BAdoRS.GetCollect( _T("UserID") , Address.lUserID); m_BAdoRS.GetCollect( _T("UserType") , Address.szUserType); m_BAdoRS.GetCollect( _T("GroupID") , Address.szGroupID); m_BAdoRS.GetCollect( _T("Name") , Address.szName); m_BAdoRS.GetCollect( _T("NickName") , Address.szNickName); m_BAdoRS.GetCollect( _T("Sex") , Address.szSex); m_BAdoRS.GetCollect( _T("Birthday"), t); t.GetAsSystemTime(Address.tBirthday); m_BAdoRS.GetCollect( _T("LTD") , Address.szLTD); m_BAdoRS.GetCollect( _T("Job") , Address.szJob); m_BAdoRS.GetCollect( _T("Addr") , Address.szAddr); m_BAdoRS.GetCollect( _T("Tel") , Address.szTel); m_BAdoRS.GetCollect( _T("Fax") , Address.szFax); m_BAdoRS.GetCollect( _T("Email") , Address.szEmail); m_BAdoRS.GetCollect( _T("Mobile") , Address.szMobile); m_BAdoRS.GetCollect( _T("QQ") , Address.szQQ); m_BAdoRS.GetCollect( _T("CreateTime"), t); t.GetAsSystemTime(Address.tCreateTime); m_BAdoRS.GetCollect( _T("BZ") , Address.szBZ); if ( m_lReBackType == 0 ) //恢复通迅录 { if ( m_pMainFrame->m_lMainGroupID>0 && m_pMainFrame->m_strMainGroupID.GetLength()>0 ) { TCHAR szTemp[32]={0}; _stprintf(szTemp, _T("%s%s") , m_pMainFrame->m_strMainGroupID , Address.szGroupID ); _tcscpy(Address.szGroupID,szTemp); } } else { //上传通迅录 if ( Address.lUserID == m_lSrcGroupID ) { m_lReBackIndex ++; m_BAdoRS.MoveNext(); ReBack_Next(); return ; } //改变用户组 CString strTemp = Address.szGroupID; strTemp.Replace( m_strSrcGroupID , m_strTagGroupID ); _tcscpy( Address.szGroupID , strTemp ); } if ( Address.szUserType[0] == '0' ) { //导入用户组 long lSize = sizeof(REQ_GAddress2_Group_Add)+sizeof(ANS_GAddress2_Group_AddData); BYTE * pAddData = new BYTE[lSize];memset(pAddData,0,lSize); REQ_GAddress2_Group_Add * pAdd = (REQ_GAddress2_Group_Add *)pAddData; //头 ANS_GAddress2_Group_AddData * pGAdd = (ANS_GAddress2_Group_AddData *)(pAddData+sizeof(REQ_GAddress2_Group_Add)); pAdd->bReBack = true; pAdd->lCorpID = m_pMainFrame->m_lCorpID; pAdd->lCount = 1; pGAdd->lUserID = Address.lUserID; _tcscpy(pGAdd->szBZ , Address.szBZ ); _tcscpy(pGAdd->szCreateUser , Address.szCreateUser ); _tcscpy(pGAdd->szGroupID , Address.szGroupID ); _tcscpy(pGAdd->szGroupName , Address.szName ); pGAdd->tCreateTime = Address.tCreateTime; pAdd->lCorpID= m_pMainFrame->m_lCorpID; pAdd->lCount = 1; m_pMainFrame->SendFrame( SMSFUNC_GADDRESS2_GROUP_ADD , pAddData , lSize ); } else { //导入用户 long lSize = sizeof(REQ_GAddress22_Add)+sizeof(ANS_GAddress22_SeeData); BYTE * pAddSent = new BYTE[lSize];memset(pAddSent,0,lSize); REQ_GAddress22_Add * pAdd = (REQ_GAddress22_Add *)pAddSent; //头 ANS_GAddress22_SeeData * pAddData = (ANS_GAddress22_SeeData *)(pAddSent+sizeof(REQ_GAddress22_Add)); *pAddData = Address; //取得数据 pAdd->lCount = 1; pAdd->bReBack= true; pAddData->lCorpID = m_pMainFrame->m_lCorpID; pAddData->szUserType[0]='1'; //用户类型 pAdd->lCount = 1; m_pMainFrame->SendFrame( SMSFUNC_GADDRESS22_ADD , pAddSent , lSize ); } m_BAdoRS.MoveNext(); } void CFGAddress2::On_User_UpLoad(ANS_GAddress_Group_AddData GAdd) { if ( isAddressFull() ) //通讯录已满 { return ; } m_lSrcGroupID = GAdd.lUserID; m_strSrcGroupID = GAdd.szGroupID; m_bUpLoad = true; m_lReBackType = 1; CString str; m_BAdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection ); //设置连接 //查找相同组名的,开始重新编号 CString strName[100]; long lNameCount=0; str.Format( _T("select * from gaddress where GroupID like '_' and UserType='0' and name like '%s%%'") , GAdd.szGroupName ); if ( m_BAdoRS.Open(str) && !m_BAdoRS.IsEOF() ) { while ( !m_BAdoRS.IsEOF() ) { m_BAdoRS.GetCollect( _T("Name") , strName[lNameCount] ); m_BAdoRS.MoveNext(); lNameCount ++; } } if ( lNameCount>0 ) //有同名的文件,开始重新编号 { CString strTempName=GAdd.szGroupName; for ( int i=1 ; i<100 ; i++ ) { _stprintf(GAdd.szGroupName, _T("%s%d") , strTempName , i ); for ( int j=0 ; j=lNameCount ) break; } } long lCount = 0; str.Format( _T("select * from paddress where GroupID like '%s%%' order by GroupID,usertype"),m_strSrcGroupID ); m_BAdoRS.Open(str); m_lReBackCount=m_BAdoRS.GetRecordCount(); m_lReBackIndex=0; str.Format( _T("需要上传的通迅录共有%d条记录,是否继续?"),m_lReBackCount-1 ); int iRet = MessageBox(str , _T("确认") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 ); if ( iRet != IDYES ) return ; m_pFuncView->SelectMainGAddress2(); long lSize = sizeof(REQ_GAddress2_Group_Add)+sizeof(ANS_GAddress2_Group_AddData); BYTE * pAddData = new BYTE[lSize];memset(pAddData,0,lSize); REQ_GAddress2_Group_Add * pAdd = (REQ_GAddress2_Group_Add *)pAddData; //头 ANS_GAddress2_Group_AddData * pGAdd = (ANS_GAddress2_Group_AddData *)(pAddData+sizeof(REQ_GAddress2_Group_Add)); _tcscpy(pGAdd->szBZ , GAdd.szBZ ); _tcscpy(pGAdd->szGroupID , m_pMainFrame->m_strMainGroupID ); //只能上传到根目录 _tcscpy(pGAdd->szGroupName , GAdd.szGroupName ); ::GetLocalTime( &pGAdd->tCreateTime ); pAdd->lCorpID= m_pMainFrame->m_lCorpID; pAdd->lCount = 1; m_pMainFrame->SendFrame( SMSFUNC_GADDRESS2_GROUP_ADD , pAddData , lSize ); return ; } void CFGAddress2::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 CFGAddress2::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 CFGAddress2::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 = 0; //公用通讯录 pGetLog->lKH_UserID = m_lCurUserID; m_pMainFrame->SendFrame(SMSFUNC_UBOX_GETLOG2,(BYTE*)pGetLog,sizeof(REQ_UBox_GetLog2)); }