我正在为PocketPC开发一个应用程序。当应用程序启动时,调用自定义函数SetScreenOrientation(270)来旋转屏幕。当应用程序关闭时,调用函数SetScreenOrientation(0),恢复屏幕方向。
这样,如果用户最小化应用程序并且这是不可接受的,则不会恢复屏幕方向。
有没有人知道在哪里(在哪个事件处理程序中)应调用SetScreenOrientation(int角度)以在应用程序启动时设置屏幕方向,在最小化时恢复方向,在最大化时设置方向并在关闭时恢复方向?
实际上我不知道哪个事件处理程序处理Minimize和Maximize事件。
答案 0 :(得分:2)
根据我的Windows CE体验,您应该处理WM_SIZE或WM_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中有关您正在编写的操作系统的相关部分。
答案 1 :(得分:2)
正确的消息是WM_SIZE,但是Daemin的答案指向了错误的WM_SIZE帮助主题。检查wParam。小心,因为你的窗口可以最大化但隐藏。
答案 2 :(得分:0)
我不知道在C ++世界中调用了什么,但在.NET Compact Framework中,当您最小化/最大化窗口时,将调用应用程序窗体的Resize事件,然后在事件代码中检查WindowState表格的属性,看它是否最小化或mazimized。
从你的应用程序中改变你的PDA的状态是有风险的(虽然有很多很好的理由去做),因为如果你的应用程序崩溃它将使PDA处于它所处的任何状态。我做了一个Windows Mobile中许多自助服务终端(全屏)应用程序,有效地执行此操作的一个技巧是隐藏WM标题栏(带有Windows开始按钮的顶行)以防止它闪烁以进行拆分每次打开新表格时都要秒。如果应用程序崩溃,Windows栏将保持不可见,直到您重置设备,这是不好的。至少在屏幕旋转时,用户可以手动恢复它。
答案 3 :(得分:0)
这实际上取决于平台,但我会选择WM_WINDOWPOSCHANGED或OnShow。它不是wm_size ..并不总是在所有平台上抛出它。当你期望它们时,卡西欧不会抛出尺寸事件。 TDS和Symbol的确如此。
即使MSDN是一个很好的信息源,但请记住并非所有操作系统都是平等的。在PPC世界中,硬件提供商可以创建自己的操作系统,有时可以创建错过的东西,或者有意忽略内容。
我在这里有一个平台(名字保留,以保护......好吧),左右按钮..当你按下它们时,你希望能够抓住VK_LEFT,VK_RIGHT ..你'我错了。你真的得到';'要么 ':'。怎么样才能穿上裤子。