“ 内存 ”设置控制面板将列表框重新设置为最大尺寸,然后重新确定它四周所有界面元素的位置。
●更改内容
“ 日历 ”在横向显示模式下一次只显示 8 个月份。
●更改布局
在横向显示模式下,Windows Media Player 的按钮出现在视频内容的一侧,不是在下端。
●设计正方形
日历“选项”对话框的整个内容在两种取向模式下都显示在 240x240 的正方形区域内。
请记住,要尽可能的设计通用布局,这样应用程序可处理任意尺寸和任何宽高比的显示内容。这意味着尽可能避免分开设计横竖向模式。如果必须设计不同的横竖向布局模式,不要简单地因屏幕宽度大于屏幕高度,而假设应用程序能在横向模式下显示。例如, 设备 屏幕宽可能有 321 个像素,而屏幕高有 320 个像素。在这样的设备上,应用程序也许能以横竖向两种模式显示,应选择应用程序最适用或首选的模式,这可能是竖向模式。
五、RelayoutDialog
在 CrosswordSample 应用程序中,有一个函数是 RelayoutDialog,它可帮助重新设置、重新定位对话框中的子控件。例如,假设对话框有两个对话模板,一个用于横向,一个用于竖向。如果这两个模板中的控件相同,且有相同的控件 ID,则可使用下列代码作为 WM_SIZE 处理程序:
case WM_SIZE:
RelayoutDialog(g_hInst, hDlg, InWideMode() ?
MAKEINTRESOURCE(IDD_TOOLS_OPTIONS_1_WIDE) :
MAKEINTRESOURCE(IDD_TOOLS_OPTIONS_1));
注意: 定义为 IDC_STATIC 的控件具有相同的控件 ID,所以如果有多个 IDC_STATIC控件,应当把它们重命名为 IDC_STATIC_1、IDC_STATIC_2等。
如果静态控件在新布局中也发生了变换,RelayoutDialog 会同时更新静态控件的文本和位图。
六、原有应用程序的特性
当用户在基于 Windows Mobile 2003 第二版的 Pocket PC 上运行旧应用程序时,用户还保留了以往在竖向模式下的经验,但竖向模式与横向模式的经验将有所不同。在横向模式下,对话框的下半部分可能跑出屏幕底线之外。为了解决这个问题,系统将显示一个垂直滚动条,允许用户滚动屏幕。只有存在常出现于竖向屏幕底部的控件时,才出现垂直滚动条。如果不出现,则不出现滚动条。
应用程序是否是“原有”应用程序,取决于可执行文件头中的子系统版本。默认情况下,使用 Windows Mobile 2003 SDK 编译的应用程序中的子系统版本号为 4.20 或更低版本号,在将来版本的 Pocket PC SDK 中子系统版本号为 4.21 或更高版本号。子系统版本号为 4.20 或低于 4.20 时被认为是旧应用程序,可以看见滚动条。
知道了这种特性,用户就能通过滚动条看见隐藏的图像(假设不能直接看见的图像和控件)。此外,您仍可以使用这种技术快速存储或检索图像,但应在屏幕的左侧完成这项工作。
理想情况下,对话框不应需要滚动条。为此,最好的方法是:使对话框控件在竖向模式下不被“输入面板”覆盖,故最好设计 240x240 的最低分辨率。
七、安装警告消息
当在基于 Windows Mobile 的可旋转屏幕的 Pocket PC 上安装了旧应用程序时,将出现以下消息,如图 11 所示:
图 11:安装警告消息
这个对话告诉用户,他们要使用的应用程序程序可能无法识别正方形屏幕旋转,因此不能在横向模式下正确显示。只有 VersionMin 值(它指定应用程序支持的最低操作系统版本号)低于 4.21,才显示这个对话。
由于将 VersionMin 设置为 4.21 将阻止把应用程序安装在基于旧 Windows Mobile 的 Pocket PC 上,所以建议把BuildMax 值(不常用)设置为表 2 中的值,禁用此消息:
表 2:BuildMax 值
0xA0000000 应用程序支持正方形屏幕(240x240 像素)。
0xC0000000 应用程序支持屏幕旋转。
0xE0000000 应用程序支持正方形屏幕旋转。
这些参数可通过编辑 INF 文件的 [CEDevice] 部分(cabwiz 用来生成 CAB 文件)来更改。有关 INF 文件格式的详细信息,请参阅 MSDN 文档。
八、结论
开发基于 Windows Mobile 2003 第二版 软件 的 Pocket PC 的应用程序,要求取消关于屏幕方向的假设。使用本文提供的简单指南,您可以编写安装和运行于竖向、横向和正方形屏幕上的应用程序。