WINCE实现屏幕旋转

下面的方法我确认可以实现WINCE屏幕旋转,注意,此方法是在驱动层实现的,如果你只考虑在应用层去实现 ,那下面的内容对你毫无意义。此方法有说会导致鼠标与触摸屏不正常工作,我试下来确认没有这种情况,运行正常。网上还有种方法是应用程序用API函数控制屏幕旋转,注意,这种方法前提是驱动程序支持屏幕旋转。我手上的BSP默认是不支持的,你需要按下面的方法开启它。
 
转载:
winCE 4.2以上
一.修改
SMDK2440/DRIVERS/DISPLAY/S3C2440LCD 目录下的sources文件合适位置增加:

CLEARTYPE=0
ROTATE=1  //这句是我加的。这里是为了链接相应的库文件。

三.s3c2440disp.h文件头上加一句
#define ROTATE 1
 
四.s3c2440disp.cpp中
S3C2440DISP::S3C2440DISP (void)
{
#ifdef ROTATE
m_iRotate = DMDO_90; // 90不对是DMDO_90=1!!!!;  //0->90 我修改0-》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控制器的,与这里没有关系。
修改LCD控制器是另外一个方式实现LCD旋转的。

你可能感兴趣的:(c,工作,api,WinCE)