CorpSms/FQXBox_Group.cpp
lujiang e17c4ce7ed 重新对窗口布局进行优化,解决缺字的情况。
对图标显示进行了优化,使用gdi+按DPI进行缩放。
2025-04-14 17:24:47 +08:00

1334 lines
35 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.

// FQXBox_Group.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "FQXBox_Group.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFQXBox_Group dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "..\public\ProxySocket\CBase64Coding.hpp"
CFQXBox_Group::CFQXBox_Group(CWnd* pParent /*=NULL*/)
: CDialog(CFQXBox_Group::IDD, pParent)
{
//{{AFX_DATA_INIT(CFQXBox_Group)
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_bShowToday = true;
m_bShowProcess = false;
m_bSendType = 0; //直接窗口发送,1-聊天窗口发送
m_bSending = false;
}
void CFQXBox_Group::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFQXBox_Group)
DDX_Control(pDX, IDC_QXBOX_GROUP_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFQXBox_Group, CDialog)
//{{AFX_MSG_MAP(CFQXBox_Group)
ON_WM_SIZE()
ON_NOTIFY(NM_DBLCLK, IDC_QXBOX_GROUP_LIST, OnDblclkSmsdsList)
ON_NOTIFY(NM_RCLICK, IDC_QXBOX_GROUP_LIST, OnRclickSmsdsList)
ON_NOTIFY(LVN_KEYDOWN, IDC_QXBOX_GROUP_LIST, OnKeydownSmsdsList)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
ON_COMMAND(MENU_QXBOX_GROUP_ADD , On_DS_Add )
ON_COMMAND(MENU_QXBOX_GROUP_MODIFY , On_DS_Modify )
ON_COMMAND(MENU_QXBOX_GROUP_DEL , On_DS_Del )
ON_COMMAND(MENU_QXBOX_GROUP_SEND , On_DS_Send )
ON_COMMAND(MENU_QXBOX_GROUP_CHAT , On_DS_Chat )
ON_COMMAND(MENU_QXBOX_GROUP_REFRESH, On_DS_Refresh )
ON_COMMAND(MENU_QXBOX_GROUP_MOBILEADD , On_DS_MobileAdd )
ON_COMMAND(MENU_QXBOX_GROUP_MOBILEDEL , On_DS_MobileDel )
ON_COMMAND(MENU_QXBOX_GROUP_RESTART , On_DS_Restart )
ON_COMMAND(MENU_QXBOX_GROUP_CANCEL , On_DS_Cancel )
ON_WM_TIMER()
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFQXBox_Group message handlers
BOOL CFQXBox_Group::OnInitDialog()
{
CDialog::OnInitDialog();
//取得共用参数
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
//初始化List
m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_QXGROUP_TZ) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_QXGROUP_QZ) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("序号,50; 状态,90;类型,70; 群组名称,160;号码数,70;备注,200;最后操作信息,200;创建用户,90;创建时间,120;"));
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_wndModify.SetMainFrame( pFrame );
m_wndModify.Create(IDD_QXBOX_GROUP_MODIFY , this);
m_wndModify.CenterWindow();
m_bInit = true;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFQXBox_Group::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
BOOL CFQXBox_Group::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFQXBox_Group::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CFQXBox_Group::RefreshInfo()
{
REQ_QXBox_Group_See * pSee = new REQ_QXBox_Group_See;
memset(pSee , 0 , sizeof(REQ_QXBox_Group_See));
pSee->lCorpID = m_pMainFrame->m_lCorpID;
pSee->lUserID = m_pMainFrame->m_lUserID;
m_pMainFrame->SendFrame( SMSFUNC_QXBOX_GROUP_SEE , (BYTE*)pSee , sizeof( REQ_QXBox_Group_See ) ); //发送取资料的请求
return true;
}
long CFQXBox_Group::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
BOOL CFQXBox_Group::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
m_bRefresh = true; //已刷新过
CString str;
if ( pHead->lFuncType == SMSFUNC_QXBOX_GROUP_SEE) //正在取用户信息
{
ANS_QXBox_Group_See * pSee = (ANS_QXBox_Group_See *)pFrame;
ANS_QXBox_Group_SeeData * pSeeData = (ANS_QXBox_Group_SeeData *)(pFrame+sizeof(ANS_QXBox_Group_See));
CString strTemp;
if ( pSee->lRtx_GroupID>0 && pSee->lCount==1) //只查一个号码,属于修改
{
if ( pSeeData->lStatus!=1 ) //状态不对,不可操作
return true;
ANS_QXBox_Group_MobileData * pMobileData = (ANS_QXBox_Group_MobileData *)(pFrame+sizeof(ANS_QXBox_Group_See) + sizeof(ANS_QXBox_Group_SeeData));
pSeeData->lItem = pSee->lItem;
m_wndModify.SetParam(this,*pSeeData,1,pMobileData,pSee->lMobileCount,this->m_pMainFrame->m_Ans_Login2.szQJCM);
m_wndModify.ShowData();
return true;
}
m_wndList.ShowWindow(SW_HIDE);
m_wndList.DeleteAllItems();
for ( int i = 0 ; i< pSee->lCount ; i++ )
{
ShowInList(-1,pSeeData);
pSeeData++;
}
m_wndList.ShowWindow(SW_SHOW);
return true;
}
if ( pHead->lFuncType == SMSFUNC_QXBOX_GROUP_ADD) //修改用户
{
ANS_QXBox_Group_Add * pAdd = (ANS_QXBox_Group_Add *)pFrame;
if ( pAdd->bOK )
{
ShowInList(-1,&pAdd->qxGroup);
}
else
{
str.Format( _T("添加群组失败:%s") , pAdd->szErrMsg );
MessageBox(str , _T("错误") , MB_ICONWARNING );
}
return true;
}
if ( pHead->lFuncType == SMSFUNC_QXBOX_GROUP_MODIFY) //修改用户
{
ANS_QXBox_Group_Modify * pModify = (ANS_QXBox_Group_Modify *)pFrame;
if ( pModify->bOK )
{
if ( pModify->lItem == -100 ) //删除记录
{
this->RefreshInfo();
}
else
{
ShowInList(pModify->lItem,&pModify->qxGroup);
}
}
else
{
str.Format( _T("修改群组失败:%s") , pModify->szErrMsg );
MessageBox(str , _T("错误") , MB_ICONWARNING );
}
return true;
}
//删除用户
if (pHead->lFuncType == SMSFUNC_QXBOX_GROUP_DEL)
{
this->RefreshInfo(); //重新删除状态
/*
ANS_PLFile_Del * pDel = (ANS_PLFile_Del *)pFrame;
ANS_PLFile_DelData * pDelData = (ANS_PLFile_DelData *)(pFrame+sizeof(ANS_PLFile_Del));
POSITION pos,pos2;
ANS_PLTaskMms_SeeData * pPLFileData;
for ( int i = pDel->lCount-1 ; i>=0 ; i-- )
{
if ( pDelData[i].lPLFileID ) //删除成功
{
pos = (POSITION)m_wndList.GetItemData( pDelData[i].lItem );
pos2 = pos;
pPLFileData = m_PLFile.GetNext( pos );
if ( pPLFileData->lPLFileID == pDelData[i].lPLFileID ) //ID相同的才可删除
{
delete pPLFileData; //先删除数据
m_PLFile.RemoveAt(pos2); //从列表中删除
m_wndList.DeleteItem(pDelData[i].lItem); //从ListCtrl中删除
}
}
}
return true;
*/
}
if ( pHead->lFuncType == SMSFUNC_QXBOX_GROUP_MOBILE )
{
return this->m_wndModify.ProcessSocket(pHead, pFrame);
}
if ( pHead->lFuncType == SMSFUNC_QXBOX_GROUP_SEND )
{
ANS_QXBox_Group_Send * pSend = (ANS_QXBox_Group_Send *)pFrame;
if ( pSend->bOK && pSend->ret.lRtx_GroupTaskID>0 )
{
//这里需要这发送日志写入数据库
CString strTimer=_T("NULL");
CString strSubTime=_T("NULL");
if ( COleDateTime(pSend->ret.tTimer).GetStatus() == COleDateTime::valid)
{
strTimer.Format(_T("#%04d-%02d-%02d %02d:%02d:%02d#") , pSend->ret.tTimer.wYear,pSend->ret.tTimer.wMonth,pSend->ret.tTimer.wDay,pSend->ret.tTimer.wHour,pSend->ret.tTimer.wMinute,pSend->ret.tTimer.wSecond);
}
if ( COleDateTime(pSend->ret.tSubTime).GetStatus() == COleDateTime::valid)
{
strSubTime.Format(_T("#%04d-%02d-%02d %02d:%02d:%02d#") , pSend->ret.tSubTime.wYear,pSend->ret.tSubTime.wMonth,pSend->ret.tSubTime.wDay,pSend->ret.tSubTime.wHour,pSend->ret.tSubTime.wMinute,pSend->ret.tSubTime.wSecond);
}
CString strDataMsg;
if ( pSend->ret.lMsgDataType==0 )
strDataMsg = m_strEndSendMsg; //最后发送的内容
if ( pSend->ret.lMsgDataType==1 )
{
strDataMsg = pSend->ret.szMsgImageName;
CFile file;
if ( file.Open(pSend->ret.szMsgImageName , CFile::modeRead|CFile::shareDenyNone ) )
{
DWORD lSize = (DWORD)file.GetLength();
if ( lSize<200 * 1024 )
{
BYTE * pData = new BYTE[lSize];
file.Read(pData , lSize);
CBase64Coding base64coding;
base64coding.Encode(pData,lSize,strDataMsg);
delete pData;
}
}
}
CString str;
str.Format(_T("insert into QXLog (Rtx_GroupTaskID,Mobile,Sender,Rtx_GroupID,GroupID,GroupName,Status,Timer,MsgType,MsgDataType,MobileAll,MobileSent,SubTime,MsgData) values (%d,'%s','%s',%d,'%s','%s',%d,%s,%d,%d,%d,%d,%s,'%s')"),
pSend->ret.lRtx_GroupTaskID,
SqlStr(pSend->ret.szMobile),
SqlStr(pSend->ret.szSender),
pSend->ret.lRtx_GroupID,
pSend->ret.szGroupID,
SqlStr(pSend->ret.szGroupName),
pSend->ret.lStatus,
strTimer,
0, //发送
pSend->ret.lMsgDataType,
pSend->ret.lMobileAll,
pSend->ret.lMobileSent,
strSubTime,
SqlStr(strDataMsg));
m_AdoRS.Open(str);
if ( pSend->ret.lMsgDataType==1 && ! pSend->ret.bEnd ) //发送图片,并且未发送完成,需要补发数据
{
this->SendNextImage(pSend->ret.lRtx_GroupTaskID);
}
else
{
m_bSending = false;
KillTimer(1); //停止超时检测
}
}
else
{
str.Format( _T("发送信息失败:%s") , pSend->szErrMsg );
MessageBox(str , _T("错误") , MB_ICONWARNING );
}
return true;
}
if ( pHead->lFuncType == SMSFUNC_QXBOX_GROUP_SENDIMAGE )
{
ANS_QXBox_Group_SendImage * pSend = (ANS_QXBox_Group_SendImage *)pFrame;
if ( pSend->lRtx_GroupTaskID>0 )
{
if ( !pSend->bEnd ) //发送图片,并且未发送完成,需要补发数据
{
this->SendNextImage(pSend->lRtx_GroupTaskID);
}
else
{
m_bSending = false;
KillTimer(1); //停止超时检测
}
}
return true;
}
return false;
}
void CFQXBox_Group::SetToday(BOOL bToday)
{
if ( m_bShowToday != bToday )
{
m_bShowToday = bToday;
m_bRefresh = false;
}
}
void CFQXBox_Group::OnDblclkSmsdsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_DS_Modify();
}
void CFQXBox_Group::OnRclickSmsdsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CFQXBox_Group::OnKeydownSmsdsList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
*pResult = 0;
if ( pLVKeyDow->wVKey == VK_DELETE )
{
On_DS_Del();
}
if ( pLVKeyDow->wVKey == VK_SPACE)
{
On_DS_Modify();
}
if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r')
{
On_DS_Refresh();
}
if ( pLVKeyDow->wVKey == 'A' || pLVKeyDow->wVKey == 'a')
{
m_wndList.SelectAllItems();
}
}
void CFQXBox_Group::OnOK()
{
//CDialog::OnOK();
}
void CFQXBox_Group::OnCancel()
{
//CDialog::OnCancel();
}
void CFQXBox_Group::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
long lItem = this->GetCurrentSelected();
ANS_QXBox_Group_SeeData * pSeeData = NULL;
BOOL bOper=false;
if ( lItem >= 0 )
{
if ( m_wndList.GetItemData(lItem) >0 )
{
pSeeData = m_qxGroup.GetAt((POSITION)m_wndList.GetItemData(lItem));
if ( pSeeData && pSeeData->lStatus==1 ) //可操作
bOper = true;
}
}
if ( m_pMainFrame->GetUserPurview( PURVIEW_GADDRESS_ADD,false ) )
{
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_ADD , _T(" 添加新群组 ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QXBOX_GROUP_ADD , _T(" 添加新群组 ") );
}
menu.AppendMenu(MF_SEPARATOR );
if ( lItem >= 0 && pSeeData && bOper && m_pMainFrame->GetUserPurview( PURVIEW_GADDRESS_MODIFY,false ) )
{
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_MODIFY , _T(" 修 改 ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QXBOX_GROUP_MODIFY , _T(" 修 改 ") );
}
if ( lItem >= 0 && pSeeData && bOper && m_pMainFrame->GetUserPurview( PURVIEW_GADDRESS_DEL,false ))
{
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_DEL , _T(" 删 除 ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QXBOX_GROUP_DEL, _T(" 删 除 ") );
}
menu.AppendMenu(MF_SEPARATOR );
if ( lItem>=0 && pSeeData && pSeeData->lStatus==2 )
{
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_RESTART , _T(" 重启操作 ") );
}
if ( lItem>=0 && pSeeData && pSeeData->lStatus==2 ) //注销与修改号码可以取消操作
{
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_CANCEL , _T(" 取消操作 ") );
}
if ( lItem>=0 && pSeeData && pSeeData->lType==0 ) //通知群,需要删除修改号码
{
if ( lItem >= 0 && pSeeData && bOper && m_pMainFrame->GetUserPurview( PURVIEW_GADDRESS_MODIFY,false ) )
{
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_MOBILEADD , _T(" 添加号码 ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QXBOX_GROUP_MODIFY , _T(" 添加号码 ") );
}
if ( lItem >= 0 && pSeeData && bOper && m_pMainFrame->GetUserPurview( PURVIEW_GADDRESS_DEL,false ))
{
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_MOBILEDEL , _T(" 删除号码 ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_QXBOX_GROUP_MOBILEDEL, _T(" 删除号码 ") );
}
menu.AppendMenu(MF_SEPARATOR );
}
if ( lItem >= 0 && pSeeData && bOper && pSeeData->lMobileCount>0 && m_pMainFrame->GetUserPurview( PURVIEW_SENDP,false ))
{
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_SEND , _T(" 发送信息 ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_STRING , MENU_QXBOX_GROUP_SEND , _T(" 发送短信 ") );
}
if ( lItem >= 0 && pSeeData && pSeeData->lMobileCount>0 && m_pMainFrame->GetUserPurview( PURVIEW_SENDP,false ))
{
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_CHAT , _T(" 收发日志 ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_STRING , MENU_QXBOX_GROUP_CHAT , _T(" 收发日志 ") );
}
//刷新
menu.AppendMenu(MF_STRING , MENU_QXBOX_GROUP_REFRESH, _T(" 刷 新 ") );
//显示菜单
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
void CFQXBox_Group::On_DS_Add()
{
ANS_QXBox_Group_SeeData data={0};
m_wndModify.SetParam(this,data,0,NULL,0,this->m_pMainFrame->m_Ans_Login2.szQJCM);
m_wndModify.ShowData();
}
void CFQXBox_Group::On_DS_MobileAdd()
{
long lItem = this->GetCurrentSelected();
ANS_QXBox_Group_SeeData * pSeeData = NULL;
if ( lItem >= 0 )
{
if ( m_wndList.GetItemData(lItem) >0 )
{
pSeeData = m_qxGroup.GetAt((POSITION)m_wndList.GetItemData(lItem));
}
}
if ( pSeeData )
{
if (pSeeData->lType==0 && pSeeData->lStatus!=1 ) //状态不对,不可操作
return ;
m_wndModify.SetParam(this,*pSeeData,2,NULL,0,this->m_pMainFrame->m_Ans_Login2.szQJCM); //新增号码
m_wndModify.ShowData();
}
}
void CFQXBox_Group::On_DS_MobileDel()
{
long lItem = this->GetCurrentSelected();
ANS_QXBox_Group_SeeData * pSeeData = NULL;
if ( lItem >= 0 )
{
if ( m_wndList.GetItemData(lItem) >0 )
{
pSeeData = m_qxGroup.GetAt((POSITION)m_wndList.GetItemData(lItem));
}
}
if ( pSeeData )
{
if (pSeeData->lType==0 && pSeeData->lStatus!=1 ) //状态不对,不可操作
return ;
m_wndModify.SetParam(this,*pSeeData,3,NULL,0,this->m_pMainFrame->m_Ans_Login2.szQJCM); //删除号码
m_wndModify.ShowData();
}
}
void CFQXBox_Group::On_DS_Modify()
{
long lItem = this->GetCurrentSelected();
ANS_QXBox_Group_SeeData * pSeeData = NULL;
if ( lItem >= 0 )
{
if ( m_wndList.GetItemData(lItem) >0 )
{
pSeeData = m_qxGroup.GetAt((POSITION)m_wndList.GetItemData(lItem));
}
}
if ( pSeeData )
{
if ( pSeeData->lStatus!=1 ) //状态不对,不可操作
return ;
REQ_QXBox_Group_See * pSee = new REQ_QXBox_Group_See;
memset(pSee , 0 , sizeof(REQ_QXBox_Group_See));
pSee->lCorpID = m_pMainFrame->m_lCorpID;
pSee->lUserID = m_pMainFrame->m_lUserID;
pSee->lRtx_GroupID = pSeeData->lRtx_GroupID;
pSee->lItem = lItem;
m_pMainFrame->SendFrame( SMSFUNC_QXBOX_GROUP_SEE , (BYTE*)pSee , sizeof( REQ_QXBox_Group_See ) ); //发送取资料的请求
}
}
void CFQXBox_Group::On_DS_Del()
{
long lRet = MessageBox( _T("确实要删除选中的记录吗?"),_T("提问"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
if ( lRet != IDYES )
return ;
long lCount = m_wndList.GetSelectedCount();
if ( lCount<=0 )
return ;
long lSize = sizeof(REQ_QXBox_Group_Del)+sizeof(ANS_QXBox_Group_DelData)*lCount;
BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize);
REQ_QXBox_Group_Del * pDel = (REQ_QXBox_Group_Del *)pDelSend; //头
ANS_QXBox_Group_DelData * pDelData = (ANS_QXBox_Group_DelData *)(pDelSend+sizeof(REQ_QXBox_Group_Del));
pDel->lCorpID = m_pMainFrame->m_lCorpID;
pDel->lUserID = m_pMainFrame->m_lUserID;
pDel->lCount = 0;
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
while(pos)
{
long lItem = m_wndList.GetNextSelectedItem(pos);
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
if ( pos )
{
ANS_QXBox_Group_SeeData * pSeeData = m_qxGroup.GetAt(pos);
if ( pSeeData && ( pSeeData->lStatus == 1 || pSeeData->lStatus==2 ) )
{
pDelData->lItem = lItem;
pDelData->lRtx_GroupID = pSeeData->lRtx_GroupID;
pDel->lCount ++;
pDelData ++;
}
}
}
m_pMainFrame->SendFrame( SMSFUNC_QXBOX_GROUP_DEL , pDelSend , lSize );
}
BOOL CFQXBox_Group::On_DS_Chat_Show(REQ_QXBox_Group_SendData SendData,CString strMsg )
{
CSingleLock cl(&m_Chat_Lock,true);
BOOL bShow=false;
//先判断此群是否在打开之中。
long lCount = m_wndChat.GetCount();
for ( int i=0 ; i<lCount;i++ )
{
DLG_QXBox_Group_Chat * pDlg = m_wndChat.GetAt(i);
if ( pDlg && pDlg->m_GroupPro.lRtx_GroupID == SendData.lRtx_GroupID ) //号码相同
{
BOOL bSame = true;
if ( _tcslen(pDlg->m_GroupPro.szMobile)>0 )
{
if ( CString(SendData.szMobile) != CString(pDlg->m_GroupPro.szMobile) )
{
bSame =false;
}
}
if ( bSame )
{
pDlg->ShowChatLog2(SendData,strMsg,true);
pDlg->SetForegroundWindow();
pDlg->FlashWindow(false);
bShow = true;
}
}
}
return bShow;
}
BOOL CFQXBox_Group::On_DS_Chat_Add(ANS_QXBox_Group_SeeData SeeData)
{
CSingleLock cl(&m_Chat_Lock,true);
//先判断此群是否在打开之中。
long lCount = m_wndChat.GetCount();
for ( int i=0 ; i<lCount;i++ )
{
DLG_QXBox_Group_Chat * pDlg = m_wndChat.GetAt(i);
if ( pDlg && pDlg->m_GroupPro.lRtx_GroupID == SeeData.lRtx_GroupID ) //号码相同
{
BOOL bSame = true;
if ( CString(SeeData.szMobile) != CString(pDlg->m_GroupPro.szMobile) )
{
bSame =false;
}
if ( bSame )
{
pDlg->SetForegroundWindow();
pDlg->FlashWindow(false);
return true;
}
}
}
REQ_QXBox_Group_SendData send={0};
send.lCorpID = SeeData.lCorpID;
send.lUserID = SeeData.lUserID;
send.lRtx_GroupID = SeeData.lRtx_GroupID;
_tcscpy(send.szSender , SeeData.szCreateUser);
_tcscpy(send.szMobile , SeeData.szMobile);
_tcscpy(send.szGroupID , SeeData.szGroupID);
_tcscpy(send.szGroupName , SeeData.szName);
send.lStatus = 0;
send.lMsgType = 0; //发送
send.lMsgDataType = 0; //文本
send.lMobileAll = SeeData.lMobileCount;
GetLocalTime(&send.tSubTime);
long lMaxChatLog = 50;
REQ_QXBox_Group_SendData * pSendData = new REQ_QXBox_Group_SendData[lMaxChatLog];
memset(pSendData,0,sizeof(REQ_QXBox_Group_SendData)*lMaxChatLog);
CString * pSendMsg = new CString[lMaxChatLog];
CString str;
if ( _tcslen(SeeData.szMobile)>0 )
str.Format(_T("select top %d * from QXLog where Rtx_GroupID=%d and Mobile='%s' order by Subtime desc") , lMaxChatLog,SeeData.lRtx_GroupID,SeeData.szMobile );
else
str.Format(_T("select top %d * from QXLog where Rtx_GroupID=%d order by Subtime desc") , lMaxChatLog,SeeData.lRtx_GroupID );
m_AdoRS.Open(str);
CString strID;
int iIndex=0;
while (!m_AdoRS.IsEOF() )
{
long lQXLogID=0;
m_AdoRS.GetCollect(_T("QXLogID") , lQXLogID );
m_AdoRS.GetCollect(_T("MsgData") , pSendMsg[iIndex] );
m_AdoRS.GetCollect(_T("Rtx_GroupTaskID") , pSendData[iIndex].lRtx_GroupTaskID );
m_AdoRS.GetCollect(_T("Rtx_GroupID") , pSendData[iIndex].lRtx_GroupID );
m_AdoRS.GetCollect(_T("GroupID") , pSendData[iIndex].szGroupID );
m_AdoRS.GetCollect(_T("Mobile") , pSendData[iIndex].szMobile );
m_AdoRS.GetCollect(_T("Sender") , pSendData[iIndex].szSender );
m_AdoRS.GetCollect(_T("GroupName") , pSendData[iIndex].szGroupName );
m_AdoRS.GetCollect(_T("Status") , pSendData[iIndex].lStatus );
m_AdoRS.GetCollect(_T("CorpID") , pSendData[iIndex].lCorpID );
m_AdoRS.GetCollect(_T("UserID") , pSendData[iIndex].lUserID );
m_AdoRS.GetCollect(_T("Timer") , pSendData[iIndex].tTimer );
m_AdoRS.GetCollect(_T("MsgType") , pSendData[iIndex].lMsgType );
m_AdoRS.GetCollect(_T("MsgImageName") , pSendData[iIndex].szMsgImageName );
//m_AdoRS.GetCollect(_T("MsgImageLen") , pSendData[iIndex].lImageLen );
m_AdoRS.GetCollect(_T("MsgDataType") , pSendData[iIndex].lMsgDataType );
m_AdoRS.GetCollect(_T("MobileAll") , pSendData[iIndex].lMobileAll );
m_AdoRS.GetCollect(_T("MobileSent") , pSendData[iIndex].lMobileSent );
m_AdoRS.GetCollect(_T("SubTime") , pSendData[iIndex].tSubTime );
long lReader=1;
m_AdoRS.GetCollect(_T("Reader") ,lReader ); //更改已读与未读
if ( lReader==0 ) //未读的,改为已读
{
if ( strID.GetLength()>0 )
str.Format(_T(",%d") , lQXLogID);
else
str.Format(_T("%d") , lQXLogID);
strID = strID + str;
}
iIndex++;
m_AdoRS.MoveNext();
if ( iIndex>=lMaxChatLog )
break;
}
if (strID.GetLength()>0 )
{
str.Format(_T("update QXLog set Reader=1 where QXLogID in (%s)") , strID );
m_AdoRS.Open( str );
}
DLG_QXBox_Group_Chat * pDlg = new DLG_QXBox_Group_Chat(this);
pDlg->SetParam(send,pSendData,pSendMsg,iIndex);
pDlg->Create(IDD_QXBOX_GROUP_CHAT , GetDesktopWindow());
m_wndChat.Add(pDlg); //加入队列
pDlg->ShowWindow(SW_SHOW);
pDlg->SetForegroundWindow();
pDlg->FlashWindow(0);
return true;
}
void CFQXBox_Group::On_DS_Chat()
{
long lItem = this->GetCurrentSelected();
ANS_QXBox_Group_SeeData * pSeeData = NULL;
if ( lItem >= 0 )
{
if ( m_wndList.GetItemData(lItem) >0 )
{
pSeeData = m_qxGroup.GetAt((POSITION)m_wndList.GetItemData(lItem));
}
}
if ( pSeeData )
{
/*
if ( pSeeData->lStatus!=1 ) //状态不对,不可操作
return ;
*/
}
else
{
return ;
}
_tcscpy(pSeeData->szCreateUser,m_pMainFrame->m_pCurUser->szUser);
On_DS_Chat_Add(*pSeeData);
}
BOOL CFQXBox_Group::SendMsgData(REQ_QXBox_Group_SendData send,CString strMsgIn,CString strMsgImageName,long lSendType)
{
if ( send.lMsgDataType ==0 ) //文本
{
send.lMsgDataLen = (strMsgIn.GetLength()+1) * sizeof(TCHAR);
send.bEnd = true;
}
if ( send.lMsgDataType ==1 ) //图片
{
try
{
if (m_ImageFile.m_hFile != INVALID_HANDLE_VALUE )
m_ImageFile.Close(); //不管什么情况,先关闭
}
catch(...)
{
}
if ( !m_ImageFile.Open(strMsgImageName,CFile::modeRead|CFile::shareDenyNone) )
{
CString str;
str.Format(_T("打开图片文件失败:%s") ,strMsgImageName);
MessageBox(str, _T("错误") , MB_ICONWARNING );
return false;
}
long lLen = (long)m_ImageFile.GetLength();
long lSendLen=100*1024; //每次发送100k
if ( lLen<=lSendLen )
{
lSendLen = (long)lLen;
send.bEnd = true;
}
send.lMsgDataLen = lSendLen;
send.lImageLen = lLen;
}
if ( m_bSending )
{
MessageBox(_T("系统忙企Q通发送失败请稍后重试") , _T("错误") , MB_ICONWARNING );
return false;
}
m_bSending = true;
SetTimer(1,30000,NULL); //30秒后超时解释。
long lSize = sizeof(REQ_QXBox_Group_Send) +send.lMsgDataLen;
BYTE * pData = new BYTE[lSize];
memset(pData , 0 , lSize);
REQ_QXBox_Group_Send * pSend=(REQ_QXBox_Group_Send *)pData;
BYTE * pMsgData = pData + sizeof(REQ_QXBox_Group_Send);
pSend->lCorpID = m_pMainFrame->m_lCorpID;
pSend->lUserID = m_pMainFrame->m_lUserID;
pSend->send = send;
_tcscpy(pSend->send.szSender,this->m_pMainFrame->m_pCurUser->szUser);
if ( pSend->send.lMsgDataType ==0 ) //文本
{
_tcscpy((TCHAR*)pMsgData , strMsgIn );
m_strEndSendMsg = strMsgIn;
}
if ( pSend->send.lMsgDataType ==1 ) //图片
{
try
{
m_ImageFile.Read(pMsgData,send.lMsgDataLen);
if ( send.bEnd )
{
if (m_ImageFile.m_hFile != INVALID_HANDLE_VALUE )
m_ImageFile.Close();
}
}
catch(...)
{
}
m_strEndSendMsg = send.szMsgImageName;
}
m_bSendType = lSendType; //直接窗口发送
m_pMainFrame->SendFrame( SMSFUNC_QXBOX_GROUP_SEND , pData , lSize );
if ( send.lMsgDataType==1 && !send.bEnd && m_bSendType==0) //图片资料,并且未上传完成
{
m_bShowProcess = true;
m_DlgProcess.SetProcessTitle(_T("正在上传图片数据..."));
m_DlgProcess.SetProcess(send.lImageLen,0);
if ( m_DlgProcess.DoModal() != IDOK ) //显示进度栏
{
//取资料不成功
//return ;
}
m_bShowProcess = false;
}
return true;
}
void CFQXBox_Group::On_DS_Send()
{
long lItem = this->GetCurrentSelected();
ANS_QXBox_Group_SeeData * pSeeData = NULL;
if ( lItem >= 0 )
{
if ( m_wndList.GetItemData(lItem) >0 )
{
pSeeData = m_qxGroup.GetAt((POSITION)m_wndList.GetItemData(lItem));
}
}
if ( pSeeData )
{
if ( pSeeData->lStatus!=1 ) //状态不对,不可操作
return ;
DLG_QXBox_Group_Send dlg(this);
REQ_QXBox_Group_SendData send={0};
send.lCorpID = pSeeData->lCorpID;
send.lUserID = pSeeData->lUserID;
send.lRtx_GroupID = pSeeData->lRtx_GroupID;
_tcscpy(send.szSender , m_pMainFrame->m_pCurUser->szUser);
_tcscpy(send.szGroupID , pSeeData->szGroupID);
_tcscpy(send.szGroupName , pSeeData->szName);
send.lStatus = 0;
send.lMsgType = 0; //发送
send.lMsgDataType = 0; //文本
send.lMobileAll = pSeeData->lMobileCount;
GetLocalTime(&send.tSubTime);
m_strEndSendMsg = _T("");
dlg.SetParam(send,_T(""),0);
if ( dlg.DoModal() == IDOK )
{
send = dlg.GetParam();
SendMsgData(send,dlg.m_strMsgIn,send.szMsgImageName,0); //窗口直接发送
}
}
}
void CFQXBox_Group::On_DS_Refresh()
{
RefreshInfo();
}
void CFQXBox_Group::On_DS_Restart()
{
long lItem = this->GetCurrentSelected();
ANS_QXBox_Group_SeeData * pSeeData = NULL;
if ( lItem >= 0 )
{
if ( m_wndList.GetItemData(lItem) >0 )
{
pSeeData = m_qxGroup.GetAt((POSITION)m_wndList.GetItemData(lItem));
}
}
if ( pSeeData )
{
if ( pSeeData->lStatus!=2 ) //状态不对,不可操作
return ;
long lSize = sizeof(REQ_QXBox_Group_Modify);
BYTE * pData = new BYTE[lSize];
memset(pData , 0 , lSize);
REQ_QXBox_Group_Modify * pModify = (REQ_QXBox_Group_Modify*)pData;
ANS_QXBox_Group_MobileData * pMobile = (ANS_QXBox_Group_MobileData*)(pData+sizeof(REQ_QXBox_Group_Modify));
pModify->lCorpID = m_pMainFrame->m_lCorpID;
pModify->lUserID = m_pMainFrame->m_lUserID;
pModify->lItem = lItem;
pModify->qxGroup = *pSeeData;
pModify->bModifyMobile = false;
pModify->lMobileCount = 0;
pModify->lModifyStatus = 1; //重启任务
m_pMainFrame->SendFrame(SMSFUNC_QXBOX_GROUP_MODIFY , (BYTE*)pData , lSize);
}
}
void CFQXBox_Group::On_DS_Cancel()
{
long lItem = this->GetCurrentSelected();
ANS_QXBox_Group_SeeData * pSeeData = NULL;
if ( lItem >= 0 )
{
if ( m_wndList.GetItemData(lItem) >0 )
{
pSeeData = m_qxGroup.GetAt((POSITION)m_wndList.GetItemData(lItem));
}
}
if ( pSeeData )
{
if ( pSeeData->lStatus!=2 ) //状态不对,不可操作
return ;
long lSize = sizeof(REQ_QXBox_Group_Modify);
BYTE * pData = new BYTE[lSize];
memset(pData , 0 , lSize);
REQ_QXBox_Group_Modify * pModify = (REQ_QXBox_Group_Modify*)pData;
ANS_QXBox_Group_MobileData * pMobile = (ANS_QXBox_Group_MobileData*)(pData+sizeof(REQ_QXBox_Group_Modify));
pModify->lCorpID = m_pMainFrame->m_lCorpID;
pModify->lUserID = m_pMainFrame->m_lUserID;
pModify->lItem = lItem;
pModify->qxGroup = *pSeeData;
pModify->bModifyMobile = false;
pModify->lMobileCount = 0;
pModify->lModifyStatus = 2; //取消任务
m_pMainFrame->SendFrame(SMSFUNC_QXBOX_GROUP_MODIFY , (BYTE*)pData , lSize);
}
}
void CFQXBox_Group::Close_Data()
{
//清除队列中的内容
while (!m_qxGroup.IsEmpty())
{
ANS_QXBox_Group_SeeData * pData = m_qxGroup.GetHead();
m_qxGroup.RemoveHead();
delete pData;
}
}
void CFQXBox_Group::OnDestroy()
{
Close_Data();
CDialog::OnDestroy();
CSingleLock cl(&m_Chat_Lock,true);
long lCount = m_wndChat.GetCount();
for ( int i=0 ; i<lCount;i++ )
{
DLG_QXBox_Group_Chat * pDlg = m_wndChat.GetAt(i);
if ( pDlg )
{
//pDlg->SendMessage(WM_CLOSE);
//delete pDlg;
pDlg->DestroyWindow();
}
}
m_wndChat.RemoveAll();
cl.Unlock();
}
int CFQXBox_Group::ShowInList(int lItem, ANS_QXBox_Group_SeeData * pSeeData)
{
CString strTemp;
long lCount=lItem;
long lIcon=0; //默认通知群
if ( pSeeData->lType ==1 ) //Q信群
lIcon=1;
if ( pSeeData->lStatus == 0 || pSeeData->lStatus == 2) //正在操作
lIcon=2;
if ( lCount<0 )
{
//m_wndList.SetHeadings(_T("序号,50; 状态,90;类型,70; 群组名称,160;号码数,70;备注,200;最后操作信息,200;创建用户,90;创建时间,120;"));
lCount = m_wndList.GetItemCount();
strTemp.Format(_T("%d") , lCount+1);
m_wndList.InsertItem(lCount,strTemp,lIcon);
}
else
{
m_wndList.SetItem(lCount,0,LVIF_IMAGE,NULL,lIcon,NULL,NULL,NULL);
}
if ( lCount<0 || lCount>m_wndList.GetItemCount() )
return -1;
switch(pSeeData->lStatus)
{
case 0:
strTemp = _T("正在操作");
break;
case 1:
strTemp = _T("");
break;
case 2:
strTemp = _T("操作失败");
break;
default:
strTemp = _T("未知状态");
break;
}
long lTemp=1;
m_wndList.SetItemText(lCount,lTemp++,strTemp);
switch(pSeeData->lType)
{
case 0:
strTemp = _T("群发组");
break;
case 1:
strTemp = _T("讨论组");
break;
default:
strTemp = _T("未知群");
break;
}
m_wndList.SetItemText(lCount,lTemp++,strTemp);
m_wndList.SetItemText(lCount,lTemp++,pSeeData->szName);
strTemp.Format(_T("%8d") , pSeeData->lMobileCount);
m_wndList.SetItemText(lCount,lTemp++,strTemp);
m_wndList.SetItemText(lCount,lTemp++,pSeeData->szBZ);
m_wndList.SetItemText(lCount,lTemp++,pSeeData->szOperMsg);
m_wndList.SetItemText(lCount,lTemp++,pSeeData->szCreateUser);
strTemp.Format(_T("%04d.%02d.%02d") , pSeeData->tCreateTime.wYear,pSeeData->tCreateTime.wMonth,pSeeData->tCreateTime.wDay);
m_wndList.SetItemText(lCount,lTemp++,strTemp);
//以下操作为将数据更新到内存
if ( lItem<0 )
{
ANS_QXBox_Group_SeeData * pNewData = new ANS_QXBox_Group_SeeData;
*pNewData = *pSeeData;
POSITION pos = m_qxGroup.AddTail(pNewData);
m_wndList.SetItemData(lCount,(DWORD_PTR)pos);
}
else
{
ANS_QXBox_Group_SeeData * pSeeData2 = NULL;
if ( m_wndList.GetItemData(lItem) >0 )
{
pSeeData2 = m_qxGroup.GetAt((POSITION)m_wndList.GetItemData(lItem));
}
if ( pSeeData2 && pSeeData2->lRtx_GroupID == pSeeData->lRtx_GroupID )
{
*pSeeData2 = *pSeeData;
}
}
return 0;
}
int CFQXBox_Group::GroupEndDialog(DLG_QXBox_Group_Modify * pDlg,long lModifyType,ANS_QXBox_Group_SeeData data)
{
long lImageLen=0;
long lImageLen2=0;
CFile fImageFile;
if ( pDlg->m_strHeadData.GetLength()>0 )
{
if ( pDlg->m_strHeadData == CString(_T("[Image]")) )
{
lImageLen = -100; //表示不改变原数据
}
else
{
if ( !fImageFile.Open(pDlg->m_strHeadData,CFile::modeRead) )
{
CString str;
str.Format(_T("打开图片文件失败:%s") ,pDlg->m_strHeadData);
MessageBox(str, _T("错误") , MB_ICONWARNING );
return -1;
}
lImageLen2 = (DWORD)fImageFile.GetLength();
lImageLen = lImageLen2;
}
}
if ( lModifyType==0 )
{
long lMobileCount=0;
if ( data.lType==1 ) //Q信群时才能进行操作
{
lMobileCount = pDlg->m_wndList.GetItemCount();
}
long lSize = sizeof(REQ_QXBox_Group_Add) + sizeof(ANS_QXBox_Group_MobileData)*lMobileCount + lImageLen2;
BYTE * pData = new BYTE[lSize];
memset(pData , 0 , lSize);
REQ_QXBox_Group_Add * pAdd = (REQ_QXBox_Group_Add* ) pData;
ANS_QXBox_Group_MobileData * pMobile = (ANS_QXBox_Group_MobileData* )(pData+sizeof(REQ_QXBox_Group_Add));
BYTE * pImageData = (BYTE * )(pData+sizeof(REQ_QXBox_Group_Add)+sizeof(ANS_QXBox_Group_MobileData)*lMobileCount);
memset(pAdd , 0 , sizeof(REQ_QXBox_Group_Add));
pAdd->lCorpID = m_pMainFrame->m_lCorpID;
pAdd->lUserID = m_pMainFrame->m_lUserID;
pAdd->lMobileCount = lMobileCount;
pAdd->qxGroup = data;
pAdd->qxGroup.lHeadData = lImageLen; //图像长度
for ( int i=0 ; i<lMobileCount ; i++ )
{
pDlg->m_wndList.GetItemText(i,0,pMobile->szName,sizeof(pMobile->szName));
pDlg->m_wndList.GetItemText(i,1,pMobile->szMobile,sizeof(pMobile->szMobile));
pMobile ++;
}
if ( lImageLen2>0 )
{
fImageFile.Read(pImageData,lImageLen2);
fImageFile.Close();
}
m_pMainFrame->SendFrame(SMSFUNC_QXBOX_GROUP_ADD , (BYTE*)pData , lSize);
}
if ( lModifyType==1 )
{
BOOL bModifyMobile=false;
long lMobileCount=0;
if ( data.lType==1 ) //Q信群时才能进行操作
{
if ( pDlg->m_bModify )
{
bModifyMobile = true;
lMobileCount = pDlg->m_wndList.GetItemCount();
}
}
long lSize = sizeof(REQ_QXBox_Group_Modify) + sizeof(ANS_QXBox_Group_MobileData)*lMobileCount + lImageLen2;
BYTE * pData = new BYTE[lSize];
memset(pData , 0 , lSize);
REQ_QXBox_Group_Modify * pModify = (REQ_QXBox_Group_Modify*)pData;
ANS_QXBox_Group_MobileData * pMobile = (ANS_QXBox_Group_MobileData*)(pData+sizeof(REQ_QXBox_Group_Modify));
BYTE * pImageData = (BYTE * )(pData+sizeof(REQ_QXBox_Group_Add)+sizeof(ANS_QXBox_Group_MobileData)*lMobileCount);
pModify->lCorpID = m_pMainFrame->m_lCorpID;
pModify->lUserID = m_pMainFrame->m_lUserID;
pModify->lItem = data.lItem;
pModify->qxGroup = data;
pModify->qxGroup.lHeadData = lImageLen; //图像长度
pModify->bModifyMobile = bModifyMobile;
pModify->lMobileCount = lMobileCount;
for ( int i=0 ; i<lMobileCount ; i++ )
{
pDlg->m_wndList.GetItemText(i,0,pMobile->szName,sizeof(pMobile->szName));
pDlg->m_wndList.GetItemText(i,1,pMobile->szMobile,sizeof(pMobile->szMobile));
pMobile ++;
}
if ( lImageLen2>0 )
{
fImageFile.Read(pImageData,lImageLen2);
fImageFile.Close();
}
m_pMainFrame->SendFrame(SMSFUNC_QXBOX_GROUP_MODIFY , (BYTE*)pData , lSize);
}
if ( lModifyType==2 || lModifyType==3)
{
this->RefreshInfo();
}
return 0;
}
int CFQXBox_Group::SendNextImage(long lRtx_GroupTaskID)
{
try
{
if ( m_ImageFile.m_hFile != INVALID_HANDLE_VALUE) //文件结束
{
BOOL bEnd=false;
DWORD lLen = (DWORD)m_ImageFile.GetLength();
DWORD lPos = (DWORD)m_ImageFile.GetPosition();
if ( lPos< lLen )
{
long lPosAll = lLen/1024;
long lPosBegin = lPos/1024;
if ( lPosAll==lPosBegin )
lPosAll ++;
if ( lPosAll<=0 ) lPosAll=1;
if ( m_bSendType==0 && m_bShowProcess )
this->m_DlgProcess.SetProcess(lPosAll,lPosBegin);
long lSendLen=200*1024; //每次发送100k
if ( (long)(lLen-lPos)<=lSendLen )
{
lSendLen = (long)(lLen-lPos);
bEnd = true;
if ( m_bSendType==0 && m_bShowProcess )
this->m_DlgProcess.SetProcess(lPosAll,lPosAll);
}
long lSize = sizeof(REQ_QXBox_Group_SendImage) +lSendLen;
BYTE * pData = new BYTE[lSize];
memset(pData , 0 , lSize);
REQ_QXBox_Group_SendImage * pSend=(REQ_QXBox_Group_SendImage *)pData;
BYTE * pMsgData = pData + sizeof(REQ_QXBox_Group_SendImage);
pSend->lRtx_GroupTaskID = lRtx_GroupTaskID;
pSend->lAllLen = lLen;
pSend->lLen = lSendLen;
pSend->bEnd = bEnd;
m_ImageFile.Read(pMsgData,lSendLen);
m_pMainFrame->SendFrame( SMSFUNC_QXBOX_GROUP_SENDIMAGE , pData , lSize );
return 1;
}
}
}
catch(...)
{
}
if ( m_bShowProcess )
{
m_DlgProcess.SetProcess(5,5); //默认结束
m_bShowProcess = false;
}
try
{
if (m_ImageFile.m_hFile != INVALID_HANDLE_VALUE )
m_ImageFile.Close();
}catch(...)
{
}
return 0;
}
void CFQXBox_Group::ChatPop_Del(DLG_QXBox_Group_Chat * pPop)
{
try
{
CSingleLock cl(&m_Chat_Lock,true);
//先判断此号码是否存在
long lCount = m_wndChat.GetCount();
for ( int i=0 ; i<lCount;i++ )
{
DLG_QXBox_Group_Chat * pDlg = m_wndChat.GetAt(i);
if ( pDlg && pDlg == pPop) //指针相同
{
m_wndChat.RemoveAt(i);
/*
try
{
delete pDlg;
}
catch(...)
{
}
*/
return ;
}
}
}
catch(...)
{
}
}
void CFQXBox_Group::OnTimer(UINT_PTR nIDEvent)
{
if ( nIDEvent== 1 )
{
KillTimer(nIDEvent);
m_bSending = false;
}
CDialog::OnTimer(nIDEvent);
}