×
Namespaces

Variants
Actions

怎样绘制scroll bar背景

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
huwell 在 01 Jul 2007 创建
最后由 hamishwillee 在 15 Dec 2011 编辑
  • 设备, 软件 版本:

S60 3rd Edition, S60 3rd Edition, FP1


  • 详细描述:

概述

当你绘制一个控件(如list box, grid, editor等)时会需要使用scroll bar,但这时其背景可能会保持白色。这种情况一般发生在Container没有传递一个正确的对象(context-specific skin parameters)到它的子控件中造成的。完成container类的CCoeControl::MopSupplyObject()方法会帮助子控件拥有正确的皮肤绘制,并且保证控件和他们父类之间的对象链表设置正确。


更多信息可以参考SDK文档中的MObjectProvider和CCoeControl::SetMopParent()部分


解决方案

要正确绘制scroll bar的背景,需要如下:


首先在从CCoeControl派生的view class的构造函数中加入如下代码:

    CAknsBasicBackgroundControlContext* 
 
iSkinContext = CAknsBasicBackgroundControlContext::NewL(
 
KAknsIIDQsnBgAreaMainAppsGrid,
 
iAvkonAppUi->ApplicationRect(),
 
EFalse );

注意:当使用'KAknsIIDQsnBgAreaMainAppsGrid(skinID)时,为application提供全屏rect.


然后实现MopSupplyObject()如下:

    TTypeUid::Ptr CMyCustomGridAppView::MopSupplyObject( TTypeUid aId )
 
{
 
if( aId.iUid == MAknsControlContext::ETypeId && iSkinContext != NULL )
 
{
 
return MAknsControlContext::SupplyMopObject( aId, iSkinContext );
 
}
 
return CCoeControl::MopSupplyObject( aId );
 
}
This page was last modified on 15 December 2011, at 12:49.
34 page views in the last 30 days.
×