⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inceptlogquery.cpp

📁 使用短信猫可以实现短信的群发
💻 CPP
字号:
// InceptLogQuery.cpp : implementation file
//

#include "stdafx.h"
#include "sms.h"
#include "InceptLogQuery.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CInceptLogQuery dialog


CInceptLogQuery::CInceptLogQuery(CWnd* pParent /*=NULL*/)
	: CDialog(CInceptLogQuery::IDD, pParent)
{
	//{{AFX_DATA_INIT(CInceptLogQuery)
	m_IsLogContent = FALSE;
	m_IsPhoneNumber = FALSE;
	m_IsRecvDate = FALSE;
	m_PhoneNumber = _T("");
	m_LogContent = _T("");
	m_RecvDate = COleDateTime::GetCurrentTime();
	//}}AFX_DATA_INIT
}


void CInceptLogQuery::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CInceptLogQuery)
	DDX_Check(pDX, IDC_LOG_CONTENT_CHECK, m_IsLogContent);
	DDX_Check(pDX, IDC_PHONE_NUMBER_CHECK, m_IsPhoneNumber);
	DDX_Check(pDX, IDC_RECV_DATE_CHECK, m_IsRecvDate);
	DDX_Text(pDX, IDC_PHONE_NUMBER, m_PhoneNumber);
	DDX_Text(pDX, IDC_LOG_CONTENT, m_LogContent);
	DDV_MaxChars(pDX, m_LogContent, 140);
	DDX_DateTimeCtrl(pDX, IDC_RECV_DATE, m_RecvDate);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CInceptLogQuery, CDialog)
	//{{AFX_MSG_MAP(CInceptLogQuery)
	ON_BN_CLICKED(IDC_PHONE_NUMBER_CHECK, OnPhoneNumberCheck)
	ON_BN_CLICKED(IDC_RECV_DATE_CHECK, OnRecvDateCheck)
	ON_BN_CLICKED(IDC_LOG_CONTENT_CHECK, OnLogContentCheck)
	ON_BN_CLICKED(IDC_Search, OnSearch)
	ON_BN_CLICKED(IDC_EXPORT, OnExport)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CInceptLogQuery message handlers

void CInceptLogQuery::OnPhoneNumberCheck() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	GetDlgItem(IDC_PHONE_NUMBER)->EnableWindow(m_IsPhoneNumber); //选中手机号选项

}

void CInceptLogQuery::OnRecvDateCheck() 
{
	UpdateData();
	GetDlgItem(IDC_RECV_DATE)->EnableWindow(m_IsRecvDate); //选中手机号选项
	
}

void CInceptLogQuery::OnLogContentCheck() 
{
	UpdateData();
	GetDlgItem(IDC_LOG_CONTENT)->EnableWindow(m_IsLogContent); //选中手机号选项
	
}

