wince实现屏幕旋转的方法

来源:互联网 发布:历史数据库设计 编辑:程序博客网 时间:2024/06/10 01:26

wince实现屏幕旋转的方法

 

1.驱动层上实现:winCE 4.2以上

一.修改

SMDK2440/DRIVERS/DISPLAY/S3C2440LCD 目录下的sources文件合适位置增加:

CLEARTYPE=0
ROTATE=1   //这句是我加的

二.s3c2440disp.h文件头上加一句

#define ROTATE

三.s3c2440disp.cpp中
S3C2440DISP::S3C2440DISP (void)
{

#ifdef ROTATE

//m_iRotate = GetRotateModeFromReg(); 原来的是通过GetRotateModeFromReg读取

//[HKEY_LOCAL_MACHINE/System/GDI/Rotation]  下的"Angle"值决定m_iRotate
m_iRotate = DMDO_90;

SetRotateParms();
#endif //ROTATE  

四.检查platform.reg中,

[HKEY_LOCAL_MACHINE/System/GDI/Drivers]
"Display"="s3c2440disp.dll"

以下注册表可以有可以没有。
[HKEY_LOCAL_MACHINE/System/GDI/Rotation]  
"ANGLE"=dword:5A   ;0x5A for 90,这是我加的   ,加在gdi/drivers这项后面

五,要在S3C2440DISP::S3C2440DISP (void) 最后加一句
((GPESurfRotate *)m_pPrimarySurface)->SetRotation(m_nScreenWidth, m_nScreenHeight, m_iRotate);

而s2440.h、2410中关于屏幕的东西不要去改,那是初试化lcd控制器的,与这里没有关系。

2.通过修改注册表做Rotation

默认情况下,屏幕都是正常显示的,也就是说翻转角度为0度。可以通过修改注册表来做屏幕翻转,通过修改”Angle”的值来完成,具体设置如下:

[HKEY_LOCAL_MACHINE/System/GDI/Rotation]

"Angle"=dword:5A ;翻转90度,罗嗦一句,5A就是90的十六进制

可以设置为0度,90度,180度和270度。也就是0,5A,B4和10E,通过设置这些值可以达到屏幕翻转的目的。你可以在Build image的时候就做这件事情,只要在project.reg文件里面加入上面的设置,然后重新make image,这样新的image启动以后就会按照你的设定来显示。也可以在WinCE启动以后,编个读写注册表的小程序,来修改这个值,然后重新启动就可以了(系统要支持HIVE-Based Registry)。

原创粉丝点击