| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> c/c++ >> 創世紀的C++ Builder--入門例子
 

創世紀的C++ Builder--入門例子

2008-06-01 02:07:44  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  跨出「世紀末」的程式人

  自從十九世紀末,兩位姓名已隱去的巴黎編劇人發明了「世紀未」這個詞,以後每一百年,人們就要在頹廢、焦慮、不安、躁切的情愫裏走一趙輪回。而在這個世紀,也開始有人提出了種種的世紀末口號,從「世紀末軟體革命」、「世紀末文化革命」到「世紀末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下撰寫Windows程式。然而隨著Visual C++ 的推出,情勢逆轉,在視覺發展工具的優勝劣敗下,Borland慢慢地喪失它既有的領土。

  在這兩強對決的時代,Borland的開國功臣Turbo Pascal始終被遺忘在曆史的一個角落,然而它的開發小組也不是省油的燈,在經過了幾年的臥薪嘗膽之後,Anders Hejlsber再度帶領小組(這個小組似乎也不怎麽小篹.),石破天驚地推出了新一代的程式發展工具'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贏得了多次的前哨戰,然後隨著C++ Builder的推出,Delphi這個打了勝仗的先鋒是否會如它的前身Turbo Pascal般沒入曆史中呢?

  短期看來是不會的,因爲BCB現在還算是喝Delphi的奶水長大的,它所使用的軟體元件都是以Delphi所撰寫的VCL元件(Visual Compoment Library),至於以後Borland會不會以BCB全盤改寫VCL呢?這是有可能的,那長期看來,BCB是否會取代Delhi呢?這似乎只能由時間來告訴我們了。不過Delphi之父Anders Hejlsber已經在去年由Borland離職了,這似乎透露了一些訊息。

  說到這兒,我想您已經迫不及待地想要一睹C++ Builder的盧山真面目了,沒錯,今天這場RAD的戰爭已經開啓了,勝敗的的觀點已不是我們所關心的,我們所關心的是一個程式人的前哨站已經開打了,當別人都在使用C++ Builder這種重武器時,我們該如何因應?

  既然無法反抗它,那就加入它! 讓我們參與C++ Builder 的創世紀吧!

  離別Hello World的年代

  許多電腦語言書籍入門書內的第一個程式都以一個印出Hello World字串的小程式作爲第一個入門程式,而在Windows程式設計領域享有天王之名的Charles Petzold在他聖經級的著作的PRogramming Windows 中也是以一個Hello Window做爲該書的開場白,在邁入C++ Builder的世紀之後,我就不再使用這種純古法饷造的方法來寫作了,爲了充份讓您感受它的致命吸引力,現在我所展示的給您的第一個程式是多媒體撥放程式,而且我會告訴您如何在十分鍾之內寫出一個多媒體撥放程式,「十分鍾!有沒有搞錯?」,沒錯,就是十分鍾,用C++ Builder你絕對可以在十分鍾內寫出一個夠水准的媒體播放程式'即使你是一個菜得不能再菜的初學者。

  它的執行畫面如下:

創世紀的C++ Builder--入門例子


  

  

  好戲開鑼啦!

  在進入C++ Builder時你會看到以下的畫面

創世紀的C++ Builder--入門例子


  首先我簡單地爲你介紹C++ Builder發展環境,在此我只對整個發展環境做一個簡單的浏覽,以利程式的撰寫。

  C++ Builder發展環境主要分爲以下元件:

  (1)表格(Form)視窗

  (2)元件盒(Compoment palette)

  (3)物件檢視器(Object Inspector)

  (4)程式編輯器(Code Editor)

  (5)加速棒(SpeedBar)

  表格視窗 (Form)

創世紀的C++ Builder--入門例子


  表格是C++ 程式設計的焦點,我們可以將表格視爲一張畫布,在程式設計時,我們主要做的工作只是將程式元件放置在表格上而已。因此表格其實可視爲一個包含其他元件的軟體元件。

  元件盒(Compoment Palette)

創世紀的C++ Builder--入門例子


  軟體元件是你用以架構C++ Builder程式的基本元素。在C++ Builder中軟體元件依其元件特性分門別類地放置在活頁式的元件盒中,在C++ Builder中提供了超過了百種以上的基本元件,程式設計時,只要將元件盒內的軟體元件拖放至表格中即可。

  物件檢視器(Object Inspector)

創世紀的C++ Builder--入門例子


  物件檢視器是用以改變物件的內容,改變該物件的行爲模式以符合你的需要。物件的內容包含了屬性(Property)及其事件處理程式(Event Handler)。你可以視需要改變指定物件的狀態及行爲模式。

  程式編輯器(Code Editor)

創世紀的C++ Builder--入門例子


  C++ Builder的程式編輯器是一個全功能的編輯器,它讓你可以存取及編輯所有專案內的程式。

  加速棒(SpeedBar)

創世紀的C++ Builder--入門例子


  加速棒(SpeedBar),顧名思義,它是用來加快程式的操作。C++ Builder將許多在功能表中常用的功能,在加速棒中以捷徑的方式提供你使用。

  你的第一個C++ Builder程式

  我們已經簡單地介紹了C++ Builder程式發展環境,現在我們要開始撰寫我們的第一個程式'媒體撥放程式。

  設計表格

  首先你要先設計你所要使用的表格長相。設計表格非常簡單,其實只是將軟體元件放在視窗中而已。以下我以幾個步驟示範表格的設計:

  (1)開啓新表格

  (2)將軟體元件置入表格中

  (3)設定各個軟體元件的屬性

  (4)執行程式

  完成了以上的程序後,大抵一個程式也差不多設計完了。這也是C++ Builder的迷人之處。

  開啓新表格

  在進入C++ Builder後,它會自動爲你開啓一個新的表格。此時表格開啓的工作就算完成了,若是要加入其他新的表格,只要執行[File/New Form]即可。

  將軟體元件置入表格中

  在開啓新表格後,你可以在元件盒中選取元件,置入表格中,在此要非凡說明的是,在C++ Builder的設計時期(Design Time)和執行時期(run time),大部份元件的行爲模式幾乎是相同,所以在設計時你就可以看到程式執行的結果。

  在我們的這個程式中,除了表格外,有一個元件包含了其它的元件,那就是活頁式表格元件(TabbedNoteBook),這個元件和表格類似,必須最早放入表格中以容納其他元件。

  在我們的第一個程式中置入軟體元件後的結果如下:

創世紀的C++ Builder--入門例子


  你可以看到,除了因爲沒有執行,所以沒有顯示動畫檔之外,它和執行的結果幾乎一模一樣。

  首先我們來看看這個程式用到了那些元件。

創世紀的C++ Builder--入門例子
TTabbedNoteBook 活頁式表格元件。位於元件盒的「Win3.1」頁,用以做出「動畫及音效 及|音樂CD 兩個表格。

創世紀的C++ Builder--入門例子
Tlabel 標題元件。位於元件盒的「Standard」頁,用以顯示"媒體播放程式"字樣。

創世紀的C++ Builder--入門例子
TPanel 面板元件。位於元件盒的「Standard」頁,用以顯示動畫圖形檔。

創世紀的C++ Builder--入門例子
TMediaPlayer 媒體播放元件。位於元件盒的「System」頁,用以播放多媒體。

創世紀的C++ Builder--入門例子
TDriveListBox 磁碟機列表元作 。位於元件盒的「System」頁,用以顯示磁碟機名。

創世紀的C++ Builder--入門例子
TFilterComboBox 檔名過濾器元件。位於元件盒的「System」頁,用以過濾檔名。

創世紀的C++ Builder--入門例子
TDirectoryListBox 目錄列表元件。位於元件盒的「System」頁,用以顯示目錄。

