VisualBasicforWindows(以下简称VB)是Windows下的应用程序开发工具,它从根本上改变了传统的程序设计模式,可以处理文本、图像、动画、声音等多媒体数据,因而被计算机界称为“最富有创新精神的编程工具之一”。
本文假定你已基本熟悉VB的编程环境和简单的程序设计方法,介绍VB多媒体编程的一些基本概念和方法,让你也能体验多媒体程序设计的乐趣。如果你还未曾使用过VB(但肯定听说过),那么不妨赶快试一下,它的易用性会使你很快掌握的。
一、VisualBasic编程概述
对于MicrosoftWindows的用户来说,很少有其它产品能像VB那样激动人心,其重要原因就是VB是第一个真正能让不熟悉Windows的人编写Windows应用程序设计工具。许多人都认为Windows程序设计非常复杂。其实,这只是针对用C或Pascal语言编写程序的人来说的。VB的出现为我们开辟了一条通向Windows程序设计高手的捷径。
在Windows推出初期,能够用来开发Windows应用软件的工具只有“MicrosoftWindowsSoftwareDevelopmentKit”,简称SDK。虽然用SDK开发出来的应用软件对于用户来说是相当出色的,但对于程序员来说却是一件困难的事。若使用SDK,程序员必须去编写创建窗口、菜单、字体、对话框以及其它各种对象,即使是编写最简单的程序。因此对于大多数人而言,使用SDK开发软件除了必须具备C语言的经验以外,还要学习SDK提供的600个低层函数,然后方能进行编程,即使对于专业程序员来说,这也是一项十分困难、费时的工作,这种复杂性使得很多有兴趣进行Windows编程的用户望而却步。所以,有些程序员调侃SDK是SuperDifficultKit的缩写,这或许有些夸张,不过也很贴切地道出了使用SDK编程的复杂性。
VB的出现,彻底地打破了SDK塑造的神话。使得以往要使用SDK才得以设计Windows应用软件的“石器时代”已经过去。通过VB,任何人都可以享受Windows程序设计的乐趣。VB的“可视性”和“面向事件”的特征是简化Windows程序开发的关键。简而言之,在VB环境下,程序员可以用图表来开发应用程序,只要用鼠标进行选中或单击操作,就可以从菜单中选中对象、控制项和属性等。它把600个Windows的应用程序编程接口(API)中的大多数功能函数抽取到高层,这样允许程序员直接使用Windows函数,如建立按钮、对话框、菜单等,而无须SDK。程序仍然可以通过一个动态链接库(DDL)来调用底层的WindowsAPI功能函数。
VB的程序设计风格与传统设计方法不同,它是面向对象和事件的程序设计方法。面向对象是近年来出现的程序设计技术,它是一种全新的设计和构造软件的思维方法。在面向对象的程序设计中,“对象”是系统中的基本运行实体。例如窗体和控件,就是VB的对象,VB中的对象是由系统设计好提供给用户使用的。对象建立、移动、增删、缩放操作也是由系统规定好的,这比一般的面向对象程序设计中的操作要简单的多。
VB是采用事件驱动编写机制的语言。传统编程使用的是面向过程、按顺序进行的机制,这种编程方式的缺点是写程序的人总是要关心什么时候发生什么事情。而在事件驱动编程中,程序员只要编写响应用户动作的程序,如选择命令、移动鼠标等,而不必考虑按精确次序执行的每个步骤。当事件由用户触发、或由系统触发,对象就会对该事件作出响应。
如果你掌握了Basic编程,这并不意味着你就会使用VB,因为VB中有许多Baisc中所没有的新概念和新方法。从Basic到VB,最大的概念跳跃是窗口,不是语言本身,以及应用程序开发中的图形化构思,而不是面向代码的构思。
VB在多媒体应用软件开发方面有着良好的前景。目前多媒体制作工具基本上可分为两类,一类是专为开发多媒体节目和电子出版物而设计的所谓多媒体编著工具(authoringtools);另一类是通用的软件开发工具,如Windows下的VisualBasic、VisualC++等。采用通用程序开发工具的优点是灵活性高,软件运行效率高。在需要大数据量处理及查询时常常采用通用程序设计语言,如百科全书类的节目大多是用VisualBasic开发制作的。之所以选用VB开发多媒体系统,主要是可用专业版中所提供的MCI.VBX(MediaControlInterface:媒体控制接口)的控制对象。通过MCI.VBX,就可以用指令控制各种多媒体外部设备并读取各种多媒体系统所需的文件格式。
虽然VB具有以上所述的种种优点,但与其它的一些基于Windows的编译器(如Borland的C++或TurboPascalforWindows)相比,后两种语言也有比VB语言出色的地方。
首先,C++和Pascal为我们提供了更多对计算机的控制,可以用来实现对计算机底层功能的控制和调用,因而可用来设计系统软件。例如BELL实验室用C来编写UNIX操作系统,苹果公司用Pascal编写Macintosh操作系统。而若用VB写操作系统的话,就好比乘热气球登月一样困难。
其次,VB的CustomControl(用户控制对象)概念是近来导入市场非常成功的对象控制技术,但目前VB还无法建立自己的用户对象。
第三,C++和Pascal提供了可移植的交叉平台,像IBM、Macintosh、Amiga,直到VAX小型机和Cray巨型机,都可以运行C++和Pascal程序,而VB目前还只能在MSDOS和Windows下运行。
尽管VB还不是尽善尽美,但瑕不掩玉,随着VB版本的不断升级,我们相信其性能会更加完善。
二、MCI程序设计初步
设计多媒体程序,关键是对多种媒体设备的控制和使用,在Windows3.1和Windows95系统中,对多媒体设备进行控制主要有三种方法:
第一种方法是使用微软公司窗口系统中对多媒体支持的MCI,即媒体控制接口,MCI是多媒体设备和多媒体应用软件之间进行设备无关的沟通的桥梁。在VisualBasic3.0和4.0版本中,MCI都得到了很好的支持。
第二种方法,通过调用Windows的API(应用程序接口)多媒体相关函数实现媒体控制。
第三种方法是使用OLE(ObjectLinking&Embedding),即对象链接与嵌入技术,它为不同软件之间共享数据和资源提供了有力的手段。
下面分别介绍如何利用这三种方法进行多媒体程序设计,首先介绍MCI的有关概念及MCI.VBX控件的使用。
1.什么是MCI
MCI(MultimediaControlInterface)是微软Windows定义的多媒体接口标准,MCI接口包括了CDAudio(激光唱机)、Scanner(图像扫描仪)、VCR(磁带录像机)、Videodisc(激光视盘机)、DAT(数字化磁带音频播放机)、DigitalVideo(窗口中的数字视频)、Overlay(窗口中的模拟视频叠加设备)、MMMovie(多媒体影片演播器)、Sequencer(MIDI音序设备)、WaveAudio(波形音频设备)、Other(未定义的MCI设备)等多媒体的主要产品,支持环境是Windows3.1及Windows95版本。MCI的最大优点是应用系统与设备无关性,对于标准多媒体设备,安装相应的Windows的MCIDriver,Windows即可对该设备进行操作访问;对于非标准的多媒体设备,只要有厂家提供所配的MCIDriver也一样可以操作。由于MCI与设备的无关性,程序员在多媒体应用系统的开发中,无需了解每种产品细节,就能开发出通用的多媒体应用系统。那么在VB中如何使用MCI呢?它是通过VB控件提供的功能来实现的。
2.VB的控件
VB中附有许多具有特定功能的控件(Controller),而每个控件都可以创造具有特定用途及功能的对象。要想利用VB进行多媒体程序设计,必须熟悉和掌握这些控制的作用和功能。在VB中,大部分的控件均放在工具箱中,每个控件由工具箱中的一个工具图标来表示。
工具箱中的工具分为两类,一类是VB本身固有的,一类是扩充的。由固有的工具组成的工具箱称为标准工具箱,工具箱可以扩充,以便把更多的工具包含进来。为在工具箱中增加一个扩展控件,必须装入相应的控件支持文件,其文件的扩展名为.VBX。当某个扩展控件增加后,该文件的名字就出现在项目窗口中。项目窗口中的.VBX文件只与扩展控件相对应,标准控件没有与之对应的.VBX文件。
3.MCI.VBX的使用
MCI.VBX是在VB专业版中所提供的一个控制对象。VB借助于此控件的配合来达到控制多媒体设备的目的,是用户对多媒体对象进行控制的一种最简单、最容易的方法。一般在安装完VB专业版时,会将这个控制对象拷贝到Windows下的System子目录里。在使用MCI.VBX之前,应首先安装并设置好多媒体的系统环境。
当我们进入VB3.0时,ToolBox(工具箱)中并不会直接出现MCI.VBX的图标。这是因为AUTOLOAD.MAK这个“自动载入”文件没有将其包含进来。在VB的目录中找到这个文件,然后用Windows的书写器进行编辑,将“MCI.VBX”加在AUTOLOAD.MAK文件的未尾。也可以选择[File]菜单下的[AddFile]选项,将Windows\System子目录下的MCI.VBX加进ToolBox后,才能在VB中控制多媒体外部设备。将MCI.VBX加入到ToolBox之后,你就可以看到ToolBox尾部已经增加了一个图标。
4.MCI.VBX的控制按钮
如同使用其它控制对象一样,首先以鼠标双击ToolBox(工具盒)的MCI图标或拖至Form(窗体)上,并调整好Form的大小,这时我们可以看到,在窗体上(Form)上出现了九个按钮,这就是多媒体控制对象的外观。
MCI控制按钮定义如下:Prev(移前标)、Next(移后标)、Play(播放)、Pause(暂停)、Back(倒移)、Step(前移)、Stop(停播)、Record(录制)和Ejec(退出)。使用MCI控件方法如下。
(1)MCI控件在设计或运行时可以是可见或隐藏的;其按钮功能也可以通过单击鼠标Click事件重新定义。
(2)需要使用MCI按钮功能时,必须将该按钮的属性(Visible和Enabled)置为True;若不需要该按钮时,必须设计Visible为False;若使该按钮功能当前无效时,设计Visible为True,Enabled为False。
(3)MCI扩充版支持一个视窗控制多个MCI设备。
5.初试MCI.VBX
在MCI.VBX的支持下,我们对多媒体设备的控制过程简单得令人难以置信,下面我们先创建一个CD音乐播放程序来体验一下。
在Form_Load()事件过程中加上下面两行代码:
MMControl1.DeviceType=“CDAudio”
MMControl1.Command=“Open”
另外,我们在Form_unload事件过程中,加上一行代码:
MMControl1.Command=“Close”
->