VisualBasicforWindows(以下簡(jiǎn)稱(chēng)VB)是Windows下的應(yīng)用程序開(kāi)發(fā)工具,它從根本上改變了傳統(tǒng)的程序設(shè)計(jì)模式,可以處理文本、圖像、動(dòng)畫(huà)、聲音等多媒體數(shù)據(jù),因而被計(jì)算機(jī)界稱(chēng)為“最富有創(chuàng)新精神的編程工具之一”。
本文假定你已基本熟悉VB的編程環(huán)境和簡(jiǎn)單的程序設(shè)計(jì)方法,介紹VB多媒體編程的一些基本概念和方法,讓你也能體驗(yàn)多媒體程序設(shè)計(jì)的樂(lè)趣。如果你還未曾使用過(guò)VB(但肯定聽(tīng)說(shuō)過(guò)),那么不妨趕快試一下,它的易用性會(huì)使你很快掌握的。
一、VisualBasic編程概述
對(duì)于MicrosoftWindows的用戶(hù)來(lái)說(shuō),很少有其它產(chǎn)品能像VB那樣激動(dòng)人心,其重要原因就是VB是第一個(gè)真正能讓不熟悉Windows的人編寫(xiě)Windows應(yīng)用程序設(shè)計(jì)工具。許多人都認(rèn)為Windows程序設(shè)計(jì)非常復(fù)雜。其實(shí),這只是針對(duì)用C或Pascal語(yǔ)言編寫(xiě)程序的人來(lái)說(shuō)的。VB的出現(xiàn)為我們開(kāi)辟了一條通向Windows程序設(shè)計(jì)高手的捷徑。
在Windows推出初期,能夠用來(lái)開(kāi)發(fā)Windows應(yīng)用軟件的工具只有“MicrosoftWindowsSoftwareDevelopmentKit”,簡(jiǎn)稱(chēng)SDK。雖然用SDK開(kāi)發(fā)出來(lái)的應(yīng)用軟件對(duì)于用戶(hù)來(lái)說(shuō)是相當(dāng)出色的,但對(duì)于程序員來(lái)說(shuō)卻是一件困難的事。若使用SDK,程序員必須去編寫(xiě)創(chuàng)建窗口、菜單、字體、對(duì)話框以及其它各種對(duì)象,即使是編寫(xiě)最簡(jiǎn)單的程序。因此對(duì)于大多數(shù)人而言,使用SDK開(kāi)發(fā)軟件除了必須具備C語(yǔ)言的經(jīng)驗(yàn)以外,還要學(xué)習(xí)SDK提供的600個(gè)低層函數(shù),然后方能進(jìn)行編程,即使對(duì)于專(zhuān)業(yè)程序員來(lái)說(shuō),這也是一項(xiàng)十分困難、費(fèi)時(shí)的工作,這種復(fù)雜性使得很多有興趣進(jìn)行Windows編程的用戶(hù)望而卻步。所以,有些程序員調(diào)侃SDK是SuperDifficultKit的縮寫(xiě),這或許有些夸張,不過(guò)也很貼切地道出了使用SDK編程的復(fù)雜性。
VB的出現(xiàn),徹底地打破了SDK塑造的神話。使得以往要使用SDK才得以設(shè)計(jì)Windows應(yīng)用軟件的“石器時(shí)代”已經(jīng)過(guò)去。通過(guò)VB,任何人都可以享受Windows程序設(shè)計(jì)的樂(lè)趣。VB的“可視性”和“面向事件”的特征是簡(jiǎn)化Windows程序開(kāi)發(fā)的關(guān)鍵。簡(jiǎn)而言之,在VB環(huán)境下,程序員可以用圖表來(lái)開(kāi)發(fā)應(yīng)用程序,只要用鼠標(biāo)進(jìn)行選中或單擊操作,就可以從菜單中選中對(duì)象、控制項(xiàng)和屬性等。它把600個(gè)Windows的應(yīng)用程序編程接口(API)中的大多數(shù)功能函數(shù)抽取到高層,這樣允許程序員直接使用Windows函數(shù),如建立按鈕、對(duì)話框、菜單等,而無(wú)須SDK。程序仍然可以通過(guò)一個(gè)動(dòng)態(tài)鏈接庫(kù)(DDL)來(lái)調(diào)用底層的WindowsAPI功能函數(shù)。
VB的程序設(shè)計(jì)風(fēng)格與傳統(tǒng)設(shè)計(jì)方法不同,它是面向?qū)ο蠛褪录某绦蛟O(shè)計(jì)方法。面向?qū)ο笫墙陙?lái)出現(xiàn)的程序設(shè)計(jì)技術(shù),它是一種全新的設(shè)計(jì)和構(gòu)造軟件的思維方法。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,“對(duì)象”是系統(tǒng)中的基本運(yùn)行實(shí)體。例如窗體和控件,就是VB的對(duì)象,VB中的對(duì)象是由系統(tǒng)設(shè)計(jì)好提供給用戶(hù)使用的。對(duì)象建立、移動(dòng)、增刪、縮放操作也是由系統(tǒng)規(guī)定好的,這比一般的面向?qū)ο蟪绦蛟O(shè)計(jì)中的操作要簡(jiǎn)單的多。
VB是采用事件驅(qū)動(dòng)編寫(xiě)機(jī)制的語(yǔ)言。傳統(tǒng)編程使用的是面向過(guò)程、按順序進(jìn)行的機(jī)制,這種編程方式的缺點(diǎn)是寫(xiě)程序的人總是要關(guān)心什么時(shí)候發(fā)生什么事情。而在事件驅(qū)動(dòng)編程中,程序員只要編寫(xiě)響應(yīng)用戶(hù)動(dòng)作的程序,如選擇命令、移動(dòng)鼠標(biāo)等,而不必考慮按精確次序執(zhí)行的每個(gè)步驟。當(dāng)事件由用戶(hù)觸發(fā)、或由系統(tǒng)觸發(fā),對(duì)象就會(huì)對(duì)該事件作出響應(yīng)。
如果你掌握了Basic編程,這并不意味著你就會(huì)使用VB,因?yàn)閂B中有許多Baisc中所沒(méi)有的新概念和新方法。從Basic到VB,最大的概念跳躍是窗口,不是語(yǔ)言本身,以及應(yīng)用程序開(kāi)發(fā)中的圖形化構(gòu)思,而不是面向代碼的構(gòu)思。
VB在多媒體應(yīng)用軟件開(kāi)發(fā)方面有著良好的前景。目前多媒體制作工具基本上可分為兩類(lèi),一類(lèi)是專(zhuān)為開(kāi)發(fā)多媒體節(jié)目和電子出版物而設(shè)計(jì)的所謂多媒體編著工具(authoringtools);另一類(lèi)是通用的軟件開(kāi)發(fā)工具,如Windows下的VisualBasic、VisualC++等。采用通用程序開(kāi)發(fā)工具的優(yōu)點(diǎn)是靈活性高,軟件運(yùn)行效率高。在需要大數(shù)據(jù)量處理及查詢(xún)時(shí)常常采用通用程序設(shè)計(jì)語(yǔ)言,如百科全書(shū)類(lèi)的節(jié)目大多是用VisualBasic開(kāi)發(fā)制作的。之所以選用VB開(kāi)發(fā)多媒體系統(tǒng),主要是可用專(zhuān)業(yè)版中所提供的MCI.VBX(MediaControlInterface:媒體控制接口)的控制對(duì)象。通過(guò)MCI.VBX,就可以用指令控制各種多媒體外部設(shè)備并讀取各種多媒體系統(tǒng)所需的文件格式。
雖然VB具有以上所述的種種優(yōu)點(diǎn),但與其它的一些基于Windows的編譯器(如Borland的C++或TurboPascalforWindows)相比,后兩種語(yǔ)言也有比VB語(yǔ)言出色的地方。
首先,C++和Pascal為我們提供了更多對(duì)計(jì)算機(jī)的控制,可以用來(lái)實(shí)現(xiàn)對(duì)計(jì)算機(jī)底層功能的控制和調(diào)用,因而可用來(lái)設(shè)計(jì)系統(tǒng)軟件。例如BELL實(shí)驗(yàn)室用C來(lái)編寫(xiě)UNIX操作系統(tǒng),蘋(píng)果公司用Pascal編寫(xiě)Macintosh操作系統(tǒng)。而若用VB寫(xiě)操作系統(tǒng)的話,就好比乘熱氣球登月一樣困難。
其次,VB的CustomControl(用戶(hù)控制對(duì)象)概念是近來(lái)導(dǎo)入市場(chǎng)非常成功的對(duì)象控制技術(shù),但目前VB還無(wú)法建立自己的用戶(hù)對(duì)象。
第三,C++和Pascal提供了可移植的交叉平臺(tái),像IBM、Macintosh、Amiga,直到VAX小型機(jī)和Cray巨型機(jī),都可以運(yùn)行C++和Pascal程序,而VB目前還只能在MSDOS和Windows下運(yùn)行。
盡管VB還不是盡善盡美,但瑕不掩玉,隨著VB版本的不斷升級(jí),我們相信其性能會(huì)更加完善。
二、MCI程序設(shè)計(jì)初步
設(shè)計(jì)多媒體程序,關(guān)鍵是對(duì)多種媒體設(shè)備的控制和使用,在Windows3.1和Windows95系統(tǒng)中,對(duì)多媒體設(shè)備進(jìn)行控制主要有三種方法:
第一種方法是使用微軟公司窗口系統(tǒng)中對(duì)多媒體支持的MCI,即媒體控制接口,MCI是多媒體設(shè)備和多媒體應(yīng)用軟件之間進(jìn)行設(shè)備無(wú)關(guān)的溝通的橋梁。在VisualBasic3.0和4.0版本中,MCI都得到了很好的支持。
第二種方法,通過(guò)調(diào)用Windows的API(應(yīng)用程序接口)多媒體相關(guān)函數(shù)實(shí)現(xiàn)媒體控制。
第三種方法是使用OLE(ObjectLinking&Embedding),即對(duì)象鏈接與嵌入技術(shù),它為不同軟件之間共享數(shù)據(jù)和資源提供了有力的手段。
下面分別介紹如何利用這三種方法進(jìn)行多媒體程序設(shè)計(jì),首先介紹MCI的有關(guān)概念及MCI.VBX控件的使用。
1.什么是MCI
MCI(MultimediaControlInterface)是微軟Windows定義的多媒體接口標(biāo)準(zhǔn),MCI接口包括了CDAudio(激光唱機(jī))、Scanner(圖像掃描儀)、VCR(磁帶錄像機(jī))、Videodisc(激光視盤(pán)機(jī))、DAT(數(shù)字化磁帶音頻播放機(jī))、DigitalVideo(窗口中的數(shù)字視頻)、Overlay(窗口中的模擬視頻疊加設(shè)備)、MMMovie(多媒體影片演播器)、Sequencer(MIDI音序設(shè)備)、WaveAudio(波形音頻設(shè)備)、Other(未定義的MCI設(shè)備)等多媒體的主要產(chǎn)品,支持環(huán)境是Windows3.1及Windows95版本。MCI的最大優(yōu)點(diǎn)是應(yīng)用系統(tǒng)與設(shè)備無(wú)關(guān)性,對(duì)于標(biāo)準(zhǔn)多媒體設(shè)備,安裝相應(yīng)的Windows的MCIDriver,Windows即可對(duì)該設(shè)備進(jìn)行操作訪問(wèn);對(duì)于非標(biāo)準(zhǔn)的多媒體設(shè)備,只要有廠家提供所配的MCIDriver也一樣可以操作。由于MCI與設(shè)備的無(wú)關(guān)性,程序員在多媒體應(yīng)用系統(tǒng)的開(kāi)發(fā)中,無(wú)需了解每種產(chǎn)品細(xì)節(jié),就能開(kāi)發(fā)出通用的多媒體應(yīng)用系統(tǒng)。那么在VB中如何使用MCI呢?它是通過(guò)VB控件提供的功能來(lái)實(shí)現(xiàn)的。
2.VB的控件
VB中附有許多具有特定功能的控件(Controller),而每個(gè)控件都可以創(chuàng)造具有特定用途及功能的對(duì)象。要想利用VB進(jìn)行多媒體程序設(shè)計(jì),必須熟悉和掌握這些控制的作用和功能。在VB中,大部分的控件均放在工具箱中,每個(gè)控件由工具箱中的一個(gè)工具圖標(biāo)來(lái)表示。
工具箱中的工具分為兩類(lèi),一類(lèi)是VB本身固有的,一類(lèi)是擴(kuò)充的。由固有的工具組成的工具箱稱(chēng)為標(biāo)準(zhǔn)工具箱,工具箱可以擴(kuò)充,以便把更多的工具包含進(jìn)來(lái)。為在工具箱中增加一個(gè)擴(kuò)展控件,必須裝入相應(yīng)的控件支持文件,其文件的擴(kuò)展名為.VBX。當(dāng)某個(gè)擴(kuò)展控件增加后,該文件的名字就出現(xiàn)在項(xiàng)目窗口中。項(xiàng)目窗口中的.VBX文件只與擴(kuò)展控件相對(duì)應(yīng),標(biāo)準(zhǔn)控件沒(méi)有與之對(duì)應(yīng)的.VBX文件。
3.MCI.VBX的使用
MCI.VBX是在VB專(zhuān)業(yè)版中所提供的一個(gè)控制對(duì)象。VB借助于此控件的配合來(lái)達(dá)到控制多媒體設(shè)備的目的,是用戶(hù)對(duì)多媒體對(duì)象進(jìn)行控制的一種最簡(jiǎn)單、最容易的方法。一般在安裝完VB專(zhuān)業(yè)版時(shí),會(huì)將這個(gè)控制對(duì)象拷貝到Windows下的System子目錄里。在使用MCI.VBX之前,應(yīng)首先安裝并設(shè)置好多媒體的系統(tǒng)環(huán)境。
當(dāng)我們進(jìn)入VB3.0時(shí),ToolBox(工具箱)中并不會(huì)直接出現(xiàn)MCI.VBX的圖標(biāo)。這是因?yàn)锳UTOLOAD.MAK這個(gè)“自動(dòng)載入”文件沒(méi)有將其包含進(jìn)來(lái)。在VB的目錄中找到這個(gè)文件,然后用Windows的書(shū)寫(xiě)器進(jìn)行編輯,將“MCI.VBX”加在AUTOLOAD.MAK文件的未尾。也可以選擇[File]菜單下的[AddFile]選項(xiàng),將Windows/System子目錄下的MCI.VBX加進(jìn)ToolBox后,才能在VB中控制多媒體外部設(shè)備。將MCI.VBX加入到ToolBox之后,你就可以看到ToolBox尾部已經(jīng)增加了一個(gè)圖標(biāo)。
4.MCI.VBX的控制按鈕
如同使用其它控制對(duì)象一樣,首先以鼠標(biāo)雙擊ToolBox(工具盒)的MCI圖標(biāo)或拖至Form(窗體)上,并調(diào)整好Form的大小,這時(shí)我們可以看到,在窗體上(Form)上出現(xiàn)了九個(gè)按鈕,這就是多媒體控制對(duì)象的外觀。
MCI控制按鈕定義如下:PRev(移前標(biāo))、Next(移后標(biāo))、Play(播放)、Pause(暫停)、Back(倒移)、Step(前移)、Stop(停播)、Record(錄制)和Ejec(退出)。使用MCI控件方法如下。
(1)MCI控件在設(shè)計(jì)或運(yùn)行時(shí)可以是可見(jiàn)或隱藏的;其按鈕功能也可以通過(guò)單擊鼠標(biāo)Click事件重新定義。
(2)需要使用MCI按鈕功能時(shí),必須將該按鈕的屬性(Visible和Enabled)置為T(mén)rue;若不需要該按鈕時(shí),必須設(shè)計(jì)Visible為False;若使該按鈕功能當(dāng)前無(wú)效時(shí),設(shè)計(jì)Visible為T(mén)rue,Enabled為False。
(3)MCI擴(kuò)充版支持一個(gè)視窗控制多個(gè)MCI設(shè)備。
5.初試MCI.VBX
在MCI.VBX的支持下,我們對(duì)多媒體設(shè)備的控制過(guò)程簡(jiǎn)單得令人難以置信,下面我們先創(chuàng)建一個(gè)CD音樂(lè)播放程序來(lái)體驗(yàn)一下。
在Form_Load()事件過(guò)程中加上下面兩行代碼:
MMControl1.DeviceType=“CDAudio”
MMControl1.Command=“Open”
另外,我們?cè)贔orm_unload事件過(guò)程中,加上一行代碼:
MMControl1.Command=“Close”
->