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

📄 specsmsdlg.cpp

📁 wavecom 短信猫开发示例 二次开发包
💻 CPP
字号:
// SpecSmsDlg.cpp : implementation file
//

#include "stdafx.h"
#include "CallSmsCom.h"
#include "SpecSmsDlg.h"
#include "XTTBasicDef.h"

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

extern XTTSMSCOM::IModemServicePtr g_spiModemService;

/////////////////////////////////////////////////////////////////////////////
// CSpecSmsDlg dialog

CSpecSmsDlg::CSpecSmsDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSpecSmsDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSpecSmsDlg)
	m_strName = _T("搜狐");
	m_strWebUrl = _T("http://wap.sohu.com");
	m_strSendTo = _T("13801155369");
	m_iMsgType = 1;
	m_bAsynSend = TRUE;
	//}}AFX_DATA_INIT
}

void CSpecSmsDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSpecSmsDlg)
	DDX_Control(pDX, IDOK, m_ctlOK);
	DDX_Control(pDX, IDC_SPECSMS_COMMIT, m_ctlCommit);
	DDX_Text(pDX, IDC_SPECSMS_NAME, m_strName);
	DDX_Text(pDX, IDC_SPECSMS_WEBURL, m_strWebUrl);
	DDX_CBIndex(pDX, IDC_SPECSMS_TYPE, m_iMsgType);
	DDX_Check(pDX, IDC_SPECSMS_ASYNSEND, m_bAsynSend);
	DDX_Text(pDX, IDC_SPECSMS_SENDTO, m_strSendTo);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CSpecSmsDlg, CDialog)
	//{{AFX_MSG_MAP(CSpecSmsDlg)
	ON_BN_CLICKED(IDC_SPECSMS_COMMIT, OnSpecsmsCommit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSpecSmsDlg message handlers

BOOL CSpecSmsDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSpecSmsDlg::OnSpecsmsCommit() 
{
	// TODO: Add your control notification handler code here
	if(g_spiModemService==NULL)
		return;
	UpdateData(TRUE);
	XTTSMSCOM::EMobileModemStatus eModemStatus=XTTSMSCOM::UNINIT_STATUS;
	g_spiModemService->get_ModemStatus(&eModemStatus);
	if(eModemStatus<XTTSMSCOM::OK_STATUS)
	{
		::MessageBox(this->GetSafeHwnd(),_T("还没有正常连接短信猫!"),XTTSOFT_SMS_APPNAME,MB_OK);
		return;
	}
	m_strSendTo.TrimLeft();
	m_strSendTo.TrimRight();
	m_strWebUrl.TrimLeft();
	m_strWebUrl.TrimRight();
	if(m_strSendTo.IsEmpty()==TRUE || m_strWebUrl.IsEmpty()
		|| m_strName.IsEmpty()==TRUE)
	{
		::MessageBox(this->GetSafeHwnd(),_T("参数错误!"),XTTSOFT_SMS_APPNAME,MB_OK);
		return;
	}
	if(m_bAsynSend==TRUE)
		g_spiModemService->put_WorkMode(XTTSMSCOM::ASYNCHRONOUS_WORKMODE);//设为无阻塞模式发送
	else
		g_spiModemService->put_WorkMode(XTTSMSCOM::SYNCHRONOUS_WORKMODE);//阻塞模式发送
	int iFind=-1;
	BOOL bGroupFlag=FALSE;
	iFind=m_strSendTo.Find(_T(";"));
	if(iFind!=-1)
		bGroupFlag=TRUE;
	m_strMsgID.Empty();
	CComVariant varMsgID;
	g_spiModemService->CreateUniqueID(&varMsgID);
	if(varMsgID.vt==VT_BSTR && varMsgID.bstrVal!=NULL)
		m_strMsgID=varMsgID.bstrVal;
	varMsgID.Clear();
	if(m_strMsgID.IsEmpty()==TRUE)
	{
		::MessageBox(this->GetSafeHwnd(),_T("生成短信ID失败!"),XTTSOFT_SMS_APPNAME,MB_OK);
		return;
	}
	//将发送的短信入库...
	XTTSMSCOM:: EMobileMsgType eWapType=XTTSMSCOM::PUSH_OTA_BOOKMARK_MSGTYPE;//发送OTA书签
	if(m_iMsgType==1)
		eWapType=XTTSMSCOM::PUSH_OTA_GPRSCONFIG_MSGTYPE;//表示发送OTA服务GPRS配置
	else if(m_iMsgType==2)
		eWapType=XTTSMSCOM::PUSH_OMA_CONFIG_MSGTYPE;//表示发送OMA服务GPRS配置
	CString strSignName(_T(""));
	//执行发送
	CComVariant varSplitCount,varReserved;//拆分的数量
	varReserved.Clear();
	if(bGroupFlag==FALSE)
	{
		XTTSMSCOM::EMobileMsgStatus eMsgStatus=XTTSMSCOM::UNKNOWN_MSGSTATUS;
		g_spiModemService->SendPushMsg(m_strMsgID.AllocSysString(),m_strSendTo.AllocSysString(),\
			m_strWebUrl.AllocSysString(),m_strName.AllocSysString(),&varSplitCount,varReserved,eWapType,\
			strSignName.AllocSysString(),0,16,VARIANT_FALSE,VARIANT_FALSE,&eMsgStatus);
		varSplitCount.ChangeType(VT_I2);
		m_sSplitCount=varSplitCount.iVal;
		//iSplitCount为1表示没有拆分
		if(m_bAsynSend==FALSE)
		{
			if(eMsgStatus==XTTSMSCOM::SENTOK_MSGSTATUS)
				::MessageBox(this->GetSafeHwnd(),_T("发送成功!"),XTTSOFT_SMS_APPNAME,MB_OK);
			else
			{
				CComVariant varErrDes;
				XTTSMSCOM::EMobileErrorType eErrType=XTTSMSCOM::OK_ERRTYPE;
				g_spiModemService->GetLastError(&varErrDes,&eErrType);//得到错误信息
				CString strErrInfo(_T(""));
				if(varErrDes.vt==VT_BSTR && varErrDes.bstrVal!=NULL)
					strErrInfo.Format(_T("发送失败!错误码为%d,错误信息为 %s"),eErrType,(CString )varErrDes.bstrVal);
				else
					strErrInfo=_T("发送失败!");
				::MessageBox(this->GetSafeHwnd(),strErrInfo,XTTSOFT_SMS_APPNAME,MB_OK);
			}
		}
		//无阻塞模式发送结果由事件通知
		return;
	}
	//群发
	COleVariant varSendTo(m_strSendTo);//可以直接是以分号“;”分割的字符串
	varSendTo.ChangeType(VT_BSTR);
	g_spiModemService->SendGroupPushMsg(m_strMsgID.AllocSysString(),varSendTo,m_strWebUrl.AllocSysString(),\
		m_strName.AllocSysString(),varReserved,eWapType,strSignName.AllocSysString(),0,16,VARIANT_FALSE,\
		VARIANT_FALSE,&varSplitCount);
	varSplitCount.ChangeType(VT_I2);
	m_sSplitCount=varSplitCount.iVal;
}

void CSpecSmsDlg::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
}

⌨️ 快捷键说明

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