Series 60 3rd---调整list box位置和大小后造成与scroll bar不一致的解决办法

 S60 2nd FP3以后标准控件中的scroll bar不再是屏幕下方的两个三角形了,而换成了类似Windows中scroll bar的样式,这种样式更直观,用户感觉确实更好.然而在移植一个项目到S60 3rd上时碰到了这个问题:调整list box位置和大小后造成与scroll bar不一致.比如:通过对list box调用SetExtent()使其不占满客户区,这时scroll bar的大小并没有改变,造成了list box与scroll bar的错位.
解决办法:
首先通过list box基类CEikListBox::ScrollBarFrame()得到滚动条框架对象CEikScrollBarFrame类型的指针,然后通过CEikScrollBarFrame::GetScrollBarHandle()得到某个滚动条对象CEikScrollBar类型的指针,最后通过CEikScrollBar::SetExtent()调整滚动条的位置就可以了.
Code:
//Set the position of listbox
void CXXXContainer::SetListboxPos( const TPoint aPoint )
{
 iListPos = aPoint;
 
 if( iListBox )
 {
  TRect rect = Rect();
  TSize size( Rect().Width(), Rect().iBr.iY - iListPos.iY );
  iListBox->SetExtent( iListPos, size );
  CEikScrollBar *scrollBar = iListBox->ScrollBarFrame()->GetScrollBarHandle( CEikScrollBar::EVertical );
  if( scrollBar )
  {
   TPoint pos = scrollBar->Position();
   pos.iY = iListPos.iY;
   scrollBar->SetExtent( pos, scrollBar->MinimumSize() );
  }
 }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值