荔园在线

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

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


发信人: jek (好好学习天天向上), 信区: Program
标  题: 创世纪的 C++builder(1)
发信站: BBS 荔园晨风站 (Sun Mar 12 02:34:58 2000), 转信

创世纪的C++ Builder



跨出「世纪末」的程式人



自从十九世纪末,两位姓名已隐去的巴黎编剧人发明了「世纪未」这个

词,以後每一百年,人们就要在颓废、焦虑、不安、躁切的情愫里走一

 月 。而在这个世纪,也开? 有人提出了种种的始 湍┛诤牛印甘?

纪末软体革命」、「世纪末文化革命」到「世纪末XX革命」,似乎只要冠

上「世纪末」就足以代表这个世代的所有情愫。





对於程式人来说,「世纪末软体革命」指的是物件导向程式设计方法所带

来的思维模式的转变(Paradigm

Shift),它改变了程式写作的思维模式,扩大了程式人的视野,有人把

它和工业革命相比拟,认为它将会成为软体业界的工业革命;然而,我

们都知道,软体业的工业革命还未到来。我们都在等待,也都在期待着

黎明的曙光。





程式人的「创世纪」情结



「创世纪」是程式人的图腾,它可以代表程式人个性中勇於创造的特质,

它也曾经是许多程式人最爱的RPG(角色扮演游戏)。几乎所有的程式人

都喜爱并乐於享受创造物件的成就感,而这种热中创造的特质,造就了

许多优秀的程式。





在每个电脑世纪的交替中,都曾经产生一些创世纪的人物或产品司,其

中Borland就是其中的一员。



Borland的霸王传说



自从十五年前,Anders Hejlsber写下了第一个Turbo Pascal编译器以

来,Borland就靠着Turbo

Pascal稳定、优雅、与快速的编译功能,加上当时的Pascal是资讯科

系的「官话」,为钦定的教学语言,使得Borland成为雄霸一方的霸主。



随着Turbo Pascal的成功,Borland乘势而起,推出了Turbo C及Turbo

C++,成为第二个在PC上推出商业化C++

的编译器厂商(第一个是Zortech C++,由C++ 之父Bjarne

Stroustrup亲自设计,现在已被Symantec收购)。这几个成功的产品,

将Borland的声势带上高峰,於是为了更加打响Borland的名号,将旗

下的所有产品,改冠以Borland之名,於是Borland的後续产品以Borland

为名,如Borland

C++,Borland Pascal厎.等等。



在Windows世纪开创之初,Borland C++

3.1是当初唯一可以在Windows开发Windows软体的程式发展工具,当

时Borland还以此为号召,大力抨击当时的MSC (Microsoft

C)只能在Dos下撰写好像也不怎麽小厎.),石破天惊地推

出了新一代的程式发展工具'Delphi ,这个以快速程式发展工具

(RAD'Rapid

Application Development)为号召的产品,一推出之後立即成为镁光镫

的焦点,成为挽救当时Borland的救火队。



在Delphi推出之後,奠定了Borland在RAD领域的不朽地位,而Delphi

也成为在PC上唯一可以和工作站级的Nextstep IB (Interface

Builder )等量齐观的重量级发展工具,不过这时开始有人在思考,什麽

时候Borland会推出C++ 的快速程式发展工具。



在去年的Comdex展,Borland开始赠送一套代号为Ebony的程式发展工

具,在几经审视之後,才发现它就是传说中的Delphi for

C++,也就是现在正式名称为Borland C++ Builder, 简称为BCB的RAD。



Borland再次的开启了一个RAD的战场,和当初的Turbo

Pascal一般,它的後继者Delphi,是这场战役的先锋,并且已为Borland

蠃得了多次的前哨+ Builder 的创世纪吧!





告别Hello World的年代



许多电脑语言书籍入门书内的第一个程式都以一个印出Hello World字

串的小程式作为第一个入门程式,而在Windows程式设计领域享有天王

之名的Charles

Petzold在他圣经级的着作的Programming Windows 中也是以一个Hello

Window做为该书的开场白,在迈入C++

Builder的世纪之後,我就不再使用这种纯古法 造的方法来写作了,

为了充份让您感受它的致命吸引力,现在我所展示的给您的第一个程式

是多媒体拨放程式,而且我会告诉您如何在十分钟之内写出一个多媒体

拨放程式,「市础?



C++ Builder发展环境主要分为以下元件:

(1)表格(Form)视窗

(2)元件盒(Compoment palette)

(3)物件检视器(Object Inspector)

(4)程式编辑器(Code Editor)

(5)加速棒(SpeedBar)



