第二人生的源码分析(九十)LLScrollListCtrl实现列表显示

在第二人生的 UI显示里,滚动列表也使用比较多的,由于多项列表选择的情况下,使用滚动列表往往使用界面使用起来更方便实用。如下面的登录界面,就有使用到滚动列表的控件:
 
从上图里可以看到最右边使用到一个滚动列表来显示不同的服务器,这样方便用户选择不同的服务器登录。那这个滚动列表是怎么样实现的呢?接着下来就分析这个类的代码,类的继承关系如下:
#001 class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
#002     public LLCtrlListInterface, public LLCtrlScrollInterface
 
它的显示代码如下:
#001 void LLScrollListCtrl::draw()
#002 {
 
判断这个控件是否可见,如果可见就显示出来。
#003     if( getVisible() )
#004     {
 
判断是否需要排序。
#005         // if user specifies sort, make sure it is maintained
#006         if (needsSorting() && !isSorted())
#007         {
#008             sortItems();
#009         }
#010 
 
是否需要显示滚动条。
#011         if (mNeedsScroll)
#012         {
#013             scrollToShowSelected();
#014             mNeedsScroll = FALSE;
#015         }
#016         LLRect background(0, getRect().getHeight(), getRect().getWidth(), 0);
 
显示滚动列表的背景。
#017         // Draw background
#018         if (mBackgroundVisible)
#019         {
#020             LLGLSNoTexture no_texture;
#021             gGL.color4fv( getEnabled() ? mBgWriteableColor.mV : mBgReadOnlyColor.mV );
#022             gl_rect_2d(background);
#023         }
#024 
 
更新显示列宽度。
#025         if (mColumnsDirty)
#026         {
#027             updateColumns();
#028             mColumnsDirty = FALSE;
#029         }
#030 
 
下面开始显示所有列表元素。
#031         drawItems();
#032 
 
是否有边框显示,如果有就显示出来。
#033         if (mBorder)
#034         {
#035             mBorder->setKeyboardFocusHighlight(gFocusMgr.getKeyboardFocus() == this);
#036         }
#037 
 
调用基类的显示函数。
#038         LLUICtrl::draw();
#039     }
#040 }
#041 
 
通过上面的函数,就可以把上图看到的列表显示出来,下一次再来看看怎么样添加列表项和详细地显示列表项的代码。
 
 
第二人生开发包提供,价格198元/套(含邮费)。
包括内容如下:
1.    《第二人生的源码分析》PDF文档。
2.    第二人生客户端源程序。
3.    2G U 盘一个,主要用来拷贝源程序以及相关开发工具。
 
提供三个月的技术服务,
提供快速编译指导,比如通过QQ远程编译操作。
提供完整的书参考。
 
联系方式:
QQ:             9073204
MSN:            caimouse1976@sina.com
EMAIL:          ccaimouse@gmail.com
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值