将 Windows CE 应用程序移植到 Windows Mobile

Posted

技术标签:

【中文标题】将 Windows CE 应用程序移植到 Windows Mobile【英文标题】:Port Windows CE app to Windows Mobile 【发布时间】:2010-01-26 22:17:41 【问题描述】:

我有一个相当复杂的应用程序,它最初是为 Windows CE 构建的(使用 Visual Studio 2008,C# 2.0)。我现在正试图让它在 Windows Mobile 设备上运行。但是,有一些 UI 怪癖。我注意到背景颜色全是白色,并且很多控件周围似乎没有任何边框,就像 WinCE 上的那样。但是,我最大的问题是我的应用程序似乎占据了全屏,所以我看不到带有开始菜单和点击的顶部任务栏(大概是我的应用程序的关闭按钮?)。我也看不到通常具有显示/隐藏键盘图标的底部栏(任务栏?)。

我的表单在 CE 上设置为最大化,因此它应该占用大部分屏幕空间,而不是任务栏。我注意到在创建新的智能设备项目时,Visual Studio 会提示输入目标平台(Windows CE 或 Windows Mobile)。我真的希望我不必重新编译我的应用程序就可以在 Windows Mobile 上正常工作。

【问题讨论】:

【参考方案1】:

在 Windows Mobile 上,将表单的 WindowsState 属性设置为 FormWindowState.Maximized 将导致表单变为全屏覆盖顶部的导航栏等。

我已经做了很多 Windows Mobile Windows CE 移植,一般来说,如果我需要解决这样的差异,我最终会在执行平台检测检查后在运行时设置适用的属性。

使用 .NET CF 3.5,您最终可能会得到以下结果:

using Microsoft.WindowsCE.Forms;

if (SystemSettings.Platform == WinCEPlatform.WinCEGeneric)
  this.WindowState = FormWindowState.Maximized;
else
  this.WindowState = FormWindowState.Normal; // Pocket PC or Smartphone

幸运的是,出现这种差异的情况并不多。

对于提示您选择目标平台的 Visual Studio,在大多数情况下(至少对于基于 .NET CF 的项目),这只是更改了您可以选择的表单设计器工具箱中的模拟器和控件列表。

在大多数情况下,您应该能够针对一个平台构建应用程序并在另一个平台上运行生成的可执行文件。

此功能的一个方便用途是,如果您尝试使用特定平台不支持的内容,它会向您提供警告。例如,如果您尝试使用 System.Windows.Forms.Button 控件,则选择智能手机平台会发出警告,因为智能手机(非触摸屏)设备不支持这些。

【讨论】:

我使用的是 .NET CF 2.0,如何获得 SystemSettings.Platform 的等效项? 看看我的一篇博文 - christec.co.nz/blog/archives/77 - 通过几个 PInvokes 等,您可以得出类似的信息【参考方案2】:

您现在已经发现,Windows Mobile 应用程序的屏幕空间比 Windows CE 少一些。您将有一个顶部和底部栏,有时还有一个用于托盘图标的底部栏。

要解决这个问题,您应该进行平台检查,然后如果它是 windows mobile 的,则使您的表单更小。 如果在不更改表单的情况下无法做到这一点(就像我的大多数情况一样),您可以尝试使用软键并摆脱任何按钮、复选框等。软键可以用作按钮,也可以是菜单,甚至是菜单内的菜单。

如果您已经在 Windows CE 中运行了应用程序,则不必担心目标平台。您不必切换到 Windows Mobile,尽管您可以访问模拟器和工具箱中支持的控件,正如已经指出的那样。

【讨论】:

以上是关于将 Windows CE 应用程序移植到 Windows Mobile的主要内容,如果未能解决你的问题,请参考以下文章

将 32 位 Windows 驱动程序移植到 64 位 Windows

是否可以使用 Cygwin 或 MinGW 将 Linux 守护程序移植到 Windows?

将 Qt 应用程序从 Linux 移植到 Windows

vala 是跨平台语言吗?

如何将 MFC 应用程序移植到 Windows Embedded Compact 7?

将 Windows 编译的 QT 应用程序移植到 Linux?