防止Pocket-PC进入横向模式

时间:2009-04-20 12:53:26

标签: windows-mobile compact-framework

我有一个Windows Mobile应用程序(用C#编写),只适用于纵向模式。 无论如何以编程方式阻止系统自动将我的应用程序旋转到横向模式而不必更改Windows Mobile系统设置?

平台:Windows Mobile 6.1 Professional

3 个答案:

答案 0 :(得分:4)

这是一个坏的,坏的,坏主意。该设备是用于运行多个应用程序的通用设备。该平台应该是您的应用程序的从属。这就像是说你有一个仅运行在640x480的桌面应用程序,所以你应该可以锁定某个人的PC到那个分辨率。

更好的解决方案是要么实际修复你的软件(喘息)以支持两种方向(你知道还有不同的分辨率和方形屏幕设备,对吧?)或让你的应用程序至少流行在选择不支持的分辨率或方向时,向某些消息框通知用户兼容性。

至于“如何”这样做 - 你做不到。旋转由显示驱动程序处理,特别是通过使用DRVESC_SETSCREENROTATION调用ExtEscape。在随PB附带的标准GPEFlat driver中,这又调用了DynRotate并继续调用SetRotation(您可以查看eval版本中的公共源,您真的想知道它是如何工作的)。

除此之外,为了拦截该调用,您必须创建一个替换显示驱动程序,或者至少一些插入作为驱动程序的垫片,而该驱动程序又会调用现有的驱动程序。这些都不会在托管代码中发生。

答案 1 :(得分:1)

不,即使有它会涉及钩子,这对嵌入式设备来说真的非常糟糕。

但是可以将屏幕方向更改为您喜欢的任何内容,因为您显然知道它应该是什么。见Developing Screen Orientation-Aware Applications - > Changing Screen Orientation了解更多详情。

编辑:刚刚意识到你遇到了C#/ .NETCF。不知道框架的那一部分,但我会在这里留下答案供参考,也许它会指出你正确的方向。当然,在文章中解释的概念仍然有效。

答案 2 :(得分:0)

什么版本的Windows移动版?

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

Windows Mobile支持不同的屏幕尺寸和方向。例如,设备可以设计有纵向,正方形或横向屏幕。如果您没有控制运行它的硬件,那么设计为仅以纵向模式运行的软件可能会导致问题。

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

来设置
SystemSettings.ScreenOrientation = ScreenOrientation.Angle0;

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

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