我以前骗稿酬的文章:
 带进度条的启动闪现窗体
有时候,我们设计的一个应用程序很大,它可能包含几十个窗体。前面我们已经知道,在程序开始执行时,先调用WinMain函数进行程序初始化并创建程序中的窗体,等到每个窗体都创建好,需要很长时间,用户并不知道需要等待多久,容易产生烦躁情绪。因此,我们可以考虑在程序的开始部分加入一个启动界面,上面用进度条来显示初始化的进度。等到窗体都初始化完,再关闭启动画面,显示主窗体。下面我们就来创建一个演示程序。
1. 先创建一个新的项目,保存项目文件为“Project1 . bpr”。向项目中加入20个窗体,这里之所以用这么多窗体,是因为窗体太少,在我的机器上无法看清闪现窗口,读者可以根据自己的实际情况增加或减少窗体。
2. 我们将Form1作为主窗体,Form20作为闪现窗体。选择菜单项“Project|Option”,将弹出“Project Option”多页选项卡,选择“Form”页,左边的Autocreate forms列表框列出当应用程序启动时自动创建的窗体,右边的Available forms列表框用于列出除启动时自动创建的窗体外应用程序的其他所有可用窗体,中间的操作按钮用于将已创建的窗体在左右两个列表框之间移动。我们把Form20移到右边的列表框中,使得程序启动时不会自动创建这个窗体。
3. 在窗体Form20中放入一个标签控件和一个进度条控件,并按下表设置各个控件的属性值:控件 属性 属性值
Form20 Caption 启动封面
BorderStyle bsNone
Position poScreenCenter
Color clGreen
FormStyle fsStayOnTop
Label1 Caption 正在装载程序,请稍等
Font 14
ProgressBar1 Max 200
Min 0
Position 0
Step 5
4. 打开“Project1.cpp”文件,并按下面所示对WinMain函数的代码进行修改:
   #include <vcl.h>
   #include "Unit20.h"
   #pragma hdrstop
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
        try
        {
                 Application->Initialize();
                 Form20=new TForm20(Application);
                 Form20->ProgressBar1->Max=200;
                 Form20->Show();
                 Form20->Update();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm2), &Form2);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm3), &Form3);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm4), &Form4);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm5), &Form5);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm6), &Form6);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm7), &Form7);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm8), &Form8);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm9), &Form9);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm10), &Form10);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm11), &Form11);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm12), &Form12);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm13), &Form13);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm14), &Form14);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm15), &Form15);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm16), &Form16);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm17), &Form17);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm18), &Form18);
                 Form20->ProgressBar1->StepIt();
                 Application->CreateForm(__classid(TForm19), &Form19);
                 Form20->ProgressBar1->StepBy(200-Form20->ProgressBar1->Position);
                 delete Form20;
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        return 0;
}
编译并运行这个程序,我们将看到带进度条的闪现窗体,随着进度条的变化,程序进行初始化,当进度条达到最大值时,初始化完毕,闪现窗体消失,主窗体出现。