首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

怎么让支持分辨率320*240的程序也支持640*480

2012-01-16 
如何让支持分辨率320*240的程序也支持640*480现在的程序在320*240的分辨率下显示是正常的,但是放到640*480

如何让支持分辨率320*240的程序也支持640*480
现在的程序在320*240的分辨率下显示是正常的,但是放到640*480时,控件就显示不正常了,有些显示一半,有些直接就显示不出来了!请问我要如何控制在不同分辨率下控件的显示?

我现在的做法是将正常显示的控件移动在X,Y方向上作移动,将空间移动到X*比率 Y*比率(比率=现在的分辨率/正常显示的分辨率)的位置,长度和宽度不变
这样显示的效果,并没有按预想的是显示正常的?不知道是不是哪里没调整对,还是这思路就有问题的,望高手指点一二!

[解决办法]
首先要关闭模拟层,这样可以去掉高版本手机对低版本程序的分辨率屏蔽

将下行添加到您的资源文件中:

HI_RES_AWARE CEUX {1} // To turn off the emulation layer

然后获取屏幕的分辨率
int cxScreen,cyScreen;
cxScreen=GetSystemMetrics(SM_CXSCREEN);
cyScreen=GetSystemMetrics(SM_CYSCREEN);
响应Onsize函数

参考
http://msdn.microsoft.com/zh-cn/windowsmobile/ms838191.aspx
[解决办法]
最好的方法就是做两套资源

如果只是一套资源,那就只能拉伸了, 这样效果不太好,用strchbit函数
[解决办法]

探讨
最好的方法就是做两套资源

如果只是一套资源,那就只能拉伸了, 这样效果不太好,用strchbit函数

[解决办法]
取得当前设备分辨率,用分辨率做条件判断,读取哪套资源。
并根据分辨率做相应的位置、大小调整。
[解决办法]
就是微软对屏幕分辨率的一种屏蔽,用evc4写的ppc2003的程序在分辨率高于240*320的手机上(如800*480的)运行,使用GetSystemMetrics(SM_CXSCREEN)得到的仍然是240而不是480.需要用文本编辑器打开rc文件,添加语句HI_RES_AWARE CEUX {1} // To turn off the emulation layer ,这样就可以得到正确的屏幕分辨率。

得到了正确的屏幕分辨率之后,就可以在onsize函数中使用movewindow函数来调整位置和大小,当然,使用的参数要使用诸如rc.width()*1/3之类的,确保从左边三分之一处放控件。对于带文字的按钮之类的,一般使用pDC->GetTextExtent(str)来获得文字的Size,从而确定按钮大小。

总之如果使用的是纵横分辨率或客户区的百分比,而不是像素点来movewindow,你的程序就可以适应各种分辨率

探讨
@wangarrb
请问下,这模拟层是啥意思啊,要怎么关闭,看了你跟的参考链接,还是不清楚

另外获取分辨率后,
int cxScreen,cyScreen;
cxScreen=GetSystemMetrics(SM_CXSCREEN);
cyScreen=GetSystemMetrics(SM_CYSCREEN);

响应的OnSize函数要传啥参数了? OnSize里又需要做什么处理了?



[解决办法]
做两套资源和坐标数组是正确做法,其他方法都不理想。
[解决办法]
configuiation Properties->Linker->Command Line把5.01改成4.20,在320*240 或者640*480的设备上都能运行了

热点排行