图1 标准的SmartPhone界面
在这个控制面版上有两个Soft键、一个Home键、一个Back键和五个方向键,下面是十个数字键以及"*"和"#" 键。Microsoft强烈建议使用这个按键结构。在这些键中,所有的控制键(如Soft和Home键等)是必须的。然而,这些设备并不是由Microsoft制造的,而是由大大小小的移动设备生产商所制造,因此,这些设备的外观和结构可能和Microsoft所推荐的这个设备有一些出入。
最近,Microsoft发布了Windows Mobile 2003的第二版,开发人员可以选择以下的开发工具为Windows Mobile开发软件,这些软件有基于Win32的,也有基于Microsoft .NET Compact Framework的。
1、 Embedded VC++ 4.0
2、 Visual Studio .NET - C#, VB.NET
一个简单的Hello World程序
现在让我们进入主题,开发一个简单的Hello World程序。编写这个程序最先要做的就是下载可以运行在Visual Studio2003中的SmartPhone2003开发包。在安装完这个开发包后,SmartPhone的开发环境和一个SmartPhone模拟器已经被安装到了你的机器上。
在安装完SDK后,启动Visual Studio,在工程模板中选择Smart Device应用程序,给它起一个名字,然后点击OK,现在,你将看到如图2的欢迎界面。
图2 Smart Phone的欢迎界面
选择SmartPhone和Windows Application后,点击OK按钮。现在,你将看到如图3所示的开发界面。
图3 SmartPhone的开发界面
在右侧的工具栏上,你可以看到一个控件面版,在这个面版上有一些我们熟悉的控件,但这些控件是不可用的,这是因为SmartPhone并不支持这些控件。
现在,我们已经可以开发SmartPhone应用程序了。我们首先应该考虑到,通常手机只用一只手操作,因此,应用程序的导航键应该容易操作。在手机上的"Soft"键通常充当导航键。如果你仔细观察Visual Studio,你就可以注意到Visual Studio已经为我们建立了一个默认的菜单控件。Visual Studio建议我们使用这个MainMenu控件,这个菜单最终将成为导航键来控制我们的SmartPhone应用程序。
现在,让我们按图4所示建立一个菜单结构:
图4 SmartPhone菜单
双击"Say Hello"菜单可以写执行代码:
private void menuItem2_Click(object sender,System.EventArgs e){ MessageBox.Show("Hello Logu!");}
下面是 "Exit"菜单的代码:
private void menuItem3_Click(object sender, System.EventArgs e){ this.Close();}
现在按F5运行程序,将会弹出一个如图5的对话框,这个弹出的对话框可以让你选择使用哪一个设备运行这个程序,我们选择"Smartphone 2003 Emulator(Virtual Radio)(Default)",然后点击"Deploy"
图5 选择运行设备对话框
现在模拟器已经启动,界面如图6所示。我们的应用程序已经被安装在模拟器上了,在上面出现了一个提示,并且左下角出现一个"OK"。
图6 模拟器
单击"OK"运行我们的程序。
现在我们的.NET程序已经运行了。在应用程序被运行后,单击"My Menu"中的"Say Hello",你将看到如图7所示的信息框。现在,你还可以选择SmartPhone设备,并这个程序直接发布到这个设备上。由于打包和发布并不属于本文的内容,因此,在这里不再讨论。
图7 程序运行界面
SmartPhone所支持的API
以下是SmartPhone所支持的API列表
ActiveSync API
Bluetooth(蓝牙)API
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)CE Messaging API
Device Management(设备管理) API
Home Screen API
Object Exchange (OBEX)
Pocket Outlook Object Model (POOM)
Speech Recognizer
o Telephony - TAPI
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)o Accessing the SIM card
o P/Invoke to native SIM Toolkit APIs
RAPI - Remote API to connect to the desktops programmatically
GAPI - To develop Mobile games(用于开发游戏的API)
Vibrate API
Voice Recorder Controls (用于录音的API)