📄 mainview.cpp
字号:
// MainView.cpp : implementation file
//
#include "stdafx.h"
#include "MoblieX.h"
#include "MainView.h"
#include "sms.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainView
IMPLEMENT_DYNCREATE(CMainView, CFormView)
CMainView::CMainView()
: CFormView(CMainView::IDD)
{
//{{AFX_DATA_INIT(CMainView)
m_callNo = _T("");
m_callNoHead = _T("+86");
m_sendTime = _T("");
m_sms = _T("");
m_sca = _T("");
//}}AFX_DATA_INIT
}
CMainView::~CMainView()
{
}
void CMainView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMainView)
DDX_Control(pDX, IDC_SMS, m_smsCtrl);
DDX_Control(pDX, IDC_CHARNUM, m_charNumCtrl);
DDX_Control(pDX, IDC_SMS_LIST, m_smsListCtrl);
DDX_Text(pDX, IDC_CALLNO, m_callNo);
DDX_Text(pDX, IDC_CALLNO_HEAD, m_callNoHead);
DDX_Text(pDX, IDC_SEND_TIME, m_sendTime);
DDX_Text(pDX, IDC_SMS, m_sms);
DDX_Text(pDX, IDC_SCA, m_sca);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMainView, CFormView)
//{{AFX_MSG_MAP(CMainView)
ON_COMMAND(ID_SMS_LIST_UPDATE, OnSmsListUpdate)
ON_LBN_SELCHANGE(IDC_SMS_LIST, OnSelchangeSmsList)
ON_BN_CLICKED(IDC_SMS_SEND, OnSmsSend)
ON_COMMAND(ID_SMS_DEL, OnSmsDel)
ON_UPDATE_COMMAND_UI(ID_SMS_DEL, OnUpdateSmsDel)
ON_WM_DESTROY()
ON_WM_SIZE()
ON_COMMAND(ID_SMS_GET, OnSmsGet)
ON_UPDATE_COMMAND_UI(ID_SMS_GET, OnUpdateSmsGet)
ON_BN_CLICKED(IDC_PB_SELECT, OnPbSelect)
ON_BN_CLICKED(IDC_SCA_SELECT, OnScaSelect)
ON_COMMAND(ID_SMS_ADD, OnSmsAdd)
ON_EN_CHANGE(IDC_SMS, OnChangeSms)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainView diagnostics
#ifdef _DEBUG
void CMainView::AssertValid() const
{
CFormView::AssertValid();
}
void CMainView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainView message handlers
void CMainView::OnSmsListUpdate()
{
CMoblieXDoc *pDoc = GetDocument();
int i, size = pDoc->GetReceivedSMSNum();
CString buf, callNo, sendTime, body;
m_smsListCtrl.ResetContent();
for( i = 0; i < size; i++ )
{
pDoc->GetReceivedSMS( i, callNo, sendTime, body );
buf.Format( "<%s>%s", callNo, body );
m_smsListCtrl.AddString( buf );
}
m_sms.Empty();
UpdateData( FALSE );
}
void CMainView::OnSelchangeSmsList()
{
int i;
if( ( i = m_smsListCtrl.GetCurSel() ) == LB_ERR )
{
return;
}
GetDocument()->GetReceivedSMS( i, m_callNo, m_sendTime, m_sms );
GetDocument()->m_dlgPBSelect.m_pb.No2Name( m_callNo, m_callNo );
UpdateData( FALSE );
OnChangeSms();
}
void CMainView::OnSmsSend()
{
CMoblieXDoc * pDoc = GetDocument();
if( !pDoc->IsCommPortOpen() )
{
MessageBox( "尚未与手机建立连接" );
return;
}
UpdateData();
int i, size;
CStringArray asNo;
CString header(m_callNoHead);
CString phoneNo;
header.Remove( '+' );
if( m_callNo.Find( ';' ) >= 0 )
{
CStrFilter sBuf;
sBuf = m_callNo;
sBuf.SeparateAll( ';', asNo );
}
else
{
asNo.Add( m_callNo );
}
size = asNo.GetSize();
//翻译人名, 规范号码
for( i = 0; i < size; i++ )
{
phoneNo = asNo[i];
phoneNo.TrimLeft();
phoneNo.TrimRight();
if( phoneNo.GetLength() > 0 )
{
if( phoneNo[0] != '+'
&& (phoneNo[0] < '0' || phoneNo[0] > '9' ) )
{//不是电话号码, 需要翻译
if( !pDoc->m_dlgPBSelect.m_pb.Name2No( phoneNo, phoneNo ) )
{
CString msg;
msg.Format( "找不到此号码: %s", phoneNo );
MessageBox(msg);
return;
}
}
}
phoneNo.Remove('+');
phoneNo.TrimLeft( header );
asNo[i] = header + phoneNo;
}
for( i = 0; i < size; i++ )
{
if( !pDoc->SendSMS( m_sca, asNo[i], m_sms ) )
{
MessageBox( "信息超过70个字,无法发送" );
break;
}
}
}
void CMainView::OnSmsDel()
{
int i;
if( ( i = m_smsListCtrl.GetCurSel() ) == LB_ERR )
{
return;
}
if( !(GetDocument()->DelSMS( i )) )
{
MessageBox( "错误:没有找到要删除的短信。" );
return;
}
m_smsListCtrl.DeleteString( i );
}
void CMainView::OnUpdateSmsDel(CCmdUI* pCmdUI)
{
pCmdUI->Enable( GetDocument()->IsCommPortOpen()
&& (m_smsListCtrl.GetCurSel() != LB_ERR) );
}
void CMainView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
m_sca = theApp.GetProfileString( "Settings", "SCA" );
UpdateData( FALSE );
}
void CMainView::OnDestroy()
{
theApp.WriteProfileString( "Settings", "SCA", m_sca );
CFormView::OnDestroy();
}
void CMainView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
if( theApp.m_reSizeDelta.cx == -1 )
{
return;
}
if( !IsWindow( GetParent()->GetSafeHwnd() ) )
{
return;
}
//通知主窗口重新调整大小
{
CSize formSize;
CRect wRect;
GetParent()->GetClientRect( wRect );
formSize = GetTotalSize();
theApp.m_reSizeDelta.cx = formSize.cx - wRect.Width() + 20;
theApp.m_reSizeDelta.cy = formSize.cy*2 - wRect.Height() + 60;
}
// if( theApp.m_reSizeDelta.cx != 0 || theApp.m_reSizeDelta.cy != 0 )
{
// GetParent()->PostMessage( WM_COMMAND, ID_FORMVIEW_RESIZE );
}
}
void CMainView::OnSmsGet()
{
GetDocument()->SendCommandStr( "AT+CMGL=4\r", CW_GET_SMS );//当前模式设为取短信
}
void CMainView::OnUpdateSmsGet(CCmdUI* pCmdUI)
{
pCmdUI->Enable( GetDocument()->IsCommPortOpen() );
}
void CMainView::OnPbSelect()
{
CDlgPBSelect & dlgPBS = GetDocument()->m_dlgPBSelect;
UpdateData();
if( dlgPBS.DoModal() != IDOK )
{
return;
}
dlgPBS.m_phoneNoHead = m_callNoHead;
dlgPBS.MakeSelectNameString( m_callNo );
UpdateData( FALSE );
}
void CMainView::OnScaSelect()
{
CDlgPBSelect & dlgPBS = GetDocument()->m_dlgSCASelect;
UpdateData();
if( dlgPBS.DoModal() != IDOK )
{
return;
}
m_sca = dlgPBS.m_pbSelect.GetItemPhoneNo( 0 );
UpdateData( FALSE );
}
void CMainView::OnSmsAdd()
{
CMoblieXDoc * pDoc = GetDocument();
if( !pDoc->IsCommPortOpen() )
{
MessageBox( "尚未与手机建立连接" );
return;
}
UpdateData();
if( !( pDoc->AddSMS( m_sca, "00", m_sms ) ) )
// i = pDoc->AddSMS( m_sca, "8600000000000", m_sms );
{
MessageBox( "信息超过70个字,无法保存" );
}
}
void CMainView::OnChangeSms()
{
CString sBuf;
int i, counter;
m_smsCtrl.GetWindowText( sBuf );
for( i = 0, counter = 0; i < sBuf.GetLength(); i++ )
{
if( sBuf.GetAt(i) & 0x80 )
{
i++;
}
counter++;
}
sBuf.Format( "字数: %d", counter );
m_charNumCtrl.SetWindowText( sBuf );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -