使用UserSvr::ScreenInfo()获取显示内存的方法在S60第三版中已经废弃
文章信息
兼容于
平台: S60 3rd Edition, S60 3rd Edition FP1
文章
由 huwell
在 07 Jul 2007 创建
最后由 hamishwillee
在 06 May 2013 编辑
- 设备, 软件 版本:
Contents |
概述
UserSvr::ScreenInfo()提供了地址访问LCD显示帧缓冲。 但使用这个方法来直接绘制屏幕在S60第三版设备上已经不再适用了,可以认为是被废弃了。
详细描述
通过调用UserSvr::ScreenInfo()获得TScreenInfoV01::iScreenAddress地址,可以直接在显示器的帧缓冲进行绘制,在修改完帧缓冲后,显示器需要强制来更新一下。
在S60第三版之前,我们可以通过如下方式进行重绘:
TRawEvent redraw;
redraw.Set( TRawEvent::ERedraw );
UserSvr::AddEvent( redraw );
在S60第三版上,这个方法就无法立即生效了。屏幕只在街道数据超过范围的通知时才被更新。
解决方案
开发者可以使用CDirectScreenBitmap类进行屏幕直接访问,从而取代通过UserSvr::ScreenInfo()来获取帧缓冲的方法。要获取更多信息,可以参考文档
S60 Platform: Scalable Screen-Drawing How-To
另一种解决方案是,仍然使用老的绘制方法,并通过指定数据超过范围以强制更新屏幕
void CFbsScreenDevice::Update( const TRegion &aRegion );


(no comments yet)