第二人生的源码分析(七十一)实现闪屏窗口

现在的电子信息技术发展得很快,特别像 CPU这样的硬件,已经进入到多核时代,运行程序的速度比以前快了很多,但人类的需求是无止境的,因此写的程序也越来越大,越来越复杂,导致程序的初始化时,就变得比原来更加漫长。在人机交互理论里,让人等待超过10秒的时间,心情就会变得急躁,感觉这个程序不好用。那么有什么方法解决这个问题呢?在我们的社会里,到处都有排队等待的现象,比如让你去银行办理业务,如果让你站在那里等着,没有任何电视或报纸看,感觉时间需要很长。这里通过看电视和报纸,让人感觉到时间不长。其实还有一个更好的办法,当大家在银行排队时,银行的服务员应立即送上茶、可乐、冰棒等等,让大家一边吃着一边等着,这样排队更加感觉不到时间长了。所以在我们设计程序里,也需要给用户一些“茶、可乐、冰棒”,这就是闪屏窗口。
 
下面是闪屏窗口的类声明。
#001 class LLSplashScreen
#002 {
#003 public:
 
构造和析构函数
#004     LLSplashScreen() { };
#005     virtual ~LLSplashScreen() { };
#006 
#007 
#008     // Call to display the window.
 
创建一个闪屏窗口。
#009     static LLSplashScreen * create();
 
显示闪屏窗口。
#010     static void show();
 
隐藏闪屏窗口。
#011     static void hide();
 
让闪屏窗口显示新的字符串。
#012     static void update(const char* string);
#013 
 
判断闪屏窗口是否可见。
#014     static bool isVisible();
#015 protected:
 
重载下面三个函数实现不同平台的代码。比如 WINDOWS与LINUX平台就不一样的。
#016     // These are overridden by the platform implementation
#017     virtual void showImpl() = 0;
#018     virtual void updateImpl(const char* string) = 0;
#019     virtual void hideImpl() = 0;
#020 
#021     static BOOL sVisible;
#022 
#023 };
 
 
下面接着分析 WINDOWS平台下的实现代码,如下:
#001 //static
#002 void LLSplashScreen::show()
#003 {
#004     if (!gSplashScreenp)
#005     {
#006 #if LL_WINDOWS && !LL_MESA_HEADLESS
#007         gSplashScreenp = new LLSplashScreenWin32;
#008 #elif LL_DARWIN
#009         gSplashScreenp = new LLSplashScreenMacOSX;
#010 #endif
#011         if (gSplashScreenp)
#012         {
#013             gSplashScreenp->showImpl();
#014         }
#015     }
#016 }
 
上面实现 WINDOWS和MAC的创建窗口。在这里主要分析WINDOWS平台的类LLSplashScreenWin32的代码,下一次再来分析它。

转载于:https://www.cnblogs.com/ajuanabc/archive/2008/05/24/2464081.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值