Windows mobile 防止Pocket PC进入横向模式

Windows mobile 防止Pocket PC进入横向模式,windows-mobile,compact-framework,Windows Mobile,Compact Framework,我有一个用C编写的Windows Mobile应用程序,它只在纵向模式下工作。 是否有编程方式防止系统自动将应用程序旋转到横向模式,而无需更改Windows Mobile系统设置 平台:Windows Mobile 6.1 Professional不,即使有,也会涉及挂钩,这在嵌入式设备上是一个非常非常糟糕的主意 但是你可以改变屏幕的方向,你喜欢什么,因为你显然知道它应该是什么。有关更多详细信息,请参见-> 编辑:刚刚意识到你被C/.NETCF卡住了。我不知道框架的这一部分,但我将在这里留下答案

我有一个用C编写的Windows Mobile应用程序,它只在纵向模式下工作。 是否有编程方式防止系统自动将应用程序旋转到横向模式,而无需更改Windows Mobile系统设置


平台:Windows Mobile 6.1 Professional

不,即使有,也会涉及挂钩,这在嵌入式设备上是一个非常非常糟糕的主意

但是你可以改变屏幕的方向,你喜欢什么,因为你显然知道它应该是什么。有关更多详细信息,请参见->


编辑:刚刚意识到你被C/.NETCF卡住了。我不知道框架的这一部分,但我将在这里留下答案供参考,也许它将为您指明正确的方向。当然,本文中解释的概念仍然有效。

什么版本的windows mobile

您的应用程序是否仅由受控制的用户组(例如,可以控制硬件的内部公司应用程序)使用

Windows mobile支持不同的屏幕大小和方向。例如,设备可设计为具有纵向、方形或横向屏幕。如果您的软件设计为仅在纵向模式下运行,则如果您不控制运行该软件的硬件,则可能会导致问题

如果要设置纵向模式,可以通过调用

SystemSettings.ScreenOrientation = ScreenOrientation.Angle0;
这会将整个设备设置为纵向模式。如果您选择继续执行此操作,我建议您在表单激活事件中设置方向,并在调整大小事件中检查方向。如果有人将设备更改为横向,当您的应用程序获得焦点时,这会将设备重置为纵向


在应用程序启动时存储初始方向,并在应用程序退出时将设备重新设置为该方向也可能很有用。

这是一个糟糕的主意。该设备是用于运行多个应用程序的通用设备。平台不应是应用程序的从属平台。这就好比说你的桌面应用程序只能运行640x480,所以你应该能够将某人的电脑锁定到该分辨率

更好的解决方案是,要么实际修复您的软件gasp以支持两种方向,并且您知道还有不同的分辨率以及方形屏幕设备,对吗?或者让你的应用程序至少弹出某种消息框,在选择不支持的分辨率或方向时通知用户兼容性

至于怎么做,你不能。旋转由显示驱动程序处理,特别是通过调用DRVESC_设置屏幕旋转。在PB附带的标准中,它依次调用DynRotate,然后调用SetRotation。您可以查看eval版本中的公共源代码,您真的想知道它是如何工作的


其缺点是,要拦截该调用,您必须创建一个替换的显示驱动程序,或者至少插入一些垫片作为驱动程序,依次调用现有的驱动程序。这两种情况都不会发生在托管代码中。

我使用Windows Mobile 6.1 Professional,它将仅用于Pocket-PC。如果我的应用程序在方向更改后加载,您的解决方案将起作用,但如果我的应用程序处于活动状态时方向更改怎么办?@Mohammadreza-只要更改来自用户,例如,离开表单导航,当应用程序获得焦点时,表单激活事件将触发。我仍然认为,在现实世界中,强迫用户使用肖像可能无法正常工作。如果当用户旋转手机时,设备可以旋转,该怎么办?你说的工作不正常是什么意思?它会导致一个错误或什么吗?@Mohammadreza-正如我在回答中所说的,该设备可能有一个方形屏幕或一个屏幕,屏幕下方有qwerty按钮。强制使用肖像模式是一种恶作剧,不是明智的选择。当屏幕方向改变时,你应该得到一个重新调整大小的事件。我同意这是一个坏主意,但当屏幕方向改变时,你确实会得到一个调整大小的事件。在我自己的应用程序中,我允许用户从菜单中快速设置方向,并使用resize事件更改可用的菜单项。我也同意,但如果您的应用程序是为特定目的设计的,则不同意。不管怎样,我认为Stevo3000提到的SystemSettings.ScreenOrientation是一个不错的选择,但是有没有办法知道旋转是什么时候发生的,像是一个事件或什么?如果说是为特定目的设计的,你的意思是它是一个信息亭应用程序,其他什么都不会运行,那么方向是如何变化的?如果是因为某些硬件中断,比如滑出式键盘,那么我仍然认为应该让应用程序支持旋转方向。@Mohammadreza-正如我之前所说,当屏幕方向改变时触发的事件是 调整事件大小!