现在的程序在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函数
------解决方案--------------------
------解决方案--------------------
取得当前设备分辨率,用分辨率做条件判断,读取哪套资源。
并根据分辨率做相应的位置、大小调整。
------解决方案--------------------
就是微软对屏幕分辨率的一种屏蔽,用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,你的程序就可以适应各种分辨率
------解决方案--------------------
做两套资源和坐标数组是正确做法,其他方法都不理想。
------解决方案--------------------
configuiation Properties->Linker->Command Line把5.01改成4.20,在320*240 或者640*480的设备上都能运行了