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

272 lines
7.7 KiB
C++

// DLG_QXBox_Group_Send.cpp : 实现文件
//
#include "stdafx.h"
#include "CorpSms.h"
#include "DLG_QXBox_Group_Send.h"
#include "afxdialogex.h"
// DLG_QXBox_Group_Send 对话框
IMPLEMENT_DYNAMIC(DLG_QXBox_Group_Send, CDialogEx)
DLG_QXBox_Group_Send::DLG_QXBox_Group_Send(CWnd* pParent /*=NULL*/)
: CDialogEx(DLG_QXBox_Group_Send::IDD, pParent)
, m_strImageName(_T(""))
, m_strMobile(_T(""))
{
memset(&m_Send,0,sizeof(m_Send));
m_lSendType = 0;
m_tDate = COleDateTime::GetCurrentTime();
m_tTime = COleDateTime::GetCurrentTime();
m_strMobileAll = _T("");
m_strMobileSent = _T("");
m_strMsg = _T("");
m_strRecver = _T("");
m_strSender = _T("");
m_strSendTime = _T("");
m_lMaxImageSize = 1024*1024; //图片文件最大支持4M
}
DLG_QXBox_Group_Send::~DLG_QXBox_Group_Send()
{
}
void DLG_QXBox_Group_Send::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Check(pDX, IDD_QXBOX_GROUP_SEND_DS, m_bDS);
DDX_DateTimeCtrl(pDX, IDD_QXBOX_GROUP_SEND_DS_D, m_tDate);
DDX_DateTimeCtrl(pDX, IDD_QXBOX_GROUP_SEND_DS_T, m_tTime);
DDX_Text(pDX, IDD_QXBOX_GROUP_SEND_MOBILEALL, m_strMobileAll);
DDX_Text(pDX, IDD_QXBOX_GROUP_SEND_MOBILESENT, m_strMobileSent);
DDX_Text(pDX, IDD_QXBOX_GROUP_SEND_MSG, m_strMsg);
DDV_MaxChars(pDX, m_strMsg, 1000);
DDX_Text(pDX, IDD_QXBOX_GROUP_SEND_RECVER, m_strRecver);
DDX_Text(pDX, IDD_QXBOX_GROUP_SEND_SENDER, m_strSender);
DDX_Text(pDX, IDD_QXBOX_GROUP_SEND_SENDTIME, m_strSendTime);
DDX_Control(pDX, IDD_QXBOX_GROUP_SEND_MSG, m_E_Msg);
DDX_Text(pDX, IDD_QXBOX_GROUP_SEND_IMAGENAME, m_strImageName);
DDV_MaxChars(pDX, m_strImageName, 500);
DDX_Text(pDX, IDD_QXBOX_GROUP_SEND_MOBILE, m_strMobile);
DDV_MaxChars(pDX, m_strMobile, 11);
}
BEGIN_MESSAGE_MAP(DLG_QXBox_Group_Send, CDialogEx)
ON_BN_CLICKED(IDOK, &DLG_QXBox_Group_Send::OnBnClickedOk)
ON_BN_CLICKED(IDD_QXBOX_GROUP_SEND_TYPE_TEXT, &DLG_QXBox_Group_Send::OnBnClickedQxboxGroupSendTypeText)
ON_BN_CLICKED(IDD_QXBOX_GROUP_SEND_TYPE_IMAGE, &DLG_QXBox_Group_Send::OnBnClickedQxboxGroupSendTypeImage)
ON_BN_CLICKED(IDD_QXBOX_GROUP_SEND_IMAGENAME_S, &DLG_QXBox_Group_Send::OnBnClickedQxboxGroupSendImagenameS)
END_MESSAGE_MAP()
// DLG_QXBox_Group_Send 消息处理程序
BOOL DLG_QXBox_Group_Send::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_strSender = m_Send.szSender;
m_strRecver = m_Send.szGroupName;
m_strSendTime.Format(_T("%04d.%02d.%02d %02d:%02d") , m_Send.tSubTime.wYear,m_Send.tSubTime.wMonth,m_Send.tSubTime.wDay,m_Send.tSubTime.wHour,m_Send.tSubTime.wMinute);
m_strMobileAll.Format(_T("%d") , m_Send.lMobileAll);
m_strMobileSent.Format(_T("%d") , m_Send.lMobileSent);
COleDateTime tTimer(m_Send.tTimer);
if ( tTimer.GetStatus() == COleDateTime::valid )
{
m_bDS = true;
m_tDate = tTimer;
m_tTime = tTimer;
}
m_strImageName = m_Send.szMsgImageName;
m_strMsg = m_strMsgIn;
if ( m_Send.lMsgDataType ==0 ) //文本
((CButton *)GetDlgItem(IDD_QXBOX_GROUP_SEND_TYPE_TEXT))->SetCheck(true);
if ( m_Send.lMsgDataType ==1 ) //图片
((CButton *)GetDlgItem(IDD_QXBOX_GROUP_SEND_TYPE_IMAGE))->SetCheck(true);
if ( m_lSendType ==1 ) //查看,不能操作
{
GetDlgItem(IDD_QXBOX_GROUP_SEND_DS)->EnableWindow(false);
GetDlgItem(IDD_QXBOX_GROUP_SEND_DS_D)->EnableWindow(false);
GetDlgItem(IDD_QXBOX_GROUP_SEND_DS_T)->EnableWindow(false);
GetDlgItem(IDD_QXBOX_GROUP_SEND_TYPE_TEXT)->EnableWindow(false);
GetDlgItem(IDD_QXBOX_GROUP_SEND_TYPE_IMAGE)->EnableWindow(false);
((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_SEND_MSG))->SetReadOnly(true);
((CEdit*)GetDlgItem(IDD_QXBOX_GROUP_SEND_IMAGENAME))->SetReadOnly(true);
GetDlgItem(IDD_QXBOX_GROUP_SEND_IMAGENAME_S)->EnableWindow(false);
}
OnChangeGroupSendType();
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void DLG_QXBox_Group_Send::OnBnClickedOk()
{
if ( !UpdateData(true) )
return ;
long lMsgDataType=0;
if ( ((CButton *)GetDlgItem(IDD_QXBOX_GROUP_SEND_TYPE_IMAGE))->GetCheck() )
lMsgDataType = 1;
m_Send.lMsgDataType = lMsgDataType;
/*
if ( m_strMobile.GetLength()==11 )
{
m_Send.lMsgType = 1; //点对点信息。
_tcscpy(m_Send.szGroupID , m_strMobile );
}
*/
_tcscpy(m_Send.szMobile , m_strMobile );
if ( lMsgDataType==0 )
{
if ( m_strMsg.GetLength() <=0 )
{
MessageBox(_T("请输入发送信息的内容!") , _T("警告") , MB_ICONWARNING );
GetDlgItem(IDD_QXBOX_GROUP_SEND_MSG)->SetFocus();
return ;
}
m_strMsgIn = m_strMsg;
}
if ( lMsgDataType==1 )
{
//判断文件大小是否正确
CFileStatus status;
CFile::GetStatus(m_strImageName,status);
if (status.m_size<=10 || status.m_size > m_lMaxImageSize)
{
MessageBox(_T("图片文件过小或过大,无法发送,请重新选择") , _T("错误"),MB_ICONWARNING);
GetDlgItem(IDD_QXBOX_GROUP_SEND_IMAGENAME_S)->SetFocus();
return ;
}
_tcsncpy(m_Send.szMsgImageName , m_strImageName ,sizeof(m_Send.szMsgImageName)/sizeof(TCHAR));
}
if ( m_bDS )
{
COleDateTime t(m_tDate.GetYear(),m_tDate.GetMonth(),m_tDate.GetDay(),m_tTime.GetHour(),m_tTime.GetMinute(),m_tTime.GetSecond());
if ( t.GetStatus() != COleDateTime::valid ||
t<COleDateTime::GetCurrentTime())
{
MessageBox(_T("定时时间格式有误或小于当前时间!") , _T("错误"),MB_ICONWARNING);
GetDlgItem(IDD_QXBOX_GROUP_SEND_DS_D)->SetFocus();
return ;
}
t.GetAsSystemTime(m_Send.tTimer);
}
CDialogEx::OnOK();
}
int DLG_QXBox_Group_Send::SetParam(REQ_QXBox_Group_SendData send,TCHAR * szMsgIn,long lSendType)
{
m_Send = send;
m_lSendType = lSendType;
if ( send.lMsgDataType ==0 ) //文本
m_strMsgIn =szMsgIn;
return 0;
}
REQ_QXBox_Group_SendData DLG_QXBox_Group_Send::GetParam(void)
{
return REQ_QXBox_Group_SendData(m_Send);
}
void DLG_QXBox_Group_Send::OnBnClickedQxboxGroupSendTypeText()
{
OnChangeGroupSendType();
}
void DLG_QXBox_Group_Send::OnBnClickedQxboxGroupSendTypeImage()
{
OnChangeGroupSendType();
}
void DLG_QXBox_Group_Send::OnChangeGroupSendType()
{
long lMsgDataType=0;
if ( ((CButton *)GetDlgItem(IDD_QXBOX_GROUP_SEND_TYPE_IMAGE))->GetCheck() )
lMsgDataType = 1;
if ( lMsgDataType ==0 ) //文本
{
GetDlgItem(IDD_QXBOX_GROUP_SEND_MSG)->ShowWindow(SW_SHOW);
GetDlgItem(IDD_QXBOX_GROUP_SEND_IMAGENAME)->ShowWindow(SW_HIDE);
GetDlgItem(IDD_QXBOX_GROUP_SEND_IMAGENAME_S)->ShowWindow(SW_HIDE);
}
if ( lMsgDataType ==1 ) //图片
{
GetDlgItem(IDD_QXBOX_GROUP_SEND_MSG)->ShowWindow(SW_HIDE);
GetDlgItem(IDD_QXBOX_GROUP_SEND_IMAGENAME)->ShowWindow(SW_SHOW);
GetDlgItem(IDD_QXBOX_GROUP_SEND_IMAGENAME_S)->ShowWindow(SW_SHOW);
}
}
void DLG_QXBox_Group_Send::OnBnClickedQxboxGroupSendImagenameS()
{
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_strImageName = strName;
UpdateData(false);
}
}