【问题标题】:Event Handler for Minimize and Maximize Window最小化和最大化窗口的事件处理程序
【发布时间】:2010-09-22 08:28:37
【问题描述】:

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

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

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

其实我不知道是哪个事件处理程序处理了 Minimize 和 Maximize 事件。

【问题讨论】:

    标签: c++ windows-mobile pocketpc


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      从 WM_WINDOWPOSCHANGED 消息的 WINDOWPOS 结构中查看标志成员,特别是 SWP_SHOWWINDOW 和 SWP_HIDEWINDOW。


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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 它指向的是Windows CE 3.0版本,我相信这是PocketPC OS中使用的版本。
        • 它是“Windows Embedded CE 3.0”,而不是“Windows Mobile”。微软应该因为在移动屋顶下拥有如此多的名字而受到打击。这让我很困惑!也许niko可以澄清一下他在哪个平台下?
        【解决方案4】:

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

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

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

        【讨论】:

        • 我可以理解这一点,因为您不希望这些按钮做任何默认的事情,而是要特别以便您可以处理这些操作。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多