专利名称:WinCE应用在OMS上全屏显示的方法
技术领域:
本发明涉及通信领域,尤其涉及WinCE应用在OMS上全屏显示的方法。
背景技术:
操作系统相当于计算机的灵魂,任何计算机都离不开操作系统,同时也都受操作系统的限制,所有的应用软件都是基于某种特定操作系统的,都只能在这种特定的操作系统上运行,搬到别的操作系统上就不能运行。因此,Windows应用只能在Windows操作系统上运行,而Linux应用也只能在Linux操作系统上运行。但是如果能让Windows应用软件直接在Linux操作系统上运行,那么用户就有可能摆脱对Windows操作系统的依赖而改用Linux操作系统,这显然是很有意义的。以手机为代表的智能化移动终端设备既是计算机技术的一个重要发展方向,又是一个竞争十分激烈的市场。自从谷歌公司和开放手机联盟推出安卓(Android)操作系统和基于Android的手机以来,很快就在世界手机市场上占有了不小的份额,各种Android手机层出不穷。所谓Android操作系统,实际上是对Linux操作系统的一种改编和扩充,它的内核基本上就是Linux的内核,但是在用户空间却专门针对手机和移动终端设备的特点作了大幅的改进和增强,这些改动大都与编程模式和图形界面,即图形化用户界面(GUI)有关。由中国移动开发并推出的OPhone手机操作系统0MS,也是基于Android的。开放管理系统(OMS)平台是基于ARM微处理器、Linux内核和Android操作系统的手机平台。Android是个基于Linux内核的Java平台。相比之下,WinCE/Windows Mobile的应用,特别是一些重要的应用,则都是用C/C++语言编写的。更重要的是,WinCE/Windows Mobile都是基于Windows内核的,与Linux内核有着完全不同的系统调用界面,用户空间也有完全不同的API,所以这是两个不同的平台,这两个操作系统(及其内核)原本是不能兼容的。要使Windows Mobile/ffinCE的应用软件直接运行在OMS平台上,可以通过将Linux上的开源软件Wine移植到OMS平台上,在Wine的支持下实现直接运行WinCE应用软件二进制代码的目的。然而,Wine主要是面向x86系统结构微处理器的,虽然也支持PowerPC、Sparc等别的微处理器,但是却不支持ARM,所以这种移植是跨处理器的。使OMS手机兼容WinCE/Windows Mobile手机应用,无论对于用户还是厂商而言却有着重要的意义。这是因为,这使得OMS手机的用户在应用软件方面就增加了许多选择;并且不再因为用惯了某几款常用的WinCE应用软件而不愿改用OMS手机,或者因为某一款必须要用的软件只有WinCE版本而无法改用OMS手机。进一步,原来的那些WinCE/WindowsMobiIe手机应用开发者,现在也可以开发OMS应用了,而且还可以慢慢过渡到专为OMS开发应用软件,成为OMS应用开发者,使OMS手机的应用软件更加丰富。然而,与Windows应用相比,WinCE应用有些特性。针对这些特性,就需要对Wine的代码做一些适当的修改,从而使Windows Mobile/ffinCE的应用软件在OMS平台上直接运行时,获得更好的用户体验。Wine是Windows应用软件与Linux内核之间的适配层,体现为一个Wine服务进程(Wine server)和一组动态连接库(等价于Windows的众多DLL)。Wine的⑶I用户界面仍依赖于XII,由Wine的动态连接库xlldrv和Xlerver服务进程构成。其中xlldrv是作为Wine与Xlerver之间的界面,而Xlerver服务进程本来就存在,因为GNOME或KDE也要通过X^erver服务进程操作图形界面。跟Windows操作系统类似,在Wine的代码中,新建视窗默认的宽度和高度是屏幕大小的3/4,也就是以窗口的形式显示在屏幕上。这样的显示方式在桌面系统上是比较合适的,因为桌面系统屏幕比较大,而且分辨率比较高。然而,如果要在移动智能终端上运行WinCE应用,再以窗口的形式显示就不太合适。因为,移动智能终端的屏幕比桌面系统屏幕要小很多,如果在移动智能终端上还是已窗口的形式显示,视窗就会显得非常小。这样,不仅没有充分利用移动终端有限的屏幕,而且会严重影响WinCE应用在OMS平台上直接运行的用户体验。
发明内容
针对现有技术中存在的上述问题,本发明提供了 WinCE应用在OMS上全屏显示的方法。本发明提供了 WinCE应用在OMS上全屏显示的方法,包括步骤1,判断新建视窗的类型是否为子窗口或者弹出窗口,如果是,则根据预设的参数新建视窗,否则执行步骤2 ;步骤2,判断新建视窗的宽度是否为默认值,如果是,执行步骤3,否则执行步骤4 ;步骤3,判断结构体中的标志变量是否为预设值,如果是,新建视窗的尺寸设置为屏幕的尺寸,否则按照默认值新建视窗;步骤4,判断新建视窗的高度是否为默认值,如果是,按照默认值新建视窗,否则,结束流程。在一个示例中,新建视窗由函数WIN_FixCoordinates()实现。在一个示例中,所述结构体为info结构体,标志变量为dwFlags,预设值为STARTF_USESIZE。在一个示例中,步骤2中,info结构体的成员变量dwXSize和dwYSize分别设置为屏幕的宽度和高度。本发明能够充分利用移动终端有限的屏幕,提高WinCE应用在OMS平台上直接运行的用户体验。
下面结合附图来对本发明作进一步详细说明,其中图1是Wine代码中控制默认视窗大小和位置的代码的流程图。
具体实施例方式本发明通过将Linux上的开源软件Wine移植到OMS平台上,在Wine的支持下实现直接运行WinCE应用软件。在Wine的代码中,如果创建视窗时所给定的视窗位置和大小是DEFAULT,就将新建视窗的宽度和高度都设置成屏幕大小的3/4,这样创建出来的视窗就不是满屏的。为了解决这个问题,本发明提供了一种WinCE应用在OMS上全屏显示的方法,包括如下步骤1)分析Wine中视窗显示的相应代码在Wine代码中,控制新建视窗的大小和位置的代码主要在函数WIN_FixCoordinatesO中。WIN_FixCoordinates ()函数中控制视窗默认大小和位置的代码的流程图如图1所示。根据图1所示,当创建视窗时,WIN_FixCoordinates ()函数首先判断新建视窗的类型是否为子窗口(WS_CHILD)或弹出窗口(WS_P0PUP),如果是就直接根据pos参数设置新建视窗的位置和大小。如果不是,则先判断新建视窗的大小和位置是否为DEFAULT。如果是新建视窗的大小和位置为DEFAULT,接着判断info结构体中的标志变量dwFlags 是否为 STARTF_USESUE。如果 dwFlags 是 STARTF_USESIZE,就使用 info 结构体中的成员变量dwXSize和dwYSize分别作为新建视图的宽度和高度。如果dwFlags不是STARTF_USESIZE,就将新建视图的宽度和高度分别设置为屏幕宽度和高度的3/4倍。2)修改Wine中视窗显示大小的相应代码在Wine代码中,修改控制默认的视窗大小和位置代码,将其设置为屏幕的高度和宽度。在Wine代码中,找到控制新建视窗大小和位置的相应代码在WIN_FixCoordinates ()中后,接下来就是对这些代码进行修改。从代码中可以看出,如果采用默认的视窗的大小和位置,则新建视窗的宽度和高度分别屏幕宽度和高度的3/4倍。如果希望使WinCE应用在OMS上运行时以全屏形式显示,而不是以屏幕宽度和高度的3/4窗口形式显示,就需要修改设置默认的视窗的大小和位置的相应代码,将其新建视窗的宽度和高度分别修改为屏幕的宽度和高度。在函数WIN_FiXC00rdinates()中,代码的具体修改内容
如下
static void WIN_FixCoordinates( CREATESTRUCTA *cs, INT *sw)if (IS_DEFAULT(cs->cx)){
if(info.dwFlags & STARTF—USESIZE){
cs->cx = info.dwXSize;cs->cy = info.dwYSize;
}
else{
//将默认的视窗大小和位置修改为屏幕宽度和高度
Il cs->cx = (mon info.rcWork.right - mon_info.rcWork.left) * 3 / 4 -
cs->x;
Il cs->cy = (moninfo.rcWork.bottom - mon—info.re Work, top) * 3 / 4 -cs->y;
cs->cx = (mon info.rcWork.right - mon_info.rcWork.left) - cs->x;cs->cy = (moninfo .rcWork.bottom - mon—info.re Work, top) - cs->y; 以上所述仅为本发明的优选实施方式,但本发明保护范围并不局限于此。任何本领域的技术人员在本发明公开的技术范围内,均可对其进行适当的改变或变化,而这种改变或变化都应涵盖在本发明的保护范围之内。
权利要求
1.WinCE应用在OMS上全屏显示的方法,其特征在于,包括步骤1,判断新建视窗的类型是否为子窗口或者弹出窗口,如果是,则根据预设的参数新建视窗,否则执行步骤2;步骤2,判断新建视窗的宽度是否为默认值,如果是,执行步骤3,否则执行步骤4 ;步骤3,判断结构体中的标志变量是否为预设值,如果是,新建视窗的尺寸设置为屏幕的尺寸,否则按照默认值新建视窗;步骤4,判断新建视窗的高度是否为默认值,如果是,按照默认值新建视窗,否则,结束流程。
2.如权利要求1所述的方法,其特征在于,新建视窗由函数WIN_FiXC00rdinates()实现。
3.如权利要求2所述的方法,其特征在于,所述结构体为info结构体,标志变量为dwFlags,预设值为 STARTF_USESUE。
4.如权利要求3所述的方法,其特征在于,步骤2中,info结构体的成员变量dwXSize和dwYSize分别设置为屏幕的宽度和高度。
全文摘要
本发明公开了WinCE应用在OMS上全屏显示的方法,包括步骤1,判断新建视窗的类型是否为子窗口或者弹出窗口,如果是,则根据预设的参数新建视窗,否则执行步骤2;步骤2,判断新建视窗的宽度是否为默认值,如果是,执行步骤3,否则执行步骤4;步骤3,判断结构体中的标志变量是否为预设值,如果是,新建视窗的尺寸设置为屏幕的尺寸,否则按照默认值新建视窗;步骤4,判断新建视窗的高度是否为默认值,如果是,按照默认值新建视窗,否则,结束流程。本发明能够充分利用移动终端有限的屏幕,提高WinCE应用在OMS平台上直接运行的用户体验。
文档编号G06F9/44GK102393816SQ201110173959
公开日2012年3月28日 申请日期2011年6月24日 优先权日2011年6月24日
发明者乐金明, 徐鼎鼎, 毛德操, 王承志, 陈天洲 申请人:浙大网新科技股份有限公司