将Pocket PC移植到Smartphone 2002

类别:软件工程 点击:0 评论:0 推荐:
作者:Yaroslav Goncharov(如需转载请联系原作者)
2002年5月22日
原文链接:http://www.codeguru.com/Cpp/W-P/ce/smartphone/article.php/c3531/

介绍

有很多Windows CE 3.0的应用程序可以证明这个操作系统对于Smartphone 2002平台的重要性。这个平台基于Windows CE 3.0;对于软件的移植来说,这可是一个好兆头。不过,这一新的移动平台仍然有很多特殊的地方,例如较小的屏幕、不支持触摸屏和一些其它的用户界面概念,这些概念可能会成为软件开发者的潜在问题。关于这些平台间主要的区别,在Introduction to Smartphone 2002 for Pocket PC developers中已经列出了。
为了感受一下将各种方面到新平台,我决定移植一个已有的Pocket PC应用程序,它没有使用MFC。Pocket PC 2002 SDK中有一个简单的注册表查看工具例程,名字是“PSPCMonkey”,本文就描述了这个程序的移植过程,包括从用户界面设计到详细实现的各个部分。
本文还示范了Smartphone 2002平台上较为特别的技术,例如:
·使用新的菜单条资源,包括它一个已知的相关问题及其解决方法。
·创建可扩展的编辑框和列表框。
·实现“回退”键的支持。
·创建标准的Smartphone 2002标签。


Pocket PC


SmartPhone 2002

开始

最初的第一步是在Smartphone 2002平台下不做任何的改动来编译应用程序。它是使用纯粹的API编写的,因此我们有机会从编译器得到一个很好的结果。



我们得到了一个完美的结果——0 error(s) and 0 warning(s),就像先前我们所期望的那样。现在让我们来运行这个应用程序,从Smartphone 2002的角度来看看它吧。



这个结果看起来并不是太好。快速回顾一下这个程序,我们会发现还有以下的事情要做:
·列表框。根据Smartphone 2002的指导方针,列表框应该只包括一行。
·菜单条。这个应用程序应该包含一个它自己的菜单条。
·回退键。应用程序应该支持一个“回退”键。
·按钮。Smartphone 2002下是不支持按钮的。
·屏幕区域。控件并不适合屏幕。对话框能够使用垂直滚动来定位所有的控件。
·标签。标签应该和标准的Smartphone 2002标签看起来一样。
·标题条。标题条应该显示应用程序的名称,消息框的标题不应该太长。
·控件的行为。Smartphone是没有触摸屏的。

用户界面设计

用户界面的设计是移植中最重要的方面。较小的屏幕、没有触摸屏以及这另一组控件都应该考虑。用户界面设计应该分为几步。

    

布局设计

在Smartphone 2002屏幕上放置控件最主要的规则是“一个控件应该占据一行”。建议你使用标签来表示控件中所显示何种类型的信息。标签应该直接放置在控件的上方。

控件

根据Smartphone 2002的指导方针,列表框应该只包括一行。浏览可以用两种方法实现:使用一个带有左/右按钮的微调控件以及使用列表的展开视图。列表的展开视图在我们这种情况下非常有用,因为列表中会拥有很多的项目。
在Smartphone 2002平台下是不支持按钮的,一个好的解决方法是将它们替换为菜单条上的菜单项。
菜单条的动作按钮(左边的软键)将代替鼠标的点击。用户将使用这个键来进入注册表的键中。第二个软键通常用于菜单,但是我们现在这个简单的应用程序中还没有菜单。因此,在菜单条中我们还需要另外一个键:“回退”项来代替原应用程序的“回退/向上”按钮。

行为

通常,应用程序的用户界面是依赖于鼠标(手写笔)事件的。Smartphone 2002则并不会有产生点击事件的机会,因为它没有触摸屏。在我们这种情况下,我们拥有一个非常简单的应用程序,但在没有触摸屏的情况下它是无法工作的!问题就在于列表框是利用点击来浏览的。我们将使用菜单条中特殊的菜单项来代替这些点击。

实现

可扩展的列表框和编辑框

我们需要减少列表框的高度,并添加微调控件来实现项目的选择和扩展。以下的资源代码根据这些需求创建了一个列表框资源。

LISTBOX   IDL_LISTBOX,4,15,131,10,
          WS_TABSTOP | WS_VISIBLE | LBS_NOINTEGRALHEIGHT
CONTROL   "", IDC_UPDOWN, UPDOWN_CLASS,
          WS_VISIBLE | UDS_AUTOBUDDY | UDS_HORZ | UDS_ALIGNRIGHT |
          UDS_ARROWKEYS | UDS_SETBUDDYINT | UDS_WRAP | UDS_EXPANDABLE,
          0,0,0,0

本文地址:http://com.8s8s.com/it/it31976.htm