现在的电子信息技术发展得很快,特别像
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的代码,下一次再来分析它。