『原创』用C++开发WM应用系列(3)——发送SMS

用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新手,只能说一句,坚持就是胜利!呵呵~~

后记:

  也是过年了,好好享受一下假期,所以可能下一节的内容会在节后更新,感谢大家的支持!

posted @ 2010-02-08 08:52  Jack Fan  阅读(1462)  评论(4编辑  收藏  举报
TOP