BOOL CInceptLogQuery::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//////////////////////////////////////////////////////////////////////////
	//在初始化的时候不让下边这四个对话框处于可用状态
	GetDlgItem(IDC_PHONE_NUMBER)->EnableWindow(FALSE);
	GetDlgItem(IDC_RECV_DATE)->EnableWindow(FALSE);
	GetDlgItem(IDC_LOG_CONTENT)->EnableWindow(FALSE);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CInceptLogQuery::OnSearch() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	UpdateData();
	CString sql="SELECT * FROM receivedlog WHERE ";
	CString temp;
	if(m_IsPhoneNumber)
	{
		//////////////////////////////////////////////////////////////////////////
		//对输入的手机号进行验证
		if(m_PhoneNumber.IsEmpty())
		{
			AfxMessageBox("请输入手机号码");
			return;
		}
		

		//判断手机号是否存在非数字字符的存在
		//判断号码的最大长度为24个字节,必须为数字或+号
		int i=0;
		BOOL isRight=TRUE;
		//判断是否以数字或+开头
		for(i=0;i<m_PhoneNumber.GetLength();i++)
		{
			if(! (isdigit(m_PhoneNumber[i]) || m_PhoneNumber[0]=='+' && i==0 ))
			{
				isRight=FALSE;
			}
		}		
		TRACE("号码为%s   %d",m_PhoneNumber,isRight);
		//在号码格式正确的基础上再判断号码的最大长度是否超过24
		if(!(isRight && m_PhoneNumber.GetLength()<=24))
		{
			AfxMessageBox("手机号码不能超过24位并且不能包含非数字字符");
			return;
		}
		
		
		//TRACE("%s\n",temp);
		
		//////////////////////////////////////////////////////////////////////////
		//将要发送的内容放入到发送队列
		//////////////////////////////////////////////////////////////////////////
		
		//要先对"+"进行处理,而不能先判断是否以"86"开头
		if("+"==m_PhoneNumber.Left(1))
		{
			m_PhoneNumber=m_PhoneNumber.Mid(1);
		}
		//如果手机号不以86就给他补个86进去
		if("86"!=m_PhoneNumber.Left(2))
		{
			m_PhoneNumber="86"+m_PhoneNumber;
		}

		temp.Empty();
		temp.Format("pnumber='%s' AND ",m_PhoneNumber);
		sql+=temp;
	}
	if(m_IsRecvDate)
	{
		temp.Empty();
		CString strDate;
		strDate.Format("%d-%d-%d",m_RecvDate.GetYear(),m_RecvDate.GetMonth(),m_RecvDate.GetDay());
		temp.Format("replytime>=to_date('%s','YYYY-MM-DD') AND \
			replytime<to_date('%s','YYYY-MM-DD')+1 AND ",strDate,strDate);
		sql+=temp;
	}
	if(m_IsLogContent)
	{
		temp.Empty();
		temp.Format(" replycontent like '%%%s%%' AND ",m_LogContent);
		sql+=temp;
	}
	sql+="1=1";
	TRACE("%s",sql);
	
	
	//////////////////////////////////////////////////////////////////////////
	///数据库操作
	CSMSApp * pCSMSApp=(CSMSApp *)AfxGetApp();//取得App类对象的指针
	CSMSADO &Ado=pCSMSApp->m_SMSAdo;
	
	//这里判断数据连接是否连接成功
	if(!Ado.IsConnection())
	{
		MessageBox("连接数据库出错\n请重新设置Oracle相关信息");
		return;
	}
	
	SQLRECORDSET rs=Ado.ExecuteWithRecordset(sql);
	
	
	if(rs==NULL)
	{
		return;
	}
	
	((CLogManager *)(GetParent()->GetParent()))->ShowRecvLogSearchList(rs);
	m_PhoneNumber.Empty();
	m_LogContent.Empty();

	//m_SendDate.Empty();
	//m_SendState.Empty();
	//m_Authority.SetCurSel(1);
	UpdateData(FALSE);//将变量的内容更新到于之关加的窗口上
	
}

void CInceptLogQuery::OnExport() 
{
	// TODO: Add your control notification handler code here
	CListCtrl & listCtrl=((CLogManager *)(GetParent()->GetParent()))->m_LogList;
	if(listCtrl.GetItemCount()<=0)
	{
		AfxMessageBox("没有接收日志内容需要导出");
		return;
	}
	CString strFilter="Txt 文件(*.txt)|*.txt||";
	CString fileName;
	//第一个参数是控制文件对话框是打开文件对话框还是保存文件对话框 TRUE是打开文件 FALSE是保存文件
	//第二个参数是默认文件扩展名
	//第三个参数是初始化文件名
	//第四个参数是标记
	//第五个参数是过滤的文件类型
	//第六个参数是指定该对话框的父窗口
	CFileDialog fileDialog(FALSE, _T("*.txt"), "RecevLog", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, strFilter, this);
	if(IDOK==fileDialog.DoModal())
	{
		fileName=fileDialog.GetFileName();

		CFile savefile(fileName, CFile::modeCreate|CFile::modeWrite);
		
		CString textContent="ID号\t对方手机号码\t\t短信接收时间\t\t短信内容\r\n";
		savefile.Write(textContent, textContent.GetLength());
		
		int i=0;
		CString temp;
		for(i=0; i<listCtrl.GetItemCount();i++)
		{
			textContent.Empty();
			temp.Empty();
			temp = listCtrl.GetItemText(i, 0);
			textContent=temp+"\t";
			temp = listCtrl.GetItemText(i, 1);
			textContent+=temp+"\t";
			temp = listCtrl.GetItemText(i, 2);
			textContent+=temp+"\t";
			temp = listCtrl.GetItemText(i, 3);
			textContent+=temp+"\t";		
			textContent+="\r\n";
			savefile.Write(textContent, textContent.GetLength());
		}
		savefile.Close();		
		AfxMessageBox("导出到文件成功!");
	}

}

BOOL CInceptLogQuery::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (pMsg->message == WM_KEYDOWN)
	{	
		if (pMsg->wParam == VK_RETURN)	return TRUE;
		if (pMsg->wParam == VK_ESCAPE)	return TRUE;
	} 
	return CDialog::PreTranslateMessage(pMsg);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -