S60中使用控件无法显示的解决方法

 在S60中,如果在Container类中添加控件,就必须实现下面几个必要方法:


TInt CountComponentControls() const;
CCoeControl* ComponentControl( TInt aIndex ) const;
void SizeChanged();

 


否则会出现控件无法正常刷新显示的问题。

 

 

举例:如使用Grid控件,定义一个 CAknGrid*  iGrid

 

enum TUsedComponent  
   {
   EGrid,

   // add more component here...
   ELastControl
   };

 

TInt CMobileAssistantAppMainContainer :: CountComponentControls() const
 {
 return ELastControl; //返回当前使用的控件数量

 }

 

CCoeControl* CMobileAssistantAppMainContainer :: ComponentControl( TInt aIndex ) const
 {
 switch ( aIndex )
  {
  case EGrid:
   return iGrid; //如果有其他控件,再这里需要继续添加case语句
  default:
   return NULL;
  }
 }

 

void CMobileAssistantAppMainContainer :: SizeChanged()
 {
 if ( iGrid )
  {
  iGrid->SetRect( Rect() ); //刷新显示区域
  }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值