創世紀的C++ Builder--入門例子
TFileListBox 檔案列表元作。位於元件盒的「System」頁,用以顯示檔案。

  

  

  在使用這些元件時,請先至元件盒中選出欲使用的元件,然後將其拖放至表格中適當的位置,再改變元件的大小,如此你就可以得到一個表格的雛形了。

  設定各個軟體元件的屬性

  將軟體元件置入表格中之後,再來我們就要開始設定元件屬性了。爲了要讓這些元件互相合作,我們必須設定它們之間的關系,在設定之前我們先仔細想想它們之間的動作模式:

  首先思考磁碟機及檔案元件的關系:

  (1)改變磁碟機後,目錄必須跟著改變。

  (2)改變目錄後,檔案列表必須跟著改變。

  (3)改變檔名過濾器後,檔案列表必須跟著改變。

  在了解它們的關系後,我們就可以開始動手來設定它們的屬性了,設定屬性其實非常簡單,只要在表格上選取該元件時,物件檢視器就會顯示該物件所有的屬性,以磁碟機元件爲例,當我們選取到該元件時,物件檢視器就會切換到如下圖所示的狀態:

創世紀的C++ Builder--入門例子


  此時你可以看到在物件檢視器顯示了磁碟機列表元件的屬性,其中我們感愛好的是「DirList」一項,你可以選取該欄位,此時你會發現它會出現一個列表,這個列表會將目前表格中所有的目錄列表元件顯示出來,因爲我們所設計的表格中只有一個目錄列表元件,所以你只要選擇該列表中唯一的一個即可。

創世紀的C++ Builder--入門例子


  以上的動作所代表的意義就是:建立磁碟機列表元件和目錄列表元件之間的關系,當磁碟機改變時,必須通知目錄列表元件,使其跟著改變。

  同理我們選取目錄列表元件,並設定其屬性,在目錄列表元件中我們感愛好的是「FileList」欄位,此時你可以選取該欄位,並將它設定爲表格中的檔案列表元件。

創世紀的C++ Builder--入門例子


  以上的動作所代表的意義就是:建立目錄列表元件和檔案列表元件之間的關系,當目錄改變時,必須通知檔案列表元件,使其跟著改變至目前目錄的列表。

  接著我們選取檔名過濾器元件,並設定其屬性,在檔名過濾器元件中我們感愛好的是「FileList」欄位,此時你可以選取該欄位,並將它設定爲表格中的檔案列表元件。

創世紀的C++ Builder--入門例子


  以上的動作所代表的意義就是:建立檔名過濾器元件和檔案列表元件之間的關系,當檔名過濾器改變時,必須通知檔案列表元件,使其跟著改變至目前的檔案列表。

  最後,我們要設定檔名過濾器元件的過濾,在這個程式中我希望可以播放AVI動畫檔及WAV音效檔,所以必須適當地設定檔名過濾器元件,

  同樣地,我們首先選取檔名過濾器元件。

創世紀的C++ Builder--入門例子


  在這個元件中我們所感愛好的是其中的「Filter」屬性,因此我們在該項目上點二下,此時我們會看到如下的畫面:

創世紀的C++ Builder--入門例子


  如圖所示,我們將AVI動畫檔及WAV音效檔的過濾字元填入即可。在程式執行時,拉下檔名過濾器時所顯示的名稱,就是你所填入的過濾器,它會發揮把關的角色,使得只有符合條件的檔名顯示在檔案列表中。

  完成了以上動作之後,你就已經將磁碟機及檔案列表元件設定完成了,此時你可以先行執行程式,看看其動作是否正確。執行程式的方法是在選取選單上的「Run/Run」,或是直接按「F9」即可。

  如何?神奇吧!用C++ Builder寫程式就是這麽簡單。

  再來我們思考多媒體播放程式的部份,我們希望它的動作方式如下:

  (1)以TPanel來顯示動畫畫面。

  (2)以多媒體播放元件來播放目前檔案列表中所選取的檔案。

  (3)在檔案列表元件以雙擊(Double-Click)來播放該檔案。

  首先我們先來看看多媒體播放元件的內容:

