2

我正在为 PocketPC 开发一个应用程序。当应用程序启动时,调用自定义函数 SetScreenOrientation(270) 旋转屏幕。当应用程序关闭时,调用函数 SetScreenOrientation(0) 来恢复屏幕方向。

这样,如果用户最小化应用程序,屏幕方向不会恢复,这是不可接受的。

有谁知道应该在哪里(在哪个事件处理程序中)调用 SetScreenOrientation(int angle) 以在应用程序启动时设置屏幕方向、在最小化时恢复方向、在最大化时设置方向并在关闭时恢复方向?

实际上我不知道哪个事件处理程序处理 Minimize 和 Maximize 事件。

4

4 回答 4

2

根据我的 Windows CE 经验,您应该处理WM_SIZEWM_WINDOWPOSCHANGED消息。如果您正在使用 PocketPC,我建议您先查看 WM_WINDOWPOSCHANGED 消息,因为我不确定 WM_SIZE 是否具有您需要的正确参数。

从 WM_WINDOWPOSCHANGED 消息的WINDOWPOS结构看一下 flags 成员,特别是 SWP_SHOWWINDOW 和 SWP_HIDEWINDOW。


您需要查看的消息的特定版本因您使用的操作系统而异。Pocket PC 操作系统基于 Windows CE 3.0(及更低版本)构建,而 Windows Mobile 现在基于 Windows CE 5.0(甚至 Windows Mobile 6)构建,但也构建在 Windows CE 4 之上。(来源)

因此,只需在 MSDN 中的相关部分查看您正在编写的操作系统即可。

于 2008-11-14T14:28:15.500 回答
2

正确的消息是WM_SIZE,但 Daemin 的回答指向了错误的 WM_SIZE 帮助主题。检查 wParam。请小心,因为您的窗口可能已最大化但被隐藏。

于 2008-11-14T14:40:41.357 回答
0

我不知道这些在 C++ 世界中被称为什么,但在 .NET Compact Framework 中,当您最小化/最大化窗口时,您的应用程序窗体的 Resize 事件将被调用,然后在事件代码中您将检查 WindowState 的属性表单以查看它是最小化还是最大化。

从应用程序中更改 PDA 的状态是有风险的(尽管有很多充分的理由这样做),因为如果您的应用程序崩溃,它将使 PDA 处于任何状态。我已经做了很多 kiosk -Windows Mobile 中的(全屏)应用程序,有效执行此操作的技巧之一是隐藏 WM 标题栏(带有 Windows 开始按钮的顶行),以防止它每次闪烁一瞬间你打开一个新表格。如果应用程序崩溃,则在您重置设备之前,窗口栏将保持不可见,这不好。至少通过屏幕旋转,用户可以手动恢复它。

于 2008-11-14T14:25:25.507 回答
0

这真的取决于平台,但我会选择 WM_WINDOWPOSCHANGED 或 OnShow。这不是 wm_size .. 并不总是在所有平台上抛出。卡西欧不会在您期望的时候抛出 size 事件。TDS 和 Symbol 都可以。

尽管 MSDN 是一个很好的信息来源,但请记住,并非所有操作系统都是平等的。在 PPC 世界中,硬件供应商可以创建自己的操作系统,有时甚至会遗漏一些东西,或者故意忽略一些东西。

我在这里有一个平台(名字隐瞒以保护......好吧我)有左右按钮..当你按下它们时,你会期望能够抓住VK_LEFT,VK_RIGHT..你错了. 你实际上得到';' 或者 ':'。踢裤子怎么样。

于 2008-11-18T05:02:19.057 回答