表格视窗 (Form)





表格是C++

程式设计的焦点,我们可以将表格视为一张画布,在程式设计时,我们

主要做的工作只是将程式元件放置在表格上而已。因此表格其实可视为

一个包含其他元件的软体元件。



元件盒(Compoment Palette)





软体元件是你用以架构C++ Builder程式的基本元素。在C++ Builder

中软体元件依其元件特性分门别类地放置在活页式的元件盒中,在C++

Builder中提供了超过了百种以上的基本元件,程式设计时,只要将元

件盒内的软体元件拖放至表格中即可。



物件检视器(Object Inspector)



物件检视器是用以改变物件的内容,改变该物件的行为模式以符合你的

需要。物件的内容包含了属性(Property)及其事件处理程式(Event

Handler)。你可以视需要改变指定物件的状态及行为模式。



程式编辑器(Code Editor)





C++ Builder的程式编辑器是一个全功能的编辑器,它让你可以存取及

编辑所有专案内的程式。



加速棒(SpeedBar

完成了以上的程序後,大抵一个程式也差不多设计完了。这也是C++

Builder的迷人之处。



开启新表格



在进入C++ Builder後,它会自动为你开启一个新的表格。此时表格开

启的工作就算完成了,若是要加入其他新的表格,只要执行[File/New

Form]即可。



将软体元件置入表格中



在开启新表格後,你可以在元件盒中选取元件,置入表格中,在此要特

别说明的是,在C++ Builder的设计时期(Design Time)和执行时期(run

time),大部份元件的行为模式几乎是相同,所以在设计时你就可以看到

程式执行的结果。



在我们的这个程式中,除了表格外,有一个元件包含了其它的元件,那

就是活页式表格元件(TabbedNoteBook),这个元件和表格类似,必须最

早放入表格中以容纳其他元件。





在我们的第一个程式中置入软体元件後的结果如下:



你可以看到,除了因为没有执行,所以没有显示动画档之外,它和执行

的结果几乎一模一样。



首先我们来看看这个程式用到了那些元件。



 TTabbedNoteBook 活页式表格元件。位於元件盒的「Win3.1」页,用以

做出「动画及音效-及┃音乐CD-两个表格。

 Tlabel 标题元件。位於元件盒的「Standard」页,用以显示"媒体播放

程式"字样。

 TPanel 面板元件。位於元件盒的「Standard」页,用以显示动画图形

档。

 TMediaPlayer 媒体播放元件。位於元件盒的「System」页,用以播放

多媒体。

 TDriveListBox 磁碟机列表元作 。位於元件盒的「System」页,用以

显示磁碟机名。

 TF睿憧梢匝∪「美肝唬耸蹦慊岱⑾炙岢?

现一个列表,这个列表会将目前表格中所有的目录列表元件显示出来,

因为我们所设计的表格中只有一个目录列表元件,所以你只要选择该列

表中唯一的一个即可。







以上的动作所代表的意义就是:建立磁碟机列表元件和目录列表元件之

间的关系,当磁碟机改变时,必须通知目录列表元件,使其跟着改变。



同理我们选取目录列表元件,并设定其属性,在目录列表元件中我们感

兴趣的是「FileList」栏位,此时你可以选取该栏位,并将它设定为表

格中的档案列表元件。



以上的动作所代表的意义就是:建立目录列表元件和档案列表元件之间

的关系,当目录改变时,必须通知档案列表元件,使其跟着改变至目前

目录的列表。



接着我们选取档名过滤器元件,并设定其属性,在档名过滤器元件中我

们感兴趣的是「FileList」栏位,此时你可以选取该栏位,并将它设定

为表格中的档案列表元件。





以上的动作所代表的意义就是:建立档名过滤器元件和档案列表元件之

间的关系,当档名过滤器改变时,必须通知档案列表元件,使其跟着改

变至目前的档案列表。



最後,我们要设定档名过滤器元件的过滤,在这个程式中我希望可以播

放AVI动画档及WAV音效档,所以必须适当地设定档名过滤器元件,



同样地,我们首先选取档名过滤器元件。



在这个元件中我们所感兴趣的是其中的「Filter」属性,因此我们在该

项目上点二下,此时我们会看到如下的画面:



如图所示,我们将AVI动画档家丫诺暗蛋噶斜碓瓒ㄍ瓿闪耍?

此时你可以先行执行程式,看看其动作是否正确。执行程式的方法是在

选取选单上的「Run/Run」,或是直接按「F9」即可。





如何?神奇吧!用C++ Builder写程式就是这麽简单。



再来我们思考多媒体播放程式的部份,我们希望它的动作方式如下:

(1)以TPanel来显示动画画面。

(2)以多媒体播放元件来播放目前档案列表中所选取的档案。

(3)在档案列表元件以双击(Double-Click)来播放该档案。



首先我们先来看看多媒体播放元件的内容:



在多媒体播放程式中我们感兴趣的是其中的「Display」项目。因此我们

选取「Display」项目,此时你会看到所有在表格中可供显示的元件:



我们希望将动画画面显示在「Panel1」元件中,因此请你选择「Panel1」

项目。完成这个动作之後,媒体播放程式在播放动画档时会将画面显示

在「Panel1」上。





接着我们设定播放的动作:

要设定播放的动作,你必须选取多媒体播放元件,并将物件检视器切换

至「事件(Events)」页,然後在其中的OnClick上按两下(Double-Click),

接着C++

Builder会为你自动产生一段空的程式码的,然後就切换至程式编辑器

中。





以下的画面即是C++ Builder切换的程式编辑器画面,此画面我已经填

入了程式码,你的程式应该是空的。





再来我们看看应该在其中填入那些程式码呢?



void __fastcall TForm1::MediaPlayer1Click(TObject *Sender,

        TMPBtnType Button, bool &DoDefault)

{

    //以下为我们填入的程式码

    if (Button==btPlay)

    {

        MediaPlayer1->FileName=FileListBox1->FileName;

        MediaPlayer1->Open();

        MediaPlayer1->Play();

        DoDefault=FALSE;

        } else

        DoDefault=TRUE;

}



以上我们填入的程式码的主要动作就是:

(1)将媒体播放元件档名指定为档案列表元件目前的档名。

(2)开启媒体播放程式。

(3)开始播放。



进行到这儿,你可以再次执行程式。然後选取适当的档案,在选好了档

案之後,你就可以在多媒体拨放元件中选择执行,若是你所选择的是AVI

动画档,你已经可以看到动画播放在我们所指定的元件「Panel1」上了。









最後,我们希望再提供一种播放档案的方式,那就是在档案列表中以双

击(Double-Click)的方式来播放指定档案。此时我们可以选择档案列表

元件,并将物件检视器切换至事件页,这时你会看到以下的画面:







同样地你可以在「OnDblClick」项目双击,此时C++ Builder会自动为

我们产生程式码,并且自动切换至程式码编辑器中:







上图即为程式码编辑画面,此画面我已经填入了程式码,你的应该是空

的,接着你再於编辑器中填入以下的程式码:



void __fastcall TForm1::FileListBox1DblClick(TObject *Sender)

{

    MediaPlayer1->FileName=FileListBox1->FileName;

    MediaPlayer1->Open();

    MediaPlayer1->Play();

}



以上我们填入的述的操作之後,你可以再次地执行程式,选取欲播放的档案,

然後以双击的方式来执行档案。



进行到这儿,你已经掌握了C++ Builder程式设计的精神,也写出了一

个不错的媒体播放程式。你是不是对C++

Builder的快速程式发展环境(RAD:Rapid Application Development)愈

来愈有信心了呢?



接下来你会发现,到目前为止,我似乎没有把这个范例程式完全解说清

楚,因为前面的执行画面中的活页式表格元件中,还有另一页是「音乐

CD」的播放,另外关於「媒体拨放程式」这个字形的设定方式也没有解

说。





是的,没错,这些都是我打算留给你自行练习的项目,因为较之前面所

述的几个操作,它们都简单多了,以下我先简单透露几个重点:



(1)选择「活页式表格」元件,并改变其「Pages」属性。利用它所提供

的编辑器,编辑页数及名称。

(2)将「ActivePage」切换至音乐CD页,如前面所述加入一个多媒体播

放元件。

(3)将多媒体播放元件的「Device Type」设定为CD Audio.

(4)撰写播放程式码。因为播放音乐CD不需要开档,所以不需要指定档

案。

(5)设定各个标的字形。



完成了以上的动作後,你可以再度执行程式并切换「音乐CD」中,放入

CD,然後就可以播放CD了。



以下示范画面:





你可以试着自行去打造你的程式画面,以上的程式画面都只用了简单的

标题元件及图形元件而已,你可以尝试着玩玩看。



以上就是我们用C++ Builder所撰写的第一个程式,它是不是给了你一

个全新的感受,原来Window 程式设计也可以是如此这般的轻松。



当然,这只是一个开始而已,在後续的单元中,我会继续带着你走进C++

Builder所架构的美丽新世界,探索这种新的程式设计方法。



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


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

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