一、软件进入主窗口前,先显示一个信息框,告诉用户一些有关该软件的信息,比如软件名称,版本号等。该信息框在显示1~2秒后自动消失。
1.建立New Application,这时系统自动生成一个Form1,这作为主Form.
2.File->New Form 建立一个新Form为Form2,这个作为信息框。
3.在Form2上添加组件TTimer(System控件条上),用于设定信息框的显示时间。
4.TTimer的事件OnTimer中加入:Form2->Close();
5.在WinMain()函数中加入:
Application->CreateForm(__classid(TForm2), &Form2);
Form2->ShowModal( ); //这句要自己加入
Application->Run();
并且要把Form2的头文件Unit2.h包括到WinMain()所在的Project1.cpp中。
6.运行程序,将先显示Form2,显示时间由TTimer的Interval属性决定,1000是一秒。
二、软件封面的实现
现代软件设计的流行做法是, 在程序运行完成初始化之前,先调用 一 幅画面做为封面, 通常是1/4屏幕 大小,显示一下 软件的名称、作 者、版本等信息。要用C++Builder实现这样的功能,方法很简单:
① 自定义一窗体类TSplashForm,将其设置成”透明窗口”,即 BorderIcons下的所有选项均置成false,
1 2 3 |
BorderStyle=bsNone; FormStyle=fsStayOnTop; Position=poScreenCenter; |
② 在TSplashForm窗体上放置一TPanel(相当于图形的镜框);
③ 在TPanel上放置一TImage控件,调入所需要的图形;
④ 对WinMain函数稍加修改,加入如下所示代码即可。需要指出的是,这段代码通过函数FindWindow,搜索内存中是否有窗口标题为 “Demo” 应用程序存在,若存在,则退出程序的运行。该功能可防止 程序的再次运行。在某些场合这样设计是必须的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { if(FindWindow(NULL,"Demo")!=0) { Application- >MessageBox (" 程 序 已 经 运 行!"," 警 告",MB_ICONSTOP); return 0; } TSplashForm *splash=new TSplashForm(Application); splash- >Show(); splash- >Update(); Application- >Initialize(); Application- >CreateForm(__classid(TForm1), &Form1); splash- >Close(); delete splash; Application- >Run(); } catch (Exception &exception) { Application- >ShowException(&exception); } return 0; } |