CorpSms/DLG_QXBox_Group_Modify.cpp
2025-02-27 16:58:16 +08:00

921 lines
26 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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);
}
}