用于最小化和最大化窗口的事件处理程序

问题描述:

我正在开发用于PocketPC的应用程序。当应用程序启动调用SetScreenOrientation(270)的自定义函数时,会旋转屏幕。当应用程序关闭时,将调用SetScreenOrientation(0)函数来恢复屏幕方向。用于最小化和最大化窗口的事件处理程序

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

有没有人知道应该调用SetScreenOrientation(int angle)来设置应用程序启动时的屏幕方向,还原最小化方向,将方向设置为最大化并在关闭时恢复方向?

其实我不知道哪个事件处理程序处理最小化和最大化事件。

正确的信息是WM_SIZE,但Daemin的回答指向错误的WM_SIZE帮助主题。检查wParam。要小心,因为你的窗户可能会被最大化,但隐藏起来。

+0

它指向Windows CE 3.0版本,我相信它是在PocketPC OS中使用的版本。 – Daemin 2008-11-14 14:50:49

+0

它是“Windows Embedded CE 3.0”,而不是“Windows Mobile”。微软应该因为在移动屋顶下拥有如此多的名字而被打屁股。它让我很困惑!也许niko可以澄清他在哪个平台下? – 2008-11-14 19:53:53

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

从您的应用程序中更改您的PDA的状态是有风险的(尽管有很多很好的理由可以做到这一点),因为如果您的应用程序崩溃,它将使PDA处于任何状态。在Windows Mobile中有很多自助服务终端类型(全屏)应用程序,并且有效地做到这一点的技巧之一是隐藏WM标题栏(使用Windows开始按钮的最上面一行)以避免闪烁每次你打开一个新的表格时,都要分秒。如果应用程序崩溃,窗口栏将保持隐藏状态,直到您重置设备,这并不好。至少在屏幕旋转时,用户可以手动恢复它。

从我的Windows CE体验中,您应该处理WM_SIZEWM_WINDOWPOSCHANGED消息。如果你正在使用PocketPC,我建议你先看一下WM_WINDOWPOSCHANGED消息,因为我不确定WM_SIZE是否有你需要的正确参数。

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


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

所以, MSDN中您正在为其编写的操作系统的相关部分。

这真的取决于平台,但我会去与WM_WINDOWPOSCHANGED或OnShow。这不是wm_size ..那个并不总是在所有平台上抛出。当你期待他们的时候,卡西欧不会抛出大小的事件。 TDS和Symbol的确如此。

尽管MSDN对于信息来说是一个很好的选择,但记住不是所有的操作系​​统都是相同的。在PPC世界中,硬件提供商可以创建他们自己的操作系统,有时还会创建错过的东西,或者故意忽略。

我在这里有一个平台(名字版主要保护...以及我),有左和右按钮..当你按他们,你会希望能够赶上VK_LEFT,VK_RIGHT ..你会错的。你实际上得到';'要么 ':'。那裤子里踢了一脚怎么样