創世紀的C++ Builder--入門例子


  在多媒體播放程式中我們感愛好的是其中的「Display」項目。因此我們選取「Display」項目,此時你會看到所有在表格中可供顯示的元件:

創世紀的C++ Builder--入門例子


  我們希望將動畫畫面顯示在「Panel1」元件中,因此請你選擇「Panel1」項目。完成這個動作之後,媒體播放程式在播放動畫檔時會將畫面顯示在「Panel1」上。

  接著我們設定播放的動作:

  要設定播放的動作,你必須選取多媒體播放元件,並將物件檢視器切換至「事件(Events)」頁,然後在其中的OnClick上按兩下(Double-Click),接著C++ Builder會爲你自動産生一段空的程式碼的,然後就切換至程式編輯器中。

創世紀的C++ Builder--入門例子


  

  

  以下的畫面即是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)開始播放。

  進行到這兒,你可以再次執行程式。然後選取適當的檔案,在選好了檔案之後,你就可以在多媒體撥放元件中選擇執行
創世紀的C++ Builder--入門例子
,若是你所選擇的是AVI動畫檔,你已經可以看到動畫播放在我們所指定的元件「Panel1」上了。

創世紀的C++ Builder--入門例子


  最後,我們希望再提供一種播放檔案的方式,那就是在檔案列表中以雙擊(Double-Click)的方式來播放指定檔案。此時我們可以選擇檔案列表元件,並將物件檢視器切換至事件頁,這時你會看到以下的畫面:

創世紀的C++ Builder--入門例子


  同樣地你可以在「OnDblClick」項目雙擊,此時C++ Builder會自動爲我們産生程式碼,並且自動切換至程式碼編輯器中:

創世紀的C++ Builder--入門例子


  上圖即爲程式碼編輯畫面,此畫面我已經填入了程式碼,你的應該是空的,接著你再於編輯器中填入以下的程式碼:

  void __fastcall TForm1::FileListBox1DblClick(TObject *Sender)

  {

   MediaPlayer1->FileName=FileListBox1->FileName;

   MediaPlayer1->Open();

   MediaPlayer1->Play();

  }

  以上我們填入的程式碼的主要動作就是:

  (1)將媒體播放元件檔名指定爲檔案列表元件目前的檔名。

  (2)開啓媒體播放程式的指定檔案。

  (3)開始播放。

  在完成了上述的操作之後,你可以再次地執行程式,選取欲播放的檔案,然後以雙擊的方式來執行檔案。

  進行到這兒,你已經把握了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所架構的漂亮新世界,探索這種新的程式設計方法。
 
 
 
上一篇《在C++中的ODBC API數據庫編程》
下一篇《C++中建立對象間消息連接的系統方法》
 
 
 
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

河南夫妻在溫嶺網絡直播“造人”內容涉黃被刑事拘留

夫妻網絡直播“造人”爆紅   1月9日,溫嶺城北派出所接到南京警方的協查通告,他們近期打掉了一個涉黃直播APP平台。而根據掌握的線索,其中有一對涉案的夫妻主播...

如何防止牆紙老化?牆紙變舊變黃怎麽辦?

如何防止牆紙老化? (1)選擇透氣性好的牆紙 市場上牆紙的材質分無紡布的、木纖維的、PVC的、玻璃纖維基材的、布面的等,相對而言,PVC材質的牆紙最不透氣...

鮮肌之謎非日本生産VS鮮肌之謎假日貨是謠言

觀點一:破日本銷售量的“鮮肌之謎” 非日本生産 近一段時間,淘寶上架了一款名爲“鮮肌之謎的” 鲑魚卵巢美容液,號稱是最近日本的一款推出的全新護膚品,産品本身所...

中國最美古詩詞精選摘抄

系腰裙(北宋詞人 張先) 惜霜蟾照夜雲天,朦胧影、畫勾闌。人情縱似長情月,算一年年。又能得、幾番圓。 欲寄西江題葉字,流不到、五亭前。東池始有荷新綠,尚小如...

