Tonked.com
2001年5月9日
本文最初发表在 MSDN Online Voices 的 Two for the Road 专栏((英文))。
(英文)。
本月,我从硅村(Silicon Village)这一移动应用程序开发的中心来到您的身边。有些人可能不知道硅村,在此我特别介绍一下,硅村坐落于密歇根州的东南部,那里的大街上有每个正在彷徨的代码员所寻求的东西 - 11MB 无线网络连接。是的,您没有听错,在任何地方都可以获得 11 MB 的移动网络。我并不是指在办公室里。那是 eVC++ 移动应用程序向往者的事。我指的是在大街上,在 eVB 人群转悠的大街上。要到“赛百味”去吃午餐吗?嗨,带上您的 iPaq、PC 卡套和 Lucent 无线卡,您就可以在掌上访问 Internet。您正在为错过 eBay 上的 iPaq 大减价发愁吗?在硅村,这不是问题,因为您始终在网上。
不过,您需要足够的旅行指南。好了,如此说来,您已决定放弃自己舒适的办公室生活,要满腔热情地面对危险,拥抱移动应用程序开发员的生活方式了。我为您骄傲,同时也为您担忧。摆在您面前的是流浪编码员往来的新领域,这帮编码员就像从连续剧“Mad Max”中走出来的人物,腰间挂满了电子装置。
您选择的开发 工具 是 Microsoft 的 eMbedded Visual Basic® (eVB),利用它,您可以创建适合掌上设备的软件杰作。
如果您是一个有经验的 Visual Basic 开发人员,那么对您来说,eVB 就象是一块蛋糕,唔,也可能是小甜饼或小饼干之类的东西,不过肯定是甜的。
在本文中,我将带领您经历创建您第一个 eVB 应用程序的全过程。在您一头扎进使用 eVB 创建、编码和测试应用程序的工作之前,您将先学习需要了解的一切。
2001 eVB 之游
作为一个经验丰富的 Visual Basic 开发人员,一启动 eVB,您就会发现其界面让您有置身于家中的感觉。除了菜单有一些变化,工具栏上少了一些工具之外,其它一切都正如您想象的那样。
尽管如此,我仍然需要指出几个关键问题。第一个就是“工程”菜单。您可能会马上注意到该菜单下的大多数命令都不见了。事实上,您在 Visual Basic 中该菜单下能看到的大多数命令在这里都没有了。除窗体和标准模块之外,类模块、用户控件、数据环境或所有其它组件都不再存在。您可能会问,“怎么会这样?”答案非常简单 - eVB 不支持它们。
此时,我要给大家提一项会让最富经验的编码员都觉得扫兴的建议 - 阅读 eVB 附带的文档。我知道,您肯定在想“噢,Roof,这太过分。别逼我。我宁愿在闲暇时间与用户瞎混也不愿阅读文档。” 但在这件事上,您必须相信我。eVB 和 Visual Basic 之间存在许多差异,如果您不阅读文档,就会感到象是在指望 George Bush 来实现自己“成为百万富翁”的梦想一样。
由于我们正在谈论菜单,所以让我们谈谈“工具”菜单。最初,您将发现它似乎与 Visual Basic 的“工具”菜单毫无相同之处。可是一旦深入其中,您就会发现一组您想要熟悉的有用实用程序。花点时间研究一下注册表编辑器、控件管理器、文件查看器和缩放功能。其余的工具更多是为那些声称“我不在乎需要写多少行代码”并且整天忙于编码的 C++ 呆子准备的。就是阅读我的合作伙伴 John 的专栏的那类人。
SDK 不是令人讨厌的东西
如果您打算使用 eVB,就必须对 SDK 有所了解。在安装 eVB 的同时,最好安装一个或多个 Windows® CE 平台系统开发工具包 (SDK)。现在听起来要麻烦一些了。每个 SDK 都提供运行时、ActiveX® 控件和 仿真器 ,以用于特定 Windows CE 平台。
毫无疑问,SDK 中最有趣的组件是仿真器。有了仿真器,您可以不必使用某种设备。您可以在自己的 PC 机中很方便地进行一切开发和测试工作。也就是说,和使用设备一样。移动一族有多酷!您还想费力地移动自己的台式 PC 吗?
移动设备游第一站
言归正传,现在该开始设计您的第一个 eVB 应用程序了。在本文的以下部分,我将带您经历构建您第一个 eVB 应用程序的全过程,并向您说明如何在仿真器和在某种设备上对它进行测试。
“嗨,eVB 很酷吧?”应用程序
您在本文中将构建的应用程序是流行又滥用的“Hello World”应用程序。该应用程序的特殊之处在于:它不仅显示文本“Hello World”,还会象一个小巧轻便的字幕板一样滚动消息。现在,我知道您在想什么。与传统的“Hello World”应用程序不同,该应用程序具有商业潜力。只需让用户输入一则消息,他们即可拥有自己的手持广告机制。假设您只将这个软件卖 10 块钱,那么只需售出 100,000 份副本,您就会成为百万富翁。不过,我想我会捷足先登。让我们继续创建该应用程序。
开始一个新工程
要执行的第一个步骤就是创建一个新工程。为此,您可以执行以下步骤:
- 启动 eVB。显示“新工程”对话框。
- 选择“Windows CE for the Pocket PC”模板,然后单击“打开”按钮。
将创建一个新工程并将该工程加载到 eVB 设计环境。
构建界面
使用“窗体”窗口和“工具箱”构建用户界面,其中包括文本框、命令按钮、 定时器 控件,如下图所示。
图 1:“Hello World”的初始窗体
使用下表配置窗体和控件的属性。
对象 - 属性 | 值 |
Form1 | |
- Name | frmHelloWorld |
- Caption | Hello World |
Text1 | |
- Name | txtDisplay |
- BackColor | Black |
- Font | Tahoma 22 |
- ForeColor | Green |
- Height | 675 |
- Left | 60 |
- Text | (空字符串) |
- Top | 180 |
- Width | 3375 |
Command1 | |
- Name | cmdChangeDirection |
- Caption | 改变方向 |
- Height | 255 |
- Left | 60 |
- Top | 960 |
- Width | 3375 |
Timer1 | |
- Name | ceTimer |
- Enabled | False |
- Interval | 200 |
添加代码
在“工程”窗口中,选择 Project1。在“属性”窗口中,将“名称”更改为“HelloWorld”。
打开窗体模块的“代码”窗口。在模块的“一般声明”部分添加以下代码行:
Dim strDirection As String Dim strMessage As String Dim strTemp As String
变量 strDirection 将用于跟踪字幕滚动的方向。变量 strMessage 将用于保存在滚动字幕显示区显示的消息。变量 strTemp 用于处理在字幕中显示的消息。
在 Form Load 事件过程中插入以下代码:
Private Sub Form_Load() ´ 初始化变量。 strDirection = "向前" strMessage = "嗨,eVB 很酷吧?" strTemp = String(30, Asc(" ")) & strMessage ´ 启动字幕。 ceTimer.Enabled = True End Sub
该代码首先初始化该程序自始至终使用的三个字符串变量,然后打开定时器控件,定时器控件继而运行字幕。
在定时器控件的 Timer 事件过程中插入以下代码:
Private Sub ceTimer_Timer() ´ 根据滚动的方向,将该 ´ 字符串最左边或最右边的字符 ´ 取走并将其附加到相反的一端。 If (strDirection = "向前") Then strTemp = Right(strTemp, Len(strTemp) - 1) & _ Mid(strTemp, 1, 1) Else strTemp = Right(strTemp, 1) & Mid(strTemp, 1, _ Len(strTemp) - 1) End If ´ 显示字符串,让人感觉 ´ 文本正在滚动。 txtDisplay.Text = strTemp End Sub
该代码首先确定字幕滚动的方向。然后,它使用 eVB 的 Right、Len 和 Mid 函数来处理显示的字符串,使该应用程序具有滚动字幕的外观。
在 cmdChangeDirection 控件的 Click 事件中插入以下代码。
Private Sub cmdChangeDirection_Click() ´ 切换方向标记。 Select Case strDirection Case "向前" strDirection = "向后" Case "向后" strDirection = "向前" End Select End Sub
上述几行代码处理用于跟踪字幕滚动方向的标记切换。
这就是一个应用程序。您的第一个应用程序构建完毕。
在仿真器中测试您的应用程序
eVB 提供两种测试方法 - 在设备上或在仿真器中。仿真器在您的开发 PC 上运行,随 Pocket PC 和 H/PC Pro SDK 一起安装。通过这些仿真器,您无需使用设备即可测试自己的应用程序。仿真器也有一些缺点。在应用程序将如何在设备上运行这一方面,它们会误导您。PC 的运行速度比大多数设备都要快,而且还有一个数据输入键盘。另一个问题是仿真器只能在 Windows NT® 和 Windows 2000 下运行。
应用程序是在仿真器中运行还是在设备中运行,可通过“工程属性”对话框来控制。要将应用程序配置为在仿真器中运行,请执行以下步骤。
在“工程”菜单下,单击 HelloWorld 属性。如果“工程”菜单的底部没有 HelloWorld 属性选项,其原因是您没有按照本文前面所述的方法设置工程名。
此时会显示“工程属性”对话框,如下图所示。
图 2:“工程属性”对话框
使用“运行目标”组合框,选择“Pocket PC 仿真”。
“远程路径”配置将确定应用程序加载在仿真器上还是在连接的设备上。/Windows/Start Menu/ 的配置会使您的应用程序显示在目标环境的“开始”菜单中。
注意:Windows CE 的路径类似于 Windows 下的路径,只不过它们不包含驱动器盘符。
单击“确定”按钮,关闭“工程属性”对话框。
现在,您就可以在仿真器中运行自己的应用程序了。要启动您的应用程序,请执行以下步骤:
- 从“运行”菜单中单击“执行”。短暂的停顿之后,将启动 Pocket PC 仿真器,然后会加载并运行您的应用程序。
- 单击“改变方向”按钮,切换字幕滚动的方向。
- 单击位于正在仿真器中运行的应用程序右上角的“确定”按钮。应用程序将停止运行。
- 要关闭仿真器,单击仿真器左下角的黑色圆按钮。
注意:如果您想在仿真器中反复进行测试(是的,我们只构建和测试一次),那么让仿真器在两次测试之间处于运行状态会更加简单快捷。
在设备上测试应用程序
要在设备上测试您的应用程序,请执行以下步骤:
- 确定 Pocket PC 已连接到了您的台式 PC,且通信正在进行。
- 在“工程”菜单下,选择 HelloWorld 属性。将显示“工程属性”对话框。
- 使用“在目标上运行”组合框,选择“Pocket PC(默认设备)”。
- 从“运行”菜单中,单击“执行”。短暂的停顿之后,Pocket PC 将随着复制到您设备上的 eVB 组件显示一系列对话框。然后,将加载并运行您的应用程序。
- 单击“改变方向”按钮,切换字幕滚动的方向。
- 单击正在设备上运行的应用程序右上角的“确定”按钮。应用程序将停止运行。
创建安装例程
好了,如果您想大量销售自己新创作的可滚动“Hello World”应用程序,最好创建一个安装例程。很幸运,eVB 带有“应用程序安装向导”,它会引导您完成创建安装例程的全过程。
接下来,我将陪您一起经历创建应用程序安装例程的全过程。
- 在 eVB 中的“工具”菜单下,依次选择“远程工具”和“应用程序安装向导”。显示向导的起始页。如果您愿意,阅读一下它的内容。如果您对接下来的事更感兴趣,只需继续进行步骤 2。
- 单击“下一步”按钮。在下一页中,输入 eVB 工程的路径。工程文件的扩展名为 .ebp。
- 单击“下一步”按钮。在下一页中,输入 eVB 应用程序文件的路径。您的应用程序文件就是您的程序。在 eVB 中,它们的扩展名为 .vb。如果您尚未创建应用程序,可以从 eVB 环境中创建一个应用程序文件,方法是选择“文件”菜单下的“制作”。
- 单击“下一步”按钮。在下一页中,输入要用来存放安装文件的目录路径。由于安装程序会创建多个文件和文件夹,所以最好不要将它同您的应用程序放在同一个文件夹中。
- 单击“下一步”按钮。在下一页中,选择应用程序将支持的
处理器
类型。此列表中显示的处理器类型取决于您在启动工程时指定的工程类型。例如,如果您是用 Pocket PC 模板启动的,则在此页中会看到四种处理器。
- 单击“下一步”按钮。在下一页中,选择要随应用程序一起安装的任何附加 ActiveX 控件或引用。通常,在此向导页中,除非您使用的 ActiveX 控件或引用不提供桌面组件,否则您不必作出任何选择。向导是智能的,它能从您的工程文件中搜集其余控件或引用。
- 单击“下一步”按钮。在下一页中,添加所有将随应用程序一起使用的附加文件。您可能想包括的文件通常有自述文档、空数据库文件以及其它辅助文件。
- 如果您的目标设备中已有设备运行时文件,则可以取消选择用于包括这些文件的选项。这样可以减小安装程序的大小。所有 Pocket PC 在 ROM 中都带有 eVB 运行时。
- 单击“下一步”按钮。在下一页中,输入适用于应用程序的安装信息。
- 单击“下一步”按钮。在下一页中,说明最终用户可以在安装过程中替换您在此处提供的安装目录。该目录将在目标设备上的 Program Files 文件夹下创建。
- 至此,您就可以创建安装了。单击“创建安装”按钮。当创建安装时,将显示许多命令窗口。创建完成后,该向导页的界面将发生更改,“完成”按钮变为可用。
- 单击“完成”按钮结束安装向导。向导将自动关闭。
应用程序安装向导创建的内容
完成应用程序安装向导之后,您将在指定向导使用的路径下发现许多文件和支持文件夹。其中大多数文件在生成安装例程时都使用过,因而无需发送给最终用户。
您只需将位于 CD1 目录中的文件发送给应用程序的最终用户。您还需要发送 Setup.exe 和 Setup.ini 文件以及与用户的设备处理器类型相匹配的 .CAB 文件。
eVB 应用程序文件与处理器无关。也就是说,同一 .vb 文件可在任何目标设备上运行。其它文件(如 eVB 运行时文件和 ActiveX 控件)则与处理器有关。因此,每种独特的处理器都需要创建一个单独的 .CAB 文件。
您应该在相应的目标设备上测试每一种安装例程,以确认它能够正确安装您的应用程序。如果您在用于开发的设备上进行测试,那么应首先在该设备上执行硬重置,以便将每种设置恢复为出厂时的设置。这样,您就可以知道所安装的应用程序是否将在任何此类设备上正确运行。
这就是构建和测试 eVB 应用程序的整个过程。正如您所看到的那样,除使用仿真器和设备之外,使用 eVB 创建应用程序的过程与在 Visual Basic 中创建桌面应用程序的过程非常类似。
此路通向何方
如果此时您兴奋得无法入睡,请访问以下站点:
- deVBuzz (www.deVBuzz.com):eVB 初学者入门的地方。
- VBCE 新闻组 (microsoft.public.vb.vbce):eVB 开发人员聚集在一起交流想法、 解决方案 和编程趣事的地方。
返回原路
这就是本月的话题。现在,您可以离开此处,去构建一些很酷的 eVB 应用程序。然后,将您的最新作品以及您那纯熟的 eVB 技巧告诉我,我的地址是:。几个星期后,不要忘了回到此处,访问 John 的专栏。让他告诉您在 eVC++ 中创建移动设备字幕“Hello World”应用程序用了多少行代码。不必惊讶,您将需要教会您的孙儿孙女们如何编码,让他们继续您此生未尽的事业。
到此为止吧。我已经戴上太阳镜,背上六听装的可口可乐,马上就要动身到阳光明媚的加州去冲浪,在那里,我将在下个月向您介绍如何使用带 Pocket Access 和 SQL Server CE 的 ADOCE。