?? smssenddlg.cpp
字號(hào):
// smssendDlg.cpp : 實(shí)現(xiàn)文件
//
#include "stdafx.h"
#include "smssend.h"
#include "smssendDlg.h"
#include "configDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CCriticalSection g_cs;
// CSmsSendDlg 對話框
CSmsSendDlg::CSmsSendDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSmsSendDlg::IDD, pParent)
, m_smsContent(_T(""))
, m_detiPhoneCode(_T("13522331696"))
, m_smsCenter(_T(""))
, m_StatusReport(true)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CSmsSendDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT2, m_smsContent);
DDX_Text(pDX, IDC_NUMBER, m_detiPhoneCode);
DDX_Check(pDX, IDC_CHECK1, m_StatusReport);
}
BEGIN_MESSAGE_MAP(CSmsSendDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, &CSmsSendDlg::OnBnClickedSend)
ON_COMMAND(ID_CONFIG, &CSmsSendDlg::OnConfig)
ON_EN_CHANGE(IDC_EDIT2, &CSmsSendDlg::OnEnChangeEdit2)
ON_MESSAGE(WM_UPDATACHARNUMBER, &CSmsSendDlg::OnUpdateCharNumber)
END_MESSAGE_MAP()
// CSmsSendDlg 消息處理程序
BOOL CSmsSendDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 設(shè)置此對話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對話框時(shí),框架將自動(dòng)
// 執(zhí)行此操作
SetIcon(m_hIcon, TRUE); // 設(shè)置大圖標(biāo)
SetIcon(m_hIcon, FALSE); // 設(shè)置小圖標(biāo)
SHMENUBARINFO mbi;
memset(&mbi, 0, sizeof(SHMENUBARINFO));
mbi.cbSize = sizeof(SHMENUBARINFO);
mbi.hwndParent = this->m_hWnd;
mbi.dwFlags = SHCMBF_HMENU;
mbi.nToolBarId = IDR_MAINMENU;
mbi.hInstRes = AfxGetInstanceHandle();
mbi.nBmpId = 0;
mbi.cBmpImages = 0;
SHCreateMenuBar(&mbi);
AfxBeginThread(CheckASCIIFunc, (LPVOID)this);
if ( sms.Init() != 1)
{
AfxMessageBox(_T("初始化短信環(huán)境出錯(cuò),請檢查"));
}
if ( sms.GetCenterCode(m_smsCenter) != 1)
{
AfxMessageBox(_T("短信中心號(hào)碼未設(shè)置或設(shè)置有誤,請重新設(shè)置"));
}
return TRUE; // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE
}
void CSmsSendDlg::OnBnClickedSend()
{
// TODO: 在此添加控件通知處理程序代碼
g_cs.Lock();
UpdateData(false);
g_cs.Unlock();
bool onlyASCII = true;
LPTSTR lp = m_smsContent.GetBuffer(0);
for (int i=0;i<m_smsContent.GetLength();i++)
{
if( !IsASCII(lp+i) )
{
onlyASCII = false;
break;
}
}
sms.Send(m_detiPhoneCode, m_smsContent, onlyASCII, m_StatusReport);
}
void CSmsSendDlg::OnConfig()
{
// TODO: 在此添加命令處理程序代碼
configDlg config;
if (m_smsCenter.IsEmpty())
{
config.m_centerCode = _T("13800210500");
}
else
{
config.m_centerCode = m_smsCenter;
}
INT_PTR nResponse = config.DoModal();
if (nResponse == IDOK)
{
m_smsCenter = config.m_centerCode;
// TODO: 在此處放置處理何時(shí)用“確定”來關(guān)閉
// 對話框的代碼
}
else
{
}
}
void CSmsSendDlg::OnEnChangeEdit2()
{
// TODO: 如果該控件是 RICHEDIT 控件,則它將不會(huì)
// 發(fā)送該通知,除非重寫 CDialog::OnInitDialog()
// 函數(shù)并調(diào)用 CRichEditCtrl().SetEventMask(),
// 同時(shí)將 ENM_CHANGE 標(biāo)志“或”運(yùn)算到掩碼中。
// TODO: 在此添加控件通知處理程序代碼
g_cs.Lock();
GetDlgItemText(IDC_SMSCONTENT, m_smsContent);
g_cs.Unlock();
}
bool CSmsSendDlg::IsASCII(const PTSTR lp)
{
BYTE * character = (BYTE *)lp;
if ( *character >0 && *character<128 && *(character+1) ==0)
{
return true;
}
else
{
return false;
}
}
UINT CSmsSendDlg::CheckASCIIFunc(LPVOID pParam)
{
CSmsSendDlg * pDlg = (CSmsSendDlg *)pParam;
static int lastNumber = -1;
PTSTR lp;
int charNumber = -1;
while (true)
{
g_cs.Lock();
charNumber = pDlg->m_smsContent.GetLength();
if (charNumber == lastNumber)
{
g_cs.Unlock();
}
else
{
lp = new TCHAR[charNumber];
CopyMemory(lp, pDlg->m_smsContent.GetBuffer(charNumber), charNumber * sizeof(TCHAR));
g_cs.Unlock();
bool onlyASCII = true;
for (int i=0;i<charNumber;i++)
{
if( !IsASCII(lp+i) )
{
onlyASCII = false;
break;
}
}
delete lp;
::PostMessage(pDlg->GetSafeHwnd(), WM_UPDATACHARNUMBER, (WPARAM)onlyASCII, (LPARAM)charNumber);
lastNumber = charNumber;
}
Sleep(300);
}
return 0;
}
LRESULT CSmsSendDlg::OnUpdateCharNumber(WPARAM wParam, LPARAM lParam)
{
bool onlyASCII = (bool) wParam;
int charNumber = (int) lParam;
CString currentChar;
currentChar.Format(_T("%d/%d %s文 %d條"), charNumber, onlyASCII?160:70, onlyASCII?_T("英"):_T("中"), onlyASCII?charNumber/160 +1 :charNumber/70 + 1);
GetDlgItem(IDC_CHARNUMBER)->SetWindowText((LPCTSTR)currentChar);
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -