『原創』用C++開發WM應用系列(3)——發送SMS

來源:互聯網
上載者:User

用C++開發WM應用系列文章索引

引言

  接上一節,我們學會了如何在PPC中,撥打到電話,可是,電話號碼是硬式編碼,肯定不行,所以,在這一節中,我們使用一個CEdit控制項來供使用者輸入號碼,從程式擷取這個號碼並撥打,當然,照葫蘆畫瓢,我們來實踐一把WM6 sdk內建的Hello(SMS)簡訊發送執行個體。在這一節中,我們要學習如何從CEdit控制項擷取字串,以及發送Sms簡訊息。

本文

  上一節中,我們的使用者介面如下,不過可以看到,我又拖拽了一個Button控制項到Make it 按鈕下方,並修改它的Caption屬性為Send SMS。以及一個Cedit控制項到Make it按鈕上方。 

 

  然後,也許在C#下,一個textbox的值直接在代碼中即可獲得,但是在cpp裡,那個CEdit是一個特殊控制項,詳細使用請看網路搜尋結果,在這裡只是列舉了一個簡單方法。我們按右鍵這個CEdit控制項,選擇添加變數。

在添加變數的嚮導中,我們設定變數類型就為“CEdit”,變數名稱為:telNum,其他保持預設,點擊完成,這樣我們就建立了一個引用到CEdit的變數telNum了。接下來,我們修改Make it按鈕的代碼:

 

Make it代碼

void CMakeCallDlg::OnBnClickedButton1()
{
PHONEMAKECALLINFO callinfo;

callinfo.cbSize = sizeof(callinfo);

callinfo.dwFlags= PMCF_PROMPTBEFORECALLING;//這個參數是說,撥號前先取得使用者許可,而這個參數PMCF_DEFAULT則是直接撥號
CString telephone;
telNum.GetWindowText(telephone);//從CEdit中取得Text放入到telephone中

callinfo.pszDestAddress = telephone;

if(PhoneMakeCall(&callinfo)==0)
{

}
else
{
MessageBox(L"Dialg Failed!",L"Tips",0);
}
}

 

代碼清晰可見,與原來的相差無幾,無非就是處理了電話號碼。到這裡,上一節總算是告一段落~接下來,我們看看SMS功能吧。本來這個功能在.net cf下是很簡單的,可是唉~~算了,我們開啟WM6 sdk下的那個cpp Hello(SMS)執行個體,看了一下,我發現自己無須寫太多,在此也就是重申一下一些個人感覺比較重要的地方,我開啟了那個樣本,拷貝了那個SendSMS()方法到自己的MakeCallDlg.cpp中,為項目添加sms.lib的引用,當然了,這裡還是看圖說話:

我們添加了一個sms.lib引用,這也是SDK文檔中說明的啦~。

有了這個還不行,還要到MakeCallDlg.cpp中,#include"sms.h",在代碼中還要先申明一下SendSMS()方法如下:

void SendSMS(BOOL bSendConfirmation, BOOL bUseDefaultSMSC, LPCTSTR lpszSMSC, LPCTSTR lpszRecipient, LPCTSTR lpszMessage);

相信各位一定從樣本程式看到一些端倪了,我在此就不多說,到這裡,我們只需要為Send SMS按鈕添加一個事件處理常式即可,方法照舊,往方法體中添加如下代碼:

 

void CMakeCallDlg::OnBnClickedButton2()
{
CString number;
telNum.GetWindowText(number);
SendSMS(true,true,L"",number,L"Test");
}

 

在這裡說明一下,bSendConfirmation是資訊回執的意思,bUseDefaultSMSC是是否使用預設簡訊中心號碼,lpszSMSC是簡訊中心號碼,lpszRecipient是收件者號碼,最後一個當然是簡訊內容了。下面是運行:

在輸入框中輸入10086,然後點擊“Make it”按鈕,則先提示是否撥打,點擊Yes後,可以看到Cell模擬器有撥打到電話的動作了:

之後,我們掛斷電話,再點擊Send SMS按鈕,如果發送成功,則出現如下畫面,我們也可從Cell模擬器中看到剛才發送的簡訊:

  OK,今天就到這裡吧,照舊,上一節以及本節的程式碼範例項目均可以在此下載到。

  快過年了~Jack跟各位大小蝦拜個早年!身體健康、工作順利!嘿嘿~~~~

總結:

  今天我們接觸了一個CEdit控制項,貌似以後很長一段時間內都要遇到他,所以大家有空可以研究研究。然後,今天還看到了一個SendSMS方法,這個方法請查閱MSDN或者WM6 sdk文檔,均有詳細說明。

  由於時間倉促,這個程式簡訊部分沒有在真機測試過,可能會存在問題,比如簡訊中心,收件者號碼等,希望大家在測試的時候注意。

問題:

  還待發現中,貌似這些例子比較簡單,我們暫且還沒有啥大問題,不過在平常,什麼字串轉換的異常,類型轉換的異常,一直在伴隨著我們這些cpp新手,只能說一句,堅持就是勝利!呵呵~~

後記:

  也是過年了,好好享受一下假期,所以可能下一節的內容會在節後更新,感謝大家的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.