📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "SmsTest.h"
#include "MainFrm.h"
#include "SaveText.h"
#include "MyRecordSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_BN_CLICKED(IDC_SEND, OnSend)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
if (!m_wndDialogBar.Create(this, IDD_SEND_SM,
CBRS_BOTTOM|CBRS_TOOLTIPS|CBRS_FLYBY, IDD_SEND_SM))
{
TRACE0("Failed to create dialog bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndDialogBar.EnableDocking(CBRS_ALIGN_TOP|CBRS_ALIGN_BOTTOM);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
DockControlBar(&m_wndDialogBar);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnSend()
{
// TODO: Add your control notification handler code here
UpdateData(true);
// CEdit* pNumberWnd=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_NUMBER1);
CEdit* pContentWnd=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_CONTENT1);
//////////////////////////////////////////////////////////////////////////////
//群发号码记录
//////////////////////////////////////////////////////////////////////////////
// CEdit* SendNonmber[16];
CEdit* SendNonmber1=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT1);
CEdit* SendNonmber2=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT2);
CEdit* SendNonmber3=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT3);
CEdit* SendNonmber4=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT4);
CEdit* SendNonmber5=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT5);
CEdit* SendNonmber6=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT6);
CEdit* SendNonmber7=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT7);
CEdit* SendNonmber8=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT8);
CEdit* SendNonmber9=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT9);
CEdit* SendNonmber10=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT10);
CEdit* SendNonmber11=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT11);
CEdit* SendNonmber12=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT12);
CEdit* SendNonmber13=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT13);
CEdit* SendNonmber14=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT14);
CEdit* SendNonmber15=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT15);
CEdit* SendNonmber16=(CEdit*)m_wndDialogBar.GetDlgItem(IDC_EDIT16);
/////////////////////////////////////////////////////////////////////////////////
//群发号码&群发内容
/////////////////////////////////////////////////////////////////////////////////
CString strSmsc;
CString strNumber;
CString strContent;
// CStringArray *SendNonmber = new CStringArray;
// SendNonmber->SetSize(16);
strSmsc = theApp.m_strSmsc;
// pNumberWnd->GetWindowText(strNumber);
/////////////////////////////////////////////////////////////////////////////////
//获得群发号码
/////////////////////////////////////////////////////////////////////////////////
m_CStringArray.RemoveAll(); //清空对象
SendNonmber1->GetWindowText(Temp1);
SaveText *pSaveText1 = new SaveText(Temp1,1);
m_CStringArray.Add(pSaveText1);
SendNonmber2->GetWindowText(Temp2);
SaveText *pSaveText2 = new SaveText(Temp2,2);
m_CStringArray.Add(pSaveText2);
SendNonmber3->GetWindowText(Temp3);
SaveText *pSaveText3 = new SaveText(Temp3,3);
m_CStringArray.Add(pSaveText3);
SendNonmber4->GetWindowText(Temp4);
SaveText *pSaveText4 = new SaveText(Temp4,4);
m_CStringArray.Add(pSaveText4);
SendNonmber5->GetWindowText(Temp5);
SaveText *pSaveText5 = new SaveText(Temp5,5);
m_CStringArray.Add(pSaveText5);
SendNonmber6->GetWindowText(Temp6);
SaveText *pSaveText6 = new SaveText(Temp6,6);
m_CStringArray.Add(pSaveText6);
SendNonmber7->GetWindowText(Temp7);
SaveText *pSaveText7 = new SaveText(Temp7,7);
m_CStringArray.Add(pSaveText7);
SendNonmber8->GetWindowText(Temp8);
SaveText *pSaveText8 = new SaveText(Temp8,8);
m_CStringArray.Add(pSaveText8);
SendNonmber9->GetWindowText(Temp9);
SaveText *pSaveText9 = new SaveText(Temp9,9);
m_CStringArray.Add(pSaveText9);
SendNonmber10->GetWindowText(Temp10);
SaveText *pSaveText10 = new SaveText(Temp10,10);
m_CStringArray.Add(pSaveText10);
SendNonmber11->GetWindowText(Temp11);
SaveText *pSaveText11 = new SaveText(Temp11,11);
m_CStringArray.Add(pSaveText11);
SendNonmber12->GetWindowText(Temp12);
SaveText *pSaveText12 = new SaveText(Temp12,12);
m_CStringArray.Add(pSaveText12);
SendNonmber13->GetWindowText(Temp13);
SaveText *pSaveText13 = new SaveText(Temp13,13);
m_CStringArray.Add(pSaveText13);
SendNonmber14->GetWindowText(Temp14);
SaveText *pSaveText14 = new SaveText(Temp14,14);
m_CStringArray.Add(pSaveText14);
SendNonmber15->GetWindowText(Temp15);
SaveText *pSaveText15 = new SaveText(Temp15,15);
m_CStringArray.Add(pSaveText15);
SendNonmber16->GetWindowText(Temp16);
SaveText *pSaveText16 = new SaveText(Temp16,16);
m_CStringArray.Add(pSaveText16);
//////////////////////////////////////////////////////////////////////////////////
//获取短消息内容
//////////////////////////////////////////////////////////////////////////////////
pContentWnd->GetWindowText(strContent);
//////////////////////////////////////////////////////////////////////////////////
// 检查号码
//////////////////////////////////////////////////////////////////////////////////
CString TempSendNonmber[16];
CString str;
CString str_1;
int temp2 = m_CStringArray.GetSize();
for(int i=0; i<temp2; i++)
{
// UpdateData(true);
SaveText *test = (SaveText *)m_CStringArray.GetAt(i);
int temp1 = test->m_Temp.GetLength();
// test->m_Index ++;
str.Format("请正确输入第 %d 个电话号码\n", test->m_Index);
str_1.Format("第 %d 个电话号码正确\n",test->m_Index);
int l=0;
if(temp1 > 0 && temp1 < 11)
{
AfxMessageBox(str);
return;
}
else if(temp1 == 0)
{
// return;
}
else
{
// AfxMessageBox(str_1);
// l++;
}
// UpdateData(false);
}
///////////////////////////////////////////////////////////////////////////////////
// 检查短消息内容是否空,或者超长
///////////////////////////////////////////////////////////////////////////////////
CString strUnicode;
WCHAR wchar[1024];
int nCount = ::MultiByteToWideChar(CP_ACP, 0, strContent, -1, wchar, 1024); //把ASNI码转换为UNICODE码
if(nCount <= 1)
{
AfxMessageBox("请输入消息内容!");
return;
}
else if(nCount > 70) // 我们决定全部用UCS2编码,最大70个字符(半角/全角)
{
AfxMessageBox("消息内容太长,无法发送!");
return;
}
if(AfxMessageBox("确定发送吗?", MB_YESNO) == IDYES)
{
SM_PARAM SmParam;
CString Time;
//////////////////////////////////////////////////////////////////////////////////
//打开数据库
//////////////////////////////////////////////////////////////////////////////////
UpdateData(TRUE);
CDatabase db;
CMyRecordSet *PersonRecord = NULL;
if(!db.Open( _T("ODBC;DSN=Mydb1"), FALSE, FALSE, _T("[SmsIfo]") ) )
{
PersonRecord = new CMyRecordSet();
PersonRecord->Open();
///////////////////////////////////////////////////////////////////////////////////
//发送短消息
///////////////////////////////////////////////////////////////////////////////////
for(int i=0; i<temp2; i++)
{
SaveText *test = (SaveText *)m_CStringArray.GetAt(i);
strNumber = test->m_Temp;
if(strNumber.GetLength() == 0)
continue;
memset(&SmParam, 0, sizeof(SM_PARAM)); //设置SmParam为0
// 去掉号码前的"+"
if(strSmsc[0] == '+') strSmsc = strSmsc.Mid(1);
if(strNumber[0] == '+') strNumber = strNumber.Mid(1);
// 在号码前加"86"
if(strSmsc.Left(2) != "86") strSmsc = "86" + strSmsc;
if(strNumber.Left(2) != "86") strNumber = "86" + strNumber;
// 填充短消息结构 给SmParam赋值
strcpy(SmParam.SCA, strSmsc);
strcpy(SmParam.TPA, strNumber);
strcpy(SmParam.TP_UD, strContent);
SmParam.TP_PID = 0;
SmParam.TP_DCS = GSM_UCS2;
// 发送短消息
theApp.m_pSmsTraffic->PutSendMessage(&SmParam);
///////////////////////////////////////////////////////////////////////////////
//把内容写入数据库记录
///////////////////////////////////////////////////////////////////////////////
PersonRecord->AddNew();
PersonRecord->m_Ph_Nomber = strNumber;
PersonRecord->m_Sm_Ifo = strContent;
m_SendTime = m_SendTime.GetCurrentTime();
Time = m_SendTime.Format("%H:%M:%S, %b-%d-%Y");
PersonRecord->m_Time = Time;
PersonRecord->Update();
////////////////////////////////////////////////////////////////////////////////////
//休眠
////////////////////////////////////////////////////////////////////////////////////
Sleep(200);
}
}
else
////////////////////////////////////////////////////////////////////////////////////
//关闭数据库
////////////////////////////////////////////////////////////////////////////////////
AfxMessageBox("Can't open Database");
PersonRecord->Close();
delete PersonRecord;
db.Close();
}
UpdateData(false);
AfxMessageBox("Messages have been send!");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -