// DLG_QXBox_Group_Modify.cpp : 实现文件 // #include "stdafx.h" #include "CorpSms.h" #include "DLG_QXBox_Group_Modify.h" #include "afxdialogex.h" #include "FQXBox_Group.h" #include "DLG_Send_User.h" #include "DLG_User_InportP2.h" #include "DLG_Send_Inport.h" #include "MainFrm.h" // DLG_QXBox_Group_Modify 对话框 IMPLEMENT_DYNAMIC(DLG_QXBox_Group_Modify, CDialogEx) DLG_QXBox_Group_Modify::DLG_QXBox_Group_Modify(CWnd* pParent /*=NULL*/) : CDialogEx(DLG_QXBox_Group_Modify::IDD, pParent) { m_lModifyType = 0; memset(&m_Data , 0 , sizeof(m_Data)); m_strBZ = _T(""); m_strName = _T(""); m_strCreateTime = _T(""); m_strCreateUser = _T(""); m_strMobileCount = _T(""); m_lType = 0; m_strOperMsg = _T(""); m_pMobile = NULL; m_lMobileCount = 0; m_lMaxMobileCount = 99; m_bModify = false; m_bModifyMobile = false; m_bShowProcess = false; m_lMobileGetItem = 0; m_lDeleteCount=0; m_strArea = _T(""); m_strCity = _T(""); m_strCountry = _T(""); m_strEmail = _T(""); m_strHeadData = _T(""); // m_strMobile = _T(""); m_strQQ = _T(""); m_strMobile = _T(""); m_lMaxImageSize = 100*1024; //头像最大支持100k } DLG_QXBox_Group_Modify::~DLG_QXBox_Group_Modify() { } void DLG_QXBox_Group_Modify::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_BZ, m_strBZ); DDV_MaxChars(pDX, m_strBZ, 100); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_NAME, m_strName); DDV_MaxChars(pDX, m_strName, 60); DDX_Control(pDX, IDD_QXBOX_GROUP_MODIFY_LIST, m_wndList); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_CREATETIME, m_strCreateTime); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_CREATEUSER, m_strCreateUser); // DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_MOBILECOUNT, m_strMobileCount); // DDX_Control(pDX, IDD_QXBOX_GROUP_MODIFY_OPERMSG, m_strOperMsg); DDX_CBIndex(pDX, IDD_QXBOX_GROUP_MODIFY_TYPE, m_lType); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_OPERMSG, m_strOperMsg); DDX_Control(pDX, IDD_QXBOX_GROUP_MODIFY_NUM, m_E_Num); DDX_Control(pDX, IDD_QXBOX_GROUP_MODIFY_LISTCOUNT, m_S_ListCount); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_AREA, m_strArea); DDV_MaxChars(pDX, m_strArea, 20); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_CITY, m_strCity); DDV_MaxChars(pDX, m_strCity, 20); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_COUNTRY, m_strCountry); DDV_MaxChars(pDX, m_strCountry, 20); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_EMAIL, m_strEmail); DDV_MaxChars(pDX, m_strEmail, 50); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_HEADDATA, m_strHeadData); DDV_MaxChars(pDX, m_strHeadData, 120); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_MOBILE, m_strMobile); // DDV_MaxChars(pDX, m_strMobile, 11); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_QQ, m_strQQ); DDV_MaxChars(pDX, m_strQQ, 20); DDX_Text(pDX, IDD_QXBOX_GROUP_MODIFY_MOBILE, m_strMobile); DDV_MaxChars(pDX, m_strMobile, 20); } BEGIN_MESSAGE_MAP(DLG_QXBox_Group_Modify, CDialogEx) ON_BN_CLICKED(IDOK, &DLG_QXBox_Group_Modify::OnBnClickedOk) ON_WM_CREATE() ON_MESSAGE(DROPM_DROP,OnDrop) ON_BN_CLICKED(IDD_QXBOX_GROUP_MODIFY_NUMADD, &DLG_QXBox_Group_Modify::OnBnClickedQxboxGroupModifyNumadd) ON_NOTIFY(NM_RCLICK, IDD_QXBOX_GROUP_MODIFY_LIST, &DLG_QXBox_Group_Modify::OnNMRClickQxboxGroupModifyList) ON_NOTIFY(NM_DBLCLK, IDD_QXBOX_GROUP_MODIFY_LIST, &DLG_QXBox_Group_Modify::OnNMDblclkQxboxGroupModifyList) ON_COMMAND( QQBOX_GROUP_USER_ADD , On_User_Add ) ON_COMMAND( QQBOX_GROUP_USER_MODIFY , On_User_Modify ) ON_COMMAND( QQBOX_GROUP_USER_DEL , On_User_Del ) ON_COMMAND( QQBOX_GROUP_USER_CLEAR , On_User_Clear ) ON_COMMAND( QQBOX_GROUP_USER_CLEAR_INPORT , On_User_Inport ) ON_COMMAND( QQBOX_GROUP_USER_CLEAR_EXPORT , On_User_Export ) ON_CBN_SELCHANGE(IDD_QXBOX_GROUP_MODIFY_TYPE, &DLG_QXBox_Group_Modify::OnCbnSelchangeQxboxGroupModifyType) ON_BN_CLICKED(IDD_QXBOX_GROUP_MODIFY_HEADDATA_S, &DLG_QXBox_Group_Modify::OnBnClickedQxboxGroupModifyHeaddataS) END_MESSAGE_MAP() // DLG_QXBox_Group_Modify 消息处理程序 void DLG_QXBox_Group_Modify::OnBnClickedOk() { if ( !UpdateData(true) ) return ; //保存其它资料 _tcscpy(m_Data.szMobile , m_strMobile); _tcscpy(m_Data.szEmail , m_strEmail); _tcscpy(m_Data.szQQ , m_strQQ); _tcscpy(m_Data.szCountry , m_strCountry); _tcscpy(m_Data.szArea , m_strArea); _tcscpy(m_Data.szCity , m_strCity); if ( m_strHeadData.GetLength()>0 && m_strHeadData!=CString(_T("[Image]")) ) { //判断文件大小是否正确 CFileStatus status; CFile::GetStatus(m_strHeadData,status); if (status.m_size<=10 || status.m_size > m_lMaxImageSize) { MessageBox(_T("图片文件不存在或过小或过大,无法发送,请重新选择") , _T("错误"),MB_ICONWARNING); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_HEADDATA_S)->SetFocus(); return ; } } if ( m_lModifyType ==0 ) //新增 { if ( m_strName.GetLength()<=0 ) { MessageBox(_T("群组名称不能为空,请输入!") , _T("错误") , MB_ICONWARNING); if ( m_pDlg ) GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NAME)->SetFocus(); return ; } //判断企业名称是否正确 if ( m_strName.Find(m_strCM) !=0 ) { MessageBox(_T("群组名称必须以企业简称开头,请修改!") , _T("错误") , MB_ICONWARNING); if ( m_pDlg ) GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NAME)->SetFocus(); return ; } if ( m_lType==1 ) //Q信群 { long lMobileCount = m_wndList.GetItemCount(); if ( lMobileCount<3 || lMobileCount>m_lMaxMobileCount ) { MessageBox(_T("讨论组成员为3-99个,请修正!") , _T("错误") , MB_ICONWARNING); return ; } } _tcscpy(m_Data.szName , m_strName ); _tcscpy(m_Data.szBZ , m_strBZ); m_Data.lType = m_lType; if ( m_pDlg ) m_pDlg->GroupEndDialog(this,m_lModifyType,m_Data); } if ( m_lModifyType ==1 && (!m_bModify || m_wndList.GetItemCount()<=m_lMaxMobileCount) ) //修改,小于1000个号码时,直接一次性提交。 { if ( m_lType==1 ) //Q信群 { long lMobileCount = m_wndList.GetItemCount(); if ( lMobileCount<3 || lMobileCount>m_lMaxMobileCount ) { MessageBox(_T("Q信组成员为3-100个,请修正!") , _T("错误") , MB_ICONWARNING); return ; } } _tcscpy(m_Data.szBZ , m_strBZ); if ( m_pDlg ) m_pDlg->GroupEndDialog(this,m_lModifyType,m_Data); } if (m_wndList.GetItemCount()>0 && ( m_lModifyType==2 || m_lModifyType==3) ) { long lCount = m_wndList.GetItemCount(); m_DlgProcess.SetProcess(lCount,0); m_lMobileGetItem = 0; SendNextMobile(); m_bShowProcess = true; m_DlgProcess.SetProcessTitle(_T("正在上传号码资料...")); if ( m_DlgProcess.DoModal() != IDOK ) //显示进度栏 { //取资料不成功 //return ; } m_bShowProcess = false; if ( m_pDlg ) m_pDlg->GroupEndDialog(this,m_lModifyType,m_Data); } CDialogEx::OnOK(); } BOOL DLG_QXBox_Group_Modify::OnInitDialog() { CDialogEx::OnInitDialog(); //创建图像列表 m_Image.Create( 20 , 20 , ILC_COLOR32|ILC_MASK , 5 , 1); CBitmap bmp; bmp.LoadBitmap( IDB_L_USER_NOR ); m_Image.Add( &bmp , RGB(193,193,193) ); //设置 bmp.DeleteObject(); bmp.LoadBitmap( IDB_L_USER_EXP ); m_Image.Add( &bmp , RGB(193,193,193) ); //设置 //加入图像列表 m_wndList.SetImageList(&m_Image,LVSIL_SMALL); m_wndList.SetBkColor( RGB(237,238,188) ); m_wndList.SetTextBkColor( RGB(237,238,188) ); //m_wndList.SubClassWindow2(); //m_wndList.SetHeadings(_T(" 姓 名,80; 昵 称,80;手机号码,100; 状 态,70; 用户组,80; 备 注,150;")); //m_wndList.SetGridLines(true); //设置成热激活形式 //m_wndList.SetExtendedStyle(LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); m_wndList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); m_wndList.InsertColumn( 0 , _T(" 姓 名") , LVCFMT_LEFT , 100 , 0); m_wndList.InsertColumn( 1 , _T(" 手机号码") , LVCFMT_LEFT , 100 , 1); m_wndList.InsertColumn( 3 , _T(" 状 态") , LVCFMT_LEFT , 60, 3); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } int DLG_QXBox_Group_Modify::ShowData() { m_lDeleteCount = 0; //删除数据计数,当为Q群修改时,每次只能删除一条记录 m_bModifyMobile =false; m_strSort.Clear(); //清空数据 //默认不能编辑号码 GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUM)->EnableWindow(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUMADD)->EnableWindow(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_LIST)->EnableWindow(false); ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NAME))->SetReadOnly(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_TYPE)->EnableWindow(false); ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_BZ))->SetReadOnly(true); m_strName = m_Data.szName; m_lType = m_Data.lType; m_strMobileCount.Format(_T("%d") , m_Data.lMobileCount); m_strOperMsg = m_Data.szOperMsg; m_strCreateUser = m_Data.szCreateUser; m_strCreateTime.Format(_T("%04d.%02d.%02d %02d:%02d:%02d") , m_Data.tCreateTime.wYear,m_Data.tCreateTime.wMonth,m_Data.tCreateTime.wDay,m_Data.tCreateTime.wHour,m_Data.tCreateTime.wMinute,m_Data.tCreateTime.wSecond); m_strBZ = m_Data.szBZ; m_strMobile = m_Data.szMobile; m_strEmail = m_Data.szEmail; m_strQQ = m_Data.szQQ; m_strCountry = m_Data.szCountry; m_strArea = m_Data.szArea; m_strCity = m_Data.szCity; if ( m_Data.lHeadData>0 ) m_strHeadData = _T("[Image]"); else m_strHeadData = _T(""); //0-新增,1-修改,2-新增,3-删除 if ( m_lModifyType==0 ) { m_strName = m_strCM; //默认使用企业简称 SetWindowText(_T("群组设置 - 添加新群组")); if ( m_Data.lType ==0 ) { GetDlgItem(IDD_QXBOX_GROUP_MODIFY_MOBILE_S)->SetWindowText(_T("号码列表,群组生成后才能添加")); ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NAME))->SetReadOnly(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_TYPE)->EnableWindow(true); ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_BZ))->SetReadOnly(false); } } if ( m_lModifyType==1 || m_lModifyType==2 || m_lModifyType==3 ) { ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NAME))->SetReadOnly(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_TYPE)->EnableWindow(false); if ( m_lModifyType==2 || m_lModifyType==3 ) //添加与修改,不能改备注 { ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_BZ))->SetReadOnly(true); } if ( m_lModifyType==1 ) { SetWindowText(_T("群组设置 - 修改群组")); ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_BZ))->SetReadOnly(false); if ( m_Data.lMobileCount> m_lMaxMobileCount ) { GetDlgItem(IDD_QXBOX_GROUP_MODIFY_MOBILE_S)->SetWindowText(_T("号码列表,只显示部分")); } else { if ( m_Data.lType ==1 ) //Q信群 GetDlgItem(IDD_QXBOX_GROUP_MODIFY_MOBILE_S)->SetWindowText(_T("号码列表(群成员最大99人)")); else GetDlgItem(IDD_QXBOX_GROUP_MODIFY_MOBILE_S)->SetWindowText(_T("号码列表")); } if ( m_Data.lType ==0 )//通知群,不能修改号码 { GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUM)->EnableWindow(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUMADD)->EnableWindow(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_LIST)->EnableWindow(true); } if ( m_Data.lType==1 ) //Q信群,可以修改号码 { GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUM)->EnableWindow(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUMADD)->EnableWindow(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_LIST)->EnableWindow(true); m_bModifyMobile = true; } } if ( m_lModifyType==2 ) { SetWindowText(_T("群组设置 - 添加号码")); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_MOBILE_S)->SetWindowText(_T("号码列表,新增号码")); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUM)->EnableWindow(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUMADD)->EnableWindow(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_LIST)->EnableWindow(true); m_bModifyMobile = true; } if ( m_lModifyType==3 ) { SetWindowText(_T("群组设置 - 删除号码")); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_MOBILE_S)->SetWindowText(_T("号码列表,删除号码")); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUM)->EnableWindow(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUMADD)->EnableWindow(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_LIST)->EnableWindow(true); m_bModifyMobile = true; } } UpdateData(false); ShowWindow(SW_SHOW); m_wndList.ShowWindow(SW_HIDE); m_wndList.DeleteAllItems(); for ( int i=0 ; iRefreshListCount(); m_bModify = false; return 0; } int DLG_QXBox_Group_Modify::SetParam(CWnd * pParent,ANS_QXBox_Group_SeeData data, long lModifyType,ANS_QXBox_Group_MobileData * pMobile,long lMobileCount,CString strCM) { m_pDlg = (CFQXBox_Group *)pParent; m_lModifyType = lModifyType; m_Data = data; m_pMobile = pMobile; m_lMobileCount = lMobileCount; m_strCM = strCM; m_strCM.Replace(_T("[") , _T("")); m_strCM.Replace(_T("]") , _T("")); m_strCM.Replace(_T("【") , _T("")); m_strCM.Replace(_T("】") , _T("")); return 0; } ANS_QXBox_Group_SeeData DLG_QXBox_Group_Modify::GetParam(void) { return ANS_QXBox_Group_SeeData(m_Data); } int DLG_QXBox_Group_Modify::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialogEx::OnCreate(lpCreateStruct) == -1) return -1; m_UserDrop.Register(this); return 0; } LRESULT DLG_QXBox_Group_Modify::OnDrop(WPARAM wParam, LPARAM lParm) { if ( !m_bModifyMobile ) //不支持编辑号码 { //MessageBox( _T("对不起,已发的列表不能再添加发送号码!") , _T("错误") , MB_ICONWARNING ); return false; } COleDataObject * pData = (COleDataObject *)wParam; UINT iCF = ::RegisterClipboardFormat( _T("CORPSMS_USER") ); if( pData->IsDataAvailable( iCF ) ) { HGLOBAL hMem = pData->GetGlobalData( iCF ); BYTE * lp = (BYTE *)GlobalLock((HGLOBAL) hMem);//lock source if (lp != NULL) { long * plCount = (long *)lp; Send_User * pUser = (Send_User *)(lp+sizeof(long)); m_wndList.ShowWindow( SW_HIDE ); //加快显示速度 for ( int i = 0 ; i<*plCount;i++ ) { /* if ( i==0 && CString(pUser[i].szNickName)==CString(_T("任务号码组")) && CString(pUser[i].szGroup)==CString(_T("公用通讯录")) ) { if ( m_B_Task.GetCheck() ) { AddUser( pUser[i] ); break; } else { pUser ++; continue; //跳过 } } */ AddUser( *pUser ); pUser ++; } m_wndList.ShowWindow( SW_SHOW ); //加快显示速度 RefreshListCount(); //刷新显示列表上的记录计数 } GlobalUnlock( hMem );//unlock source return TRUE; } return true; } void DLG_QXBox_Group_Modify::OnBnClickedQxboxGroupModifyNumadd() { long lLen=m_E_Num.GetWindowTextLength(); TCHAR * szBuf = new TCHAR[lLen+10]; m_E_Num.GetWindowText( szBuf , lLen+10 ); if ( _tcslen( szBuf ) <=0 ) { MessageBox( _T("请先输入要添加的手机号码!") , _T("错误") , MB_ICONWARNING ); m_E_Num.SetFocus(); delete szBuf; return ; } _tcscat( szBuf , _T(";;") ); TCHAR szMobile[64]={0}; long i=0; long lCount = 0; while( GetReqMess( szBuf , szMobile , i , ';' , _tcslen(szBuf)) ) { ExMobileGZM(szMobile); //去除国际码 if ( isMobileNum( szMobile ) ) //找到新号码 { lCount ++; Send_User user={0}; _tcscpy( user.szMobile , szMobile ); AddUser(user); } memset(szMobile , 0 , sizeof(szMobile) ); i++; } m_E_Num.SetWindowText(_T("")); m_E_Num.SetFocus(); if ( lCount <= 0 ) { MessageBox( _T("手机号码输入有误!\r\n多个号码请以\";\"号隔开!") , _T("错误") , MB_ICONWARNING ); } else { RefreshListCount(); //刷新显示列表上的记录计数 } delete szBuf; } void DLG_QXBox_Group_Modify::AddUser(Send_User user,long lItem) { ExChar(user.szMobile,_T(" ")); ExChar(user.szMobile,_T("\r")); ExChar(user.szMobile,_T("\n")); ExChar(user.szMobile,_T("\t")); ExMobileGZM(user.szMobile); //去除国际码 if ( !isMmsNum( user.szMobile ) ) //不是手机号码,不用添加或修改 return ; if ( lItem<0 ) { lItem = m_wndList.GetItemCount(); if ( m_lType==1 && lItem>=m_lMaxMobileCount ) //Q信群最多1000个号码 { return ; } if ( lItem>=100000 ) //通知群最多10万个号码 { return ; } if ( m_strSort.Add(user.szMobile) ) //加入成功,否则为重复 { m_wndList.InsertItem( lItem , user.szName ); m_wndList.SetItemText( lItem,1,user.szMobile ); } else return ; } else { CString OldMobile = m_wndList.GetItemText( lItem,1 ); if ( OldMobile != CString(user.szMobile) ) { if ( m_strSort.Add(user.szMobile) ) //加入成功,否则为重复 { m_strSort.Del(OldMobile); m_wndList.SetItemText( lItem,0,user.szName ); m_wndList.SetItemText( lItem,1,user.szMobile ); } } else { m_wndList.SetItemText( lItem,0,user.szName ); } } if (user.szStatus[0] == '1' ) m_wndList.SetItemText( lItem,2,_T("正常") ); else m_wndList.SetItemText( lItem,2,_T("在操作") ); m_bModify = true; } void DLG_QXBox_Group_Modify::RefreshListCount() { long lCount = m_wndList.GetItemCount(); CString strMsg; strMsg.Format( _T("%d") , lCount ); m_S_ListCount.SetWindowText( strMsg ); } BOOL DLG_QXBox_Group_Modify::PreTranslateMessage(MSG* pMsg) { //此举是为了用户在输入号码时按了回车然后转到输入内容 if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) { if ( pMsg->hwnd == m_E_Num ) { OnBnClickedQxboxGroupModifyNumadd(); return true; } } return CDialogEx::PreTranslateMessage(pMsg); } void DLG_QXBox_Group_Modify::OnNMRClickQxboxGroupModifyList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); *pResult = 0; ShowRMenu(); } void DLG_QXBox_Group_Modify::ShowRMenu() { if ( !m_bModifyMobile ) //不能编辑号码 return ; long lItem = GetCurrentSelected(); CMenu menu; menu.CreatePopupMenu(); menu.AppendMenu(MF_STRING , QQBOX_GROUP_USER_ADD, _T(" 添加号码 ") ); menu.AppendMenu(MF_SEPARATOR ); //修改 if (lItem >=0) { menu.AppendMenu(MF_STRING , QQBOX_GROUP_USER_MODIFY, _T(" 修 改 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , QQBOX_GROUP_USER_MODIFY , _T(" 修 改 ") ); } //删除 if ( lItem >=0 ) { menu.AppendMenu(MF_STRING , QQBOX_GROUP_USER_DEL, _T(" 删 除 ") ); } else { menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , QQBOX_GROUP_USER_DEL , _T(" 删 除 ") ); } //清空 menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , QQBOX_GROUP_USER_CLEAR, _T(" 清 空 ") ); menu.AppendMenu(MF_SEPARATOR ); menu.AppendMenu(MF_STRING , QQBOX_GROUP_USER_CLEAR_INPORT, _T(" 导入列表 ") ); menu.AppendMenu(MF_STRING , QQBOX_GROUP_USER_CLEAR_EXPORT, _T(" 导出列表 ") ); //显示菜单 POINT pt ; ::GetCursorPos( &pt ); //this->ClientToScreen( &pt); menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL); menu.DestroyMenu(); } void DLG_QXBox_Group_Modify::On_User_Add() { Send_User user={0}; DLG_Send_User dlg(this); dlg.SetParam( user ); dlg.SetEditType(4); //QQ通讯录 if ( dlg.DoModal() == IDOK ) { m_bModify = true; //已修改 user = dlg.GetParam(); AddUser( user ); RefreshListCount(); //刷新显示列表上的记录计数 } } void DLG_QXBox_Group_Modify::OnNMDblclkQxboxGroupModifyList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); *pResult = 0; On_User_Modify(); } void DLG_QXBox_Group_Modify::On_User_Modify() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) return ; Send_User user = GetUser(lItem); DLG_Send_User dlg(this); dlg.SetParam( user ); dlg.SetEditType(4); //QQ通讯录 if ( dlg.DoModal() == IDOK ) { if ( !m_bModifyMobile ) //不能编辑号码 return ; m_bModify = true; //已修改 user = dlg.GetParam(); AddUser( user , lItem ); //重新显示内容 } } void DLG_QXBox_Group_Modify::On_User_Del() { CString str; long lCount = m_wndList.GetSelectedCount(); long * pDel = new long[lCount+1]; memset( pDel , 0 , sizeof(long)*lCount); POSITION pos = m_wndList.GetFirstSelectedItemPosition(); long i=0; while ( pos ) { pDel[i] = m_wndList.GetNextSelectedItem(pos); i++; } if ( m_Data.lType==1 && m_lModifyType==1 && (i+m_lDeleteCount)>1 ) { MessageBox(_T("讨论组模式下,每次只能踢出一人!") , _T("错误"),MB_ICONWARNING); return ; } m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 for ( i = 0 ; i< lCount ; i++ ) { Send_User user = GetUser(pDel[lCount-i-1]); m_wndList.DeleteItem( pDel[lCount-i-1] ); m_strSort.Del(user.szMobile); m_lDeleteCount ++; } m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 delete pDel; m_bModify = true;//已修改过 RefreshListCount(); //刷新显示列表上的记录计数 } void DLG_QXBox_Group_Modify::On_User_Clear() { m_wndList.ShowWindow( SW_HIDE ); //为了加快显示速度 m_wndList.DeleteAllItems(); m_strSort.Clear(); m_wndList.ShowWindow( SW_SHOW ); //为了加快显示速度 RefreshListCount(); //刷新显示列表上的记录计数 m_bModify = true;//已修改过 } void DLG_QXBox_Group_Modify::On_User_Inport() { m_wndList.ShowWindow(SW_HIDE); //加快显示速度 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),11); //DLG_Send_Inport dlg(this); //dlg.SetInport(true); dlg.DoModal(); RefreshListCount(); //刷新显示列表上的记录计数 m_wndList.ShowWindow(SW_SHOW); //加快显示速度 } void DLG_QXBox_Group_Modify::On_User_Export() { DLG_Send_Inport dlg(this); dlg.SetInport(false); dlg.SetType(4); //QQ通讯录 dlg.DoModal(); } Send_User DLG_QXBox_Group_Modify::GetUser(long lItem, BOOL bDelay) { Send_User user={0}; TCHAR szStatus[16]={0}; m_wndList.GetItemText( lItem , 0 , user.szName , sizeof(user.szName)-1); m_wndList.GetItemText( lItem , 1 , user.szMobile , sizeof(user.szMobile)-1 ); return user; } long DLG_QXBox_Group_Modify::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } int DLG_QXBox_Group_Modify::SendNextMobile(void) { long lMaxUpload = 200; ANS_QXBox_Group_MobileData * pMobile = new ANS_QXBox_Group_MobileData[lMaxUpload+1]; memset(pMobile , 0 , sizeof(ANS_QXBox_Group_MobileData) * (lMaxUpload+1) ); long lGetCount=0; long lCount = m_wndList.GetItemCount(); for ( int i=m_lMobileGetItem ; i< lCount ; i++ ) { Send_User user = GetUser(i); _tcscpy(pMobile[lGetCount].szName , user.szName); _tcscpy(pMobile[lGetCount].szMobile , user.szMobile); lGetCount++; m_lMobileGetItem ++; if ( lGetCount>= lMaxUpload ) break; } long lProcessBegin = m_lMobileGetItem; long lProcessAll = lCount; if ( lProcessAll<0 ) { lProcessAll = 2; } if ( lProcessBegin<0 || lProcessBegin>=lCount ) { lProcessBegin = lProcessAll-1; } m_DlgProcess.SetProcess( lProcessAll,lProcessBegin ); //设置进度条 long lSize = sizeof(REQ_QXBox_Group_Mobile) + sizeof(ANS_QXBox_Group_MobileData)*lGetCount; BYTE * pData = new BYTE[lSize]; memset(pData , 0 , lSize); REQ_QXBox_Group_Mobile * pGroup = (REQ_QXBox_Group_Mobile * )pData; ANS_QXBox_Group_MobileData * pGroupMobile = (ANS_QXBox_Group_MobileData * )(pData+sizeof(REQ_QXBox_Group_Mobile)); pGroup->lCorpID = m_Data.lCorpID; pGroup->lUserID = m_Data.lUserID; pGroup->lItem = m_Data.lItem; pGroup->lRtx_GroupID = m_Data.lRtx_GroupID; pGroup->lType = 1; //添加 pGroup->lMobileCount = lGetCount; if ( this->m_lModifyType ==3 ) pGroup->lType = 2; //删除 if ( lGetCount<=0 ) { pGroup->bEnd = true; } memcpy(pGroupMobile,pMobile , sizeof(ANS_QXBox_Group_MobileData)*lGetCount); delete pMobile; if ( m_pDlg ) { m_pDlg->m_pMainFrame->SendFrame(SMSFUNC_QXBOX_GROUP_MOBILE , pData , lSize); } return 0; } BOOL DLG_QXBox_Group_Modify::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame) { CString str; if ( pHead->lFuncType == SMSFUNC_QXBOX_GROUP_MOBILE) //正在取用户信息 { if ( m_bShowProcess ) { ANS_QXBox_Group_Mobile * pSee = (ANS_QXBox_Group_Mobile *)pFrame; //ANS_QXBox_Group_MobileData * pSeeData = (ANS_QXBox_Group_MobileData *)(pFrame+sizeof(REQ_QXBox_Group_Mobile)); if ( pSee->bEnd ) //结束了 { m_DlgProcess.SetProcess( 5 , 5 ); } else { this->SendNextMobile(); } } return true; } return false; } void DLG_QXBox_Group_Modify::OnCbnSelchangeQxboxGroupModifyType() { if ( !UpdateData(true) ) return ; if ( m_lType ==1 ) //Q信群 { GetDlgItem(IDD_QXBOX_GROUP_MODIFY_MOBILE_S)->SetWindowText(_T("号码列表(群成员最大99人)")); ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NAME))->SetReadOnly(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_TYPE)->EnableWindow(true); ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_BZ))->SetReadOnly(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUM)->EnableWindow(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUMADD)->EnableWindow(true); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_LIST)->EnableWindow(true); m_bModifyMobile =true; //m_wndList.DeleteAllItems(); } else { GetDlgItem(IDD_QXBOX_GROUP_MODIFY_MOBILE_S)->SetWindowText(_T("号码列表,群组生成后才能添加")); ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NAME))->SetReadOnly(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_TYPE)->EnableWindow(true); ((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_MODIFY_BZ))->SetReadOnly(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUM)->EnableWindow(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_NUMADD)->EnableWindow(false); GetDlgItem(IDD_QXBOX_GROUP_MODIFY_LIST)->EnableWindow(false); m_bModifyMobile =false; } } void DLG_QXBox_Group_Modify::OnBnClickedQxboxGroupModifyHeaddataS() { TCHAR szFile[ 256 ]={0}; TCHAR szFileB[ 256 ]={0}; *szFileB = NULL; OPENFILENAME sOpen; sOpen.lStructSize = sizeof( sOpen ); sOpen.hwndOwner = this->m_hWnd ; sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY; sOpen.lpstrFilter = _T("图片文件\0*.jpg*;*.bmp*;*.gif*\0"); sOpen.lpstrDefExt = _T(""); 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 ) ) { CString strName = sOpen.lpstrFile; CString strTemp = strName; CString strTemp2; strTemp.MakeUpper(); //判断文件扩展名是否正确 if ( !(strTemp.Find(_T(".BMP"))>0 || strTemp.Find(_T(".JPG"))>0 || strTemp.Find(_T(".GIF"))>0) ) //为Excel格式的文件 { MessageBox(_T("只支持发送图片文件,请重新选择"),_T("错误"),MB_ICONWARNING); return ; } //判断文件大小是否正确 CFileStatus status; CFile::GetStatus(strName,status); if ( status.m_size > m_lMaxImageSize) { MessageBox(_T("图片文件过大,无法发送,请重新选择") , _T("错误"),MB_ICONWARNING); return ; } if ( !UpdateData(true) ) return ; m_strHeadData = strName; UpdateData(false); } }