前不久我编写了一个基于Windows Mobile 5.0的参赛程序《北京2008奥运场馆速查》,可惜当时那个程序并不支持横竖屏自动识别,后来看了参赛的规则,原来这一个功能是必须实现的,所以今天抽出时间又把这方面的内容给添加了进去。
V1.0.0版介绍文章:
http://blog.csdn.net/yefanqiu/archive/2007/11/13/1882835.aspx
V1.0.0版源码下载:
http://microsoft.csdn.net/mobile/dev_contest/demon-detail_1.aspx?pointid=47
由于我这个程序大部分是绘图操作,所以横竖屏切换的代码实现,基本等于是做两套不同的程序,这也是当初我为何懒得做的原因,废话少说,我下面谈一谈,针对该功能我是如何实现的(不知道此外有没有其它更好的办法,如果有的话,希望网友告诉我一声)。
先介绍一下Screen对象,顾名思义,该对象就包含了显示屏相关的信息,其中的Screen.PrimaryScreen.Bounds属性特别有用,该属性就是描述显示屏的大小的。
下面是具体的代码:
//屏的类型
public enum ScreenType { QVGA240320, QVGA320240, VGA480640, VGA640480,Other};
//获取屏的类型
public static ScreenType GetScreenType()
{
ScreenType SType = ScreenType.Other;
if (Screen.PrimaryScreen.Bounds.Width == 240 && Screen.PrimaryScreen.Bounds.Height == 320)
{
SType = ScreenType.QVGA240320;
}
if (Screen.PrimaryScreen.Bounds.Width == 320 && Screen.PrimaryScreen.Bounds.Height == 240)
{
SType = ScreenType.QVGA320240;
}
if (Screen.PrimaryScreen.Bounds.Width == 480 && Screen.PrimaryScreen.Bounds.Height == 640)
{
SType = ScreenType.VGA480640;
}
if (Screen.PrimaryScreen.Bounds.Width == 640 && Screen.PrimaryScreen.Bounds.Height == 480)
{
SType = ScreenType.VGA640480;
}
return SType;
}
接着说一下在程序中如何自适应横竖屏的识别,首先要添加窗体的Resize事件,该事件会在窗体大小发生变化的时候自动触发(由于我程序中的窗体都默认为最大化,所以横竖屏切换的时候它一定会触发,针对普通的窗体是否也这样?这得要实际测一测了,为了保险期间,可以在窗体的Paint事件中检查横竖屏是否切换)。
//屏幕翻转
private void frmMain_Resize(object sender, EventArgs e)
{
if (scrType != DataInfos.GetScreenType())
{
scrType = DataInfos.GetScreenType();
//相关需要改变的代码
}
}
剩下的就是在Paint事件中根据不同的屏类型,配置不同的布局,在鼠标处理事件中也要分别处理,这部分代码是比较繁杂的,有兴趣的朋友可以下载源码后自行去看。
此外需要注意的是,在模拟器中横竖屏切换的时候,原来的UP键会变成Right键(模拟器横屏是竖屏顺时针旋转90度而成的,我的PPC也是这样,不知道其它设备是不是这样),当然其他的键的含义也会发生变化,麻烦的是一般都把up和left方向当作起始,旋转之后,功能含义相反了,所以在代码中要做相应的处理。
//方向控制
private void frmMain_KeyDown(object sender, KeyEventArgs e)
{
if ((e.KeyCode == System.Windows.Forms.Keys.Up))
{
// 向上导航
// 向上键
// 该判断在真实的PPC设备中就不需要了
if (scrType == DataInfos.ScreenType.QVGA240320) MoveLeft();
else MoveRight();
}
if ((e.KeyCode == System.Windows.Forms.Keys.Down))
{
// 向下导航
// 向下键
// 该判断在真实的PPC设备中就不需要了
if (scrType == DataInfos.ScreenType.QVGA240320) MoveRight();
else MoveLeft();
}
if ((e.KeyCode == System.Windows.Forms.Keys.Left))
{
// 向左键
MoveLeft();
}
if ((e.KeyCode == System.Windows.Forms.Keys.Right))
{
// 向右键
MoveRight();
}
if ((e.KeyCode == System.Windows.Forms.Keys.Enter))
{
bSelectDown = true;
this.Refresh();
}
}
要紧的是,横屏时按模拟器上的键,功能如你所愿,但是作为PC机上的按键的方向并没有旋转,所以你按键盘的键来代替模拟器上的键的时候,你所想的和实际正好相反。
还好,最终的程序是运行在实际的PPC设备上去的,这个问题就不存在了,PPC屏幕旋转后按键的定义自动调整,上就是上,左就是左(真够人性化的!我想模拟器不能这样,想必是模拟器的一个bug了)。此外也只有在PPC设备上才能完美的体验用手指拨动查询的快感,在模拟器上用鼠标模拟太勉为其难了。
升级后的程序,我同样也是以源码的方式发布,希望这个程序能起到抛砖引玉的作用,在此基础上网友能推出自己更棒的程序。
V1.1.0版源码下载地址:
http://microsoft.csdn.net/mobile/dev_contest/demon-detail_1.aspx?pointid=95
分享到:
相关推荐
Windows Mobile 5.0 仿真器是一款用于开发者和测试人员的工具,它允许用户在桌面计算机上模拟运行 Windows Mobile 5.0 操作系统的设备。这个仿真器对于开发、调试和测试移动应用至关重要,因为它提供了在真实设备上...
首先,Windows Mobile 5.0在技术上是对前一版本的重大升级,引入了诸多新特性和改进。它支持.NET Compact Framework 2.0,这是专门为嵌入式设备设计的.NET框架,让开发者能够利用C#、VB.NET或C++等.NET语言编写应用...
### Windows Mobile 5.0 SDK 下载地址收藏 #### 知识点概述: 1. **Windows Mobile 5.0 SDK**:此版本的SDK(软件开发工具包)为开发者提供了必要的工具和文档来开发适用于Windows Mobile 5.0平台的应用程序。 2. ...
《Windows Mobile 5.0项目实例教程》是针对移动设备开发者的宝贵资源,它深入浅出地介绍了在Windows Mobile 5.0平台上进行应用程序开发的技术和实践。Windows Mobile 5.0是微软针对掌上设备推出的一个操作系统版本,...
Windows Mobile 5.0 是微软在2006年推出的一款移动操作系统,主要应用于智能手机和平板电脑。这个系统是基于Windows CE内核的,并且在功能和用户体验上做了很多优化,为开发者提供了丰富的API和工具来开发应用程序。...
Windows Mobile 5.0 Final Release Documentation Windows Mobile 5.0 开发文档最终版,--2007/2
在移动设备领域,Windows Mobile 5.0是一个重要的操作系统,为开发者提供了丰富的API和工具来构建功能丰富的应用程序。本文将深入探讨如何在Windows Mobile 5.0平台上开发GPS应用程序,特别是针对初学者,通过Visual...
升级windows mobile 5.0
在Windows Mobile 5.0操作系统中,开发人员可以利用API接口来调用手机的内置摄像头功能,以便实现拍照、录像等应用。这个过程涉及到多个关键知识点,包括API接口的使用、设备驱动交互以及图像处理。 首先,Windows ...
Windows Mobile 5.0模拟器是开发者和爱好者用于测试和体验在Windows Mobile 5.0操作系统上运行的应用程序和功能的工具。这个压缩包包含了Windows Mobile 5.0的模拟环境,以.bin文件格式存储,这通常是二进制数据文件...
Windows Mobile 5.0 BSP(板级支持包)是针对嵌入式设备操作系统的一个关键组件,主要用于让硬件制造商能够在其设备上顺利运行Windows Mobile操作系统。在这个特定的案例中,我们讨论的是针对SAMSUNG SMDK2440开发板...
车主宝典软件是为城市车主用户量身订做的一套基于手机平台运行的优秀手机客户端软件。 集实时路况、消费打折、资讯浏览、互动娱乐、便民查询、汽车知识为一体的服务于广大车主用户的综合性服务平台产品。...
《Windows Mobile 5.0用户界面实战》是针对微软在移动设备操作系统上的一款经典版本——...通过学习这个教程,你可以掌握Windows Mobile 5.0用户界面的设计理念和技术,为开发出更优秀的移动应用打下坚实的基础。
尽管Windows Mobile 5.0在当时是一个重要的里程碑,但随着市场的变化和技术的进步,微软随后推出了Windows Phone系列,直至现在的Windows 10 IoT Core,继续为物联网设备提供操作系统支持。然而,Windows Mobile 5.0...
在移动设备领域,Windows Mobile 5.0 是微软推出的一款操作系统,主要针对智能手机和平板电脑。这个系统提供了丰富的功能和接口,使得开发者可以构建各种应用,其中之一就是指南针应用程序。"WindowsMobile5.0指南针...
【标题】:“C#(Windows Mobile 5.0平台上的计算器)” 在移动计算领域,Windows Mobile 5.0曾是广泛使用的操作系统之一,尤其在早期的智能手机和平板电脑上。开发者利用各种编程语言,包括C#,为这个平台创建了...
Windows Mobile 5.0 Final Release Documentation Windows Mobile 5.0 开发文档最终版,--2007/2
在Windows Mobile 5.0操作系统中,图像处理技术是一个关键的组成部分,特别是在移动设备上,它使得用户可以方便地拍摄、编辑和分享照片。本文将深入探讨Windows Mobile 5.0中的图像操作,包括基本的图像加载、显示、...
自己c#写的手机时间更新软件,时间采用的是国家授时中心标准时间+时间补尝。流量更省(每次时间更新)。 操作方法:直接运行程序。首先获取时间,然后再更新时间。