921 lines
26 KiB
C++
921 lines
26 KiB
C++
// 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 ; i<m_lMobileCount ; i++ )
|
||
{
|
||
Send_User user={0};
|
||
_tcscpy(user.szMobile,m_pMobile[i].szMobile);
|
||
_tcscpy(user.szName,m_pMobile[i].szName);
|
||
if ( m_pMobile[i].lStatus ==1 )
|
||
user.szStatus[0]='1';
|
||
AddUser(user);
|
||
}
|
||
m_wndList.ShowWindow(SW_SHOW);
|
||
|
||
this->RefreshListCount();
|
||
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<LPNMITEMACTIVATE>(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<LPNMITEMACTIVATE>(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);
|
||
}
|
||
}
|