double buffing

来源:互联网 发布:陶哲轩实分析 知乎 编辑:程序博客网 时间:2024/04/30 02:23

 双缓冲绘图,解决屏幕闪烁问题

参见symbian实例:graphic:

转帖:http://news.csdn.net/n/20050630/23062.html


周期类:CPeriodic

CPeriodic* iPeriodicTimer;

iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityStandard );//这条语句一般在ConstructL()中

void CGraphicsAppView::StartTimer()//开始启动时钟

    {

    if ( !iPeriodicTimer->IsActive() )

        {iPeriodicTimer->Start( 1, 1,

            TCallBack( CGraphicsAppView::Period, this ) );//TcallBack是一个方法回调函数,从使用来看,他只能回调类中的静态方法。

        }

    }

TInt CGraphicsAppView::Period( TAny* aPtr )//周期启动函数,注意,这是个静态函数,但static只在头文件中才做了申明。

    {

    ( static_cast<CGraphicsAppView*>( aPtr ) )->DoPeriodTask();

    return ETrue;

    }

void CGraphicsAppView::DoPeriodTask()//周期真正在做的事情

    {

    // Update the screen

    CWindowGc& gc = SystemGc();

    gc.Activate( *DrawableWindow() );

    UpdateDisplay();///////////////////这个函数是关键的关键

    gc.Deactivate();

    }

void CGraphicsAppView::StopTiem()//停止时钟

    {

    if ( iPeriodicTimer->IsActive() )

        {

        iPeriodicTimer->Cancel();

字符串类:

HBufC* textResource;

//两种字符串附值方法

textResource = StringLoader::LoadLC( R_HEWP_TIME_FORMAT_ERROR );

textResource =iEikonEnv->AllocReadResourceL(R_EXAMPLE_TEXT_HELLO);

TBuf<32> timeAsText;

timeAsText = *textResource;

 

比较常用的几个东东