由於本人非常窮 所以自己是沒有機器的 所有的程式都在模擬器裡完成
這是本人學習mobile開發的感想和例子 學習的東西大都來自微軟的webcast和msdn,基本上不是原創.就是整理再發表.
前面的文章 已經安裝完了開發環境,今天就開始寫第一個程式。首先我們進入vs2005
然後是File->new->project->visual c#->smart device->windows mobile 5.0 smartphone->Device Application,選擇儲存工程路徑,單擊OK 工程建立完成。進入開發介面。模擬器的
挺漂亮的
習慣性的先到工具列裡看看 發現很多控制項,其中包括了常用控制項:Lable、TextBox、PictureBox、ComboBox、ListView、TreeView、ProgressBar、CheckBox、DaTeTimePicker、LinkLable、WebBrowser,容器控制項:Panle,菜單工具列控制項 MainMenu,資料繫結顯示控制項:BindingSource、DataGrid 裝置群組件:ImageList、MessageQueue、SerialPort、Timer。如果開發過電腦windows程式 這些控制項是很熟悉的了。
smartphone檔案系統不是以盤符分的 就是一個根目錄.程式中操作只支援絕對路徑。在.net裡操作檔案和目錄使用的名稱空間為System.IO,而擷取指定檔案夾的路徑要使用API,SHGetSpecialFolderPath函數,儲存卡的是以"\Storage Card"目錄形式出現,操作儲存卡的的API有FindFirstFlashCard,FindNextFlashCard等。
在smartphone中支援的一些特用的API,分為託管和本地的API,
首先介紹一下電話撥號的託管的API,在名稱空間Microsoft.WindwosMobile.Telephony其中的Phone.Talk(string PhoneNumber)主要用來呼叫一個號碼,如果想得到更詳細的撥號資訊智能調用本地API--TAPI,這個將在以後的文章中具體介紹,主要是用來得到撥出和撥入的狀態操作等,它需要包含TAPI.H標頭檔,引入CoreDll.lib類庫。
第二個介紹是簡訊API,託管的API有在名稱空間Microsoft.WindwosMobile.PocketOutlook.SmsMessage下的SmsMessage.Send(SmsMessage)的函數,而本地的API包含SmsOpen,SmsSendMessage,SmsGetPhoneNumber,SmsClose等方法,包含在sms.h標頭檔,需要引用sms.lib的類庫。託管類的名稱空間Microsoft.WindwosMobile.PocketOutlook除了可以傳送簡訊的功能還包含了發送郵件,新增工作,約會和連絡人的功能。
在.Net CF中還包含了一些對方框 使操作手機裡的檔案更容易操作,其中常用的有CameraCaptureDialog照相機對方框,ChooseContactDialog連絡人對方框,SelectPicturDialog選擇圖片對話方塊。這些對話方塊的應用以後再說.
接下來將寫一個程式包括髮送簡訊 郵件 撥打到電話和添加約會的功能
首先在一開始建立的工程中的Form1的MainMenu中添加的功能表項目,
接著就是在各個功能表項目的click事件中添加下邊的代碼
/**//// <summary>
/// 撥打到電話
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuItem5_Click(object sender, EventArgs e)
{
Phone myphone = new Phone();
myphone.Talk("0573-1234567");
}
/**//// <summary>
/// 傳送簡訊
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuItem3_Click(object sender, EventArgs e)
{
Microsoft.WindowsMobile.PocketOutlook.SmsMessage smsM = new SmsMessage();
smsM.Body = "Hello World";
smsM.To.Add(new Recipient("老楊","133002121629"));
//發送成功 得到一個反饋
smsM.RequestDeliveryReport=true;
smsM.Send();
}
/**//// <summary>
/// 發送郵件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuItem4_Click(object sender, EventArgs e)
{
Microsoft.WindowsMobile.PocketOutlook.EmailMessage emailM = new EmailMessage();
emailM.Subject = "Hello World";
emailM.BodyText = "我打..";
emailM.To.Add(new Recipient("大個", "Teaks@hotmail.com"));
//添加附件
//Attachment attach=new Attachment("\luxv\g.gif");
//emailM.Attachments.Add(attach);
//emailM.Send("大個");
}
/**//// <summary>
/// 添加約會
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void menuItem7_Click(object sender, EventArgs e)
{
Microsoft.WindowsMobile.PocketOutlook.OutlookSession mysession = new OutlookSession();
Appointment apment =new Appointment ();
apment.Subject="test";
apment.Body ="吃飯";
apment.Start=DateTime.Now;
apment.End=DateTime.Now.AddDays(4);
mysession.Appointments.Items.Add(apment);
apment.ShowDialog();
}
寫完這些就可以把傳統手機的常用功能學習到了.
代碼例子
需要注意的windows mobile5.0預裝的是.net cf1.1 sp3,如果要運行.net cf2.0的程式,需要自己安裝.net cf 2.0。
路漫漫其修遠兮 吾將上下而求索