17.6.5 绘制函数
下面列出从CCoeControl类定义中抽取出的与绘制相关的函数。
必须用ActivateL()激活控件,以此作为它的第二阶段构造的最后部分。假定到调用ActivateL()的时候,已指定控件的范围,并且已经完全初始化了它的模型,该调用让控件已做好绘图的准备。可以使用IsActivated()来测试是否已经调用ActivateL()。
MakeVisible()设置控件为可见或不可见;对于不可见控件不调用 Draw()。如果控件既是激活的又是可见的,则 IsReadyToDraw()返回 ETrue。SetBlank()是一个模糊的函数,它只影响没有重写 Draw()函数的控件。如果没有调用 SetBlank(),那么 CCoeControl::Draw()什么都不做。如果确实调用了SetBlank(),那么CCoeControl::Draw()将控件绘成空白。
我们已经知道,Draw()是一个基本的绘制函数。DrawNow()启动正确的绘制序列来绘制控件和它的所有组件。DrawDeferred()只是使控件的范围无效,这样窗口服务器将发送一条重绘消息,它保证将尽早调用对控件的重绘,而不是强迫它立即进行。
在组件控件中适当地递归使用 ActivateL()、MakeVisible()和 DrawNow()。SystemGc()返回用于绘制的窗口化图形上下文。ActivateGc()、ResetGc()和 DeactivateGc()扮演重绘所需要的图形上下文准备函数的角色。始终使用这些函数,而不是直接调用 SystemGc.Activate(Window())。这更加方便,而且它允许恰当支持控件上下文。
【责任编辑:
董书 TEL:(010)68476606】