關于女人的經典語句

關于女人的經典語句1、【做一個獨立的女人】 思想獨立:有主見、有自己的人生觀、價值觀。有上進心,永遠不放棄自己的理想,做一份自己喜愛的事業,擁有快樂和成就...

未來我們可以和性愛機器人結婚嗎?

你想體驗機器人性愛嗎?你想和性愛機器人結婚嗎?如果你想,機器人有拒絕你的權利嗎? 近日,第二屆“國際人類-機器人性愛研討會”大會在倫敦金史密斯大學落下帷幕。而...

全球最變態的十個地方

10.土耳其地下洞穴城市 變態指數:★★☆☆☆ 這是土耳其卡帕多西亞的一個著名景點,傳說是當年基督教徒們爲了躲避戰爭而在此修建。裏面曾住著20000人,...

科學家稱,人類死亡後意識將在另外一個宇宙中繼續存活

據英國《每日快報》報道,一位科學家兼理論家Robert Lanza博士宣稱,世界上並不存在人類死亡,死亡的只是身體。他認爲我們的意識借助我們體內的能量生存,而且...

《屏裏狐》片頭曲《我愛狐狸精》歌詞是什麽?

《我愛狐狸精》 - 劉馨棋   (電視劇《屏裏狐》主題曲)   作詞:金十三&李旦   作曲:劉嘉   狐狸精 狐狸仙   千年修...

 
 
 
跨出「世紀末」的程式人 自從十九世紀末,兩位姓名已隱去的巴黎編劇人發明了「世紀未」這個詞,以後每一百年,人們就要在頹廢、焦慮、不安、躁切的情愫裏走一趙輪回。而在這個世紀,也開始有人提出了種種的世紀末口號,從「世紀末軟體革命」、「世紀末文化革命」到「世紀末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下撰寫Windows程式。然而隨著Visual C++ 的推出,情勢逆轉,在視覺發展工具的優勝劣敗下,Borland慢慢地喪失它既有的領土。 在這兩強對決的時代,Borland的開國功臣Turbo Pascal始終被遺忘在曆史的一個角落,然而它的開發小組也不是省油的燈,在經過了幾年的臥薪嘗膽之後,Anders Hejlsber再度帶領小組(這個小組似乎也不怎麽小篹.),石破天驚地推出了新一代的程式發展工具'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贏得了多次的前哨戰,然後隨著C++ Builder的推出,Delphi這個打了勝仗的先鋒是否會如它的前身Turbo Pascal般沒入曆史中呢? 短期看來是不會的,因爲BCB現在還算是喝Delphi的奶水長大的,它所使用的軟體元件都是以Delphi所撰寫的VCL元件(Visual Compoment Library),至於以後Borland會不會以BCB全盤改寫VCL呢?這是有可能的,那長期看來,BCB是否會取代Delhi呢?這似乎只能由時間來告訴我們了。不過Delphi之父Anders Hejlsber已經在去年由Borland離職了,這似乎透露了一些訊息。 說到這兒,我想您已經迫不及待地想要一睹C++ Builder的盧山真面目了,沒錯,今天這場RAD的戰爭已經開啓了,勝敗的的觀點已不是我們所關心的,我們所關心的是一個程式人的前哨站已經開打了,當別人都在使用C++ Builder這種重武器時,我們該如何因應? 既然無法反抗它,那就加入它! 讓我們參與C++ Builder 的創世紀吧! 離別Hello World的年代 許多電腦語言書籍入門書內的第一個程式都以一個印出Hello World字串的小程式作爲第一個入門程式,而在Windows程式設計領域享有天王之名的Charles Petzold在他聖經級的著作的PRogramming Windows 中也是以一個Hello Window做爲該書的開場白,在邁入C++ Builder的世紀之後,我就不再使用這種純古法饷造的方法來寫作了,爲了充份讓您感受它的致命吸引力,現在我所展示的給您的第一個程式是多媒體撥放程式,而且我會告訴您如何在十分鍾之內寫出一個多媒體撥放程式,「十分鍾!有沒有搞錯?」,沒錯,就是十分鍾,用C++ Builder你絕對可以在十分鍾內寫出一個夠水准的媒體播放程式'即使你是一個菜得不能再菜的初學者。 它的執行畫面如下: [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423546858.gif[/img][/url] 好戲開鑼啦! 在進入C++ Builder時你會看到以下的畫面 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547026.gif[/img][/url] 首先我簡單地爲你介紹C++ Builder發展環境,在此我只對整個發展環境做一個簡單的浏覽,以利程式的撰寫。 C++ Builder發展環境主要分爲以下元件: (1)表格(Form)視窗 (2)元件盒(Compoment palette) (3)物件檢視器(Object Inspector) (4)程式編輯器(Code Editor) (5)加速棒(SpeedBar) 表格視窗 (Form) [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547090.gif[/img][/url] 表格是C++ 程式設計的焦點,我們可以將表格視爲一張畫布,在程式設計時,我們主要做的工作只是將程式元件放置在表格上而已。因此表格其實可視爲一個包含其他元件的軟體元件。 元件盒(Compoment Palette) [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547197.gif[/img][/url] 軟體元件是你用以架構C++ Builder程式的基本元素。在C++ Builder中軟體元件依其元件特性分門別類地放置在活頁式的元件盒中,在C++ Builder中提供了超過了百種以上的基本元件,程式設計時,只要將元件盒內的軟體元件拖放至表格中即可。 物件檢視器(Object Inspector) [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547230.gif[/img][/url] 物件檢視器是用以改變物件的內容,改變該物件的行爲模式以符合你的需要。物件的內容包含了屬性(Property)及其事件處理程式(Event Handler)。你可以視需要改變指定物件的狀態及行爲模式。 程式編輯器(Code Editor) [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547321.gif[/img][/url] C++ Builder的程式編輯器是一個全功能的編輯器,它讓你可以存取及編輯所有專案內的程式。 加速棒(SpeedBar) [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547362.gif[/img][/url] 加速棒(SpeedBar),顧名思義,它是用來加快程式的操作。C++ Builder將許多在功能表中常用的功能,在加速棒中以捷徑的方式提供你使用。 你的第一個C++ Builder程式 我們已經簡單地介紹了C++ Builder程式發展環境,現在我們要開始撰寫我們的第一個程式'媒體撥放程式。 設計表格 首先你要先設計你所要使用的表格長相。設計表格非常簡單,其實只是將軟體元件放在視窗中而已。以下我以幾個步驟示範表格的設計: (1)開啓新表格 (2)將軟體元件置入表格中 (3)設定各個軟體元件的屬性 (4)執行程式 完成了以上的程序後,大抵一個程式也差不多設計完了。這也是C++ Builder的迷人之處。 開啓新表格 在進入C++ Builder後,它會自動爲你開啓一個新的表格。此時表格開啓的工作就算完成了,若是要加入其他新的表格,只要執行[File/New Form]即可。 將軟體元件置入表格中 在開啓新表格後,你可以在元件盒中選取元件,置入表格中,在此要非凡說明的是,在C++ Builder的設計時期(Design Time)和執行時期(run time),大部份元件的行爲模式幾乎是相同,所以在設計時你就可以看到程式執行的結果。 在我們的這個程式中,除了表格外,有一個元件包含了其它的元件,那就是活頁式表格元件(TabbedNoteBook),這個元件和表格類似,必須最早放入表格中以容納其他元件。 在我們的第一個程式中置入軟體元件後的結果如下: [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547414.gif[/img][/url] 你可以看到,除了因爲沒有執行,所以沒有顯示動畫檔之外,它和執行的結果幾乎一模一樣。 首先我們來看看這個程式用到了那些元件。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547456.gif[/img][/url] TTabbedNoteBook 活頁式表格元件。位於元件盒的「Win3.1」頁,用以做出「動畫及音效 及|音樂CD 兩個表格。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547503.gif[/img][/url] Tlabel 標題元件。位於元件盒的「Standard」頁,用以顯示"媒體播放程式"字樣。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547524.gif[/img][/url] TPanel 面板元件。位於元件盒的「Standard」頁,用以顯示動畫圖形檔。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547556.gif[/img][/url] TMediaPlayer 媒體播放元件。位於元件盒的「System」頁,用以播放多媒體。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547572.gif[/img][/url] TDriveListBox 磁碟機列表元作 。位於元件盒的「System」頁,用以顯示磁碟機名。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547591.gif[/img][/url] TFilterComboBox 檔名過濾器元件。位於元件盒的「System」頁,用以過濾檔名。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547632.gif[/img][/url] TDirectoryListBox 目錄列表元件。位於元件盒的「System」頁,用以顯示目錄。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547668.gif[/img][/url] TFileListBox 檔案列表元作。位於元件盒的「System」頁,用以顯示檔案。 在使用這些元件時,請先至元件盒中選出欲使用的元件,然後將其拖放至表格中適當的位置,再改變元件的大小,如此你就可以得到一個表格的雛形了。 設定各個軟體元件的屬性 將軟體元件置入表格中之後,再來我們就要開始設定元件屬性了。爲了要讓這些元件互相合作,我們必須設定它們之間的關系,在設定之前我們先仔細想想它們之間的動作模式: 首先思考磁碟機及檔案元件的關系: (1)改變磁碟機後,目錄必須跟著改變。 (2)改變目錄後,檔案列表必須跟著改變。 (3)改變檔名過濾器後,檔案列表必須跟著改變。 在了解它們的關系後,我們就可以開始動手來設定它們的屬性了,設定屬性其實非常簡單,只要在表格上選取該元件時,物件檢視器就會顯示該物件所有的屬性,以磁碟機元件爲例,當我們選取到該元件時,物件檢視器就會切換到如下圖所示的狀態: [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547681.gif[/img][/url] 此時你可以看到在物件檢視器顯示了磁碟機列表元件的屬性,其中我們感愛好的是「DirList」一項,你可以選取該欄位,此時你會發現它會出現一個列表,這個列表會將目前表格中所有的目錄列表元件顯示出來,因爲我們所設計的表格中只有一個目錄列表元件,所以你只要選擇該列表中唯一的一個即可。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547749.gif[/img][/url] 以上的動作所代表的意義就是:建立磁碟機列表元件和目錄列表元件之間的關系,當磁碟機改變時,必須通知目錄列表元件,使其跟著改變。 同理我們選取目錄列表元件,並設定其屬性,在目錄列表元件中我們感愛好的是「FileList」欄位,此時你可以選取該欄位,並將它設定爲表格中的檔案列表元件。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547829.gif[/img][/url] 以上的動作所代表的意義就是:建立目錄列表元件和檔案列表元件之間的關系,當目錄改變時,必須通知檔案列表元件,使其跟著改變至目前目錄的列表。 接著我們選取檔名過濾器元件,並設定其屬性,在檔名過濾器元件中我們感愛好的是「FileList」欄位,此時你可以選取該欄位,並將它設定爲表格中的檔案列表元件。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547873.gif[/img][/url] 以上的動作所代表的意義就是:建立檔名過濾器元件和檔案列表元件之間的關系,當檔名過濾器改變時,必須通知檔案列表元件,使其跟著改變至目前的檔案列表。 最後,我們要設定檔名過濾器元件的過濾,在這個程式中我希望可以播放AVI動畫檔及WAV音效檔,所以必須適當地設定檔名過濾器元件, 同樣地,我們首先選取檔名過濾器元件。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547920.gif[/img][/url] 在這個元件中我們所感愛好的是其中的「Filter」屬性,因此我們在該項目上點二下,此時我們會看到如下的畫面: [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423547997.gif[/img][/url] 如圖所示,我們將AVI動畫檔及WAV音效檔的過濾字元填入即可。在程式執行時,拉下檔名過濾器時所顯示的名稱,就是你所填入的過濾器,它會發揮把關的角色,使得只有符合條件的檔名顯示在檔案列表中。 完成了以上動作之後,你就已經將磁碟機及檔案列表元件設定完成了,此時你可以先行執行程式,看看其動作是否正確。執行程式的方法是在選取選單上的「Run/Run」,或是直接按「F9」即可。 如何?神奇吧!用C++ Builder寫程式就是這麽簡單。 再來我們思考多媒體播放程式的部份,我們希望它的動作方式如下: (1)以TPanel來顯示動畫畫面。 (2)以多媒體播放元件來播放目前檔案列表中所選取的檔案。 (3)在檔案列表元件以雙擊(Double-Click)來播放該檔案。 首先我們先來看看多媒體播放元件的內容: [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423548024.gif[/img][/url] 在多媒體播放程式中我們感愛好的是其中的「Display」項目。因此我們選取「Display」項目,此時你會看到所有在表格中可供顯示的元件: [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423548074.gif[/img][/url] 我們希望將動畫畫面顯示在「Panel1」元件中,因此請你選擇「Panel1」項目。完成這個動作之後,媒體播放程式在播放動畫檔時會將畫面顯示在「Panel1」上。 接著我們設定播放的動作: 要設定播放的動作,你必須選取多媒體播放元件,並將物件檢視器切換至「事件(Events)」頁,然後在其中的OnClick上按兩下(Double-Click),接著C++ Builder會爲你自動産生一段空的程式碼的,然後就切換至程式編輯器中。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423548119.gif[/img][/url] 以下的畫面即是C++ Builder切換的程式編輯器畫面,此畫面我已經填入了程式碼,你的程式應該是空的。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423548156.gif[/img][/url] 再來我們看看應該在其中填入那些程式碼呢? 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)開始播放。 進行到這兒,你可以再次執行程式。然後選取適當的檔案,在選好了檔案之後,你就可以在多媒體撥放元件中選擇執行[url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423548231.gif[/img][/url],若是你所選擇的是AVI動畫檔,你已經可以看到動畫播放在我們所指定的元件「Panel1」上了。 [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423548298.gif[/img][/url] 最後,我們希望再提供一種播放檔案的方式,那就是在檔案列表中以雙擊(Double-Click)的方式來播放指定檔案。此時我們可以選擇檔案列表元件,並將物件檢視器切換至事件頁,這時你會看到以下的畫面: [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423548445.gif[/img][/url] 同樣地你可以在「OnDblClick」項目雙擊,此時C++ Builder會自動爲我們産生程式碼,並且自動切換至程式碼編輯器中: [url=/bbs/detail_1785410.html][img]http://image.wangchao.net.cn/it/1323423548550.gif[/img][/url] 上圖即爲程式碼編輯畫面,此畫面我已經填入了程式碼,你的應該是空的,接著你再於編輯器中填入以下的程式碼: void __fastcall TForm1::FileListBox1DblClick(TObject *Sender) { MediaPlayer1->FileName=FileListBox1->FileName; MediaPlayer1->Open(); MediaPlayer1->Play(); } 以上我們填入的程式碼的主要動作就是: (1)將媒體播放元件檔名指定爲檔案列表元件目前的檔名。 (2)開啓媒體播放程式的指定檔案。 (3)開始播放。 在完成了上述的操作之後,你可以再次地執行程式,選取欲播放的檔案,然後以雙擊的方式來執行檔案。 進行到這兒,你已經把握了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所架構的漂亮新世界,探索這種新的程式設計方法。
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
陽光靓麗的模特兒(8)
陽光靓麗的模特兒(7)
陽光靓麗的模特兒(6)
陽光靓麗的模特兒(5)
秋-印象
德慶盤龍峽 一
松江印象之三
雲之南(寬幅)
 
>>返回首頁<<
 
 
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有