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

📄 mainview.cpp

📁 通过手机数据线连接手机
💻 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 + -