荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Minatl (Minatl), 信区: Program
标  题: CBuilder版权画面
发信站: BBS 荔园晨风站 (Wed Jan 20 19:22:09 1999), 转信



如何建立程式开始前的版权画面?



        通常程式在载入时都会先Show出其版权画面,除了美观及版权宣告的效果外,还可
以使操作者在程式载入时不会觉得有漫长的等待,实在是一举多得。版权画面其实与一般应
用程式的表单没什么两样,不过仍有其较特殊的地方∷

1.版权画面通常没有标题栏,且一定会先覆盖在主表单的上方,直到一定的时间或是使用滑
鼠在版权画面上点一下後,版权画面才消失。下面将示范後者的写法。

2.为了要在主表单建立前,先建立并显示版权画面,因此版权画面的表单须使用动态建立,
而不要让应用程式自行建立,且版权画面通常只出现一次,因此当其消失时,当将其所使用
的资源释放出来。

3.以下为您示范其做法.......


Step By Step:

1.先建立一个新的应用程式(使用 File| New Application),什么属性都不用设,只要放
一个 TLabel 物件就好了,其画面如下........
(如果您还不会建立下面的表单,没有人会怪您,不过请您先去学学Borland C++ Builder吧
! ^_^................绝对不会後悔喔!)




2.接下来要建立我们的版权画面(Form2)了,首先再开一个新的表单吧!使用 File|New
Form 或点选工作列的快速键。



3.接下来放一个 TImage 物件在 Form2 上,并点选 TImage 的 Picture 属性载入一个图形
,作为版权画面......画面如下



然後将Form2的属性设定如下∷
BorderStyle = bsNone            --->使表单没有边框及标题栏
FormStyle = fsStayOnTop      --->使版权画面覆盖在主程式上
Position = poScreenCenter     --->使版权画面显示在萤幕正中央

好了!画面都设计完了,接下来就要开始写程式了

4.接下来,我们要取消由应用程式自动建立Form2,所以点选 Options | Project...,然後
会出现下面的画面,将 Form2移到右边,应用程式就不会自动帮我们建立表单了。





5. 然後点选 View | Project Source ,即会出现专案的原始码,然後自行加入以下红色的
部分
 //---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop

#include "Unit2.h"            //因为要自行建立Form2,所以必须 include Unit2.h
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USERES("Project1.res");
USEFORM("Unit2.cpp", Form2);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
 try
 {
  Application->Initialize();
  TForm2 *Form2 = new TForm2(Application);
  Form2->Show();
  Application->CreateForm(__classid(TForm1), &Form1);
  Application->Run();
 }
 catch (Exception &exception)
 {
  Application->ShowException(&exception);
 }
 return 0;
}


6.好了!现在只剩下如何关闭版权画面,及释放他所占用的资源了。不信执行看看,现在已
经可以正常显示我们所要的功能了,不过最好不要这样做,因为他还没有办法关掉。
.........!!什么!!你已经执行了,那现在怎么办呢? 别担心,在【BCB】的选单下选
Run | Program Reset
就可以令程式正常终止了 。

7.因为我们希望使用者在版权画面点一下後,才关闭他,所以接下来就在 Image1 上建立一
个 OnClick 的事件,然後输入以下的程式

//注意∷是在 Image1 上建立 OnClick 事件,不是在 Form2 上喔!因为Form2上被
Image1盖满了,所以使用者根本点不到Form2

void __fastcall TForm2::Image1Click(TObject *Sender)
{
   Free();       //让 Form2 自己杀掉自己,这行就是等於 Form2->Free();
}
//---------------------------------------------------------------------------

8.然後在 Form2 上建立一个 OnClose 的事件
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
   Action = caFree;  //可以省略,只是再一次确定 Form2 会释放所有的资源
}


OK!大功告成............

执行结果∷






--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.240]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店