众所周知,Visual Basic是功能非常强大的多媒体开发工具,它有丰富的 函数和方法处理各种各样的多媒体信息,能够很灵活的操作图形、声音、动画、 影象等多媒体素材。但有时我们使用Visual Basic开发非多媒体应用程序,并不 需要在应用程序中大量的使用声音,而只是需要在特定的场合出现。如Windows的 警告声。这就要求程序员在恰当的环境中恰当的使用声音文件,既不失去VB在多媒 体方面的特长,又能够为应用程序增加吸引人的效果。 VB可以用于输出声音的方法很多,归结一下,大概有以下四种: 1.利用Beep语句。 这是VB系统提供的一条利用计算机扬声器发声的语句,它只能够发出简单的蜂 鸣声,但在应用程序中大量用于输出警告的信息。如下例允许用户在文本框中输入 数字,当用户输入错误时,系统会报警提示。 Sub Text1_KeyPress (keyascii As Integer) If keyascii <48 Or keyascii> 57 Then Beep:Beep: Beep keyascii = 0 End If End Sub 2.其实计算机的蜂鸣器也可以发出不同频率、音高的声音,从而奏出美妙的 音乐。方法是调用Windows的一些有关发声的API函数。Windows系统包含十六个 声音函数,它们都存放在Windows的SOUND.DRV这个驱动程序所包含的动态连接库 中。其中最常用的四个函数是OpenSound,CloseSound,SetVoiceNote,Start- Sound。其声明格式如下: Declare Function OpenSound Lib "Sound" () As Integer Declare Sub CloseSound Lib "Sound" () Declare Function SetVoiceNote Lib "Sound" (ByVal nVoice As Integer, ByVal nvalue As Integer, ByVal nLength As Integer, ByVal nCdots As Integer) As Integer Declare Function StartSound Lib "Sound" () As Integer 在Visual Basic的通用过程中声明上述函数后,就可以象使用Visual Basic 自己的函数一样使用Windows的API函数。 下面给出一个例子,只需要在窗体中放置7个按钮组成的控件数组,调用上述 函数就可以简单的实现准确的音阶: Sub Command1_Click (index As Integer) a% = OpenSound() Select Case index Case 0: f = 37 Case 1: f = 39 Case 2: f = 41 Case 3: f = 42 Case 4: f = 44 Case 5: f = 46 Case 6: f = 48 End Select m1% = SetVoiceNote(1, f, 4, 0) m2% = StartSound() End Sub 3.Visual Basic是第一个支持对象连接与嵌入(OLE)的开发工具,利用 OLE可以简单的在应用程序中插入声音文件。这也是使用Visual Basic开发多 媒体软件常用的方法。使用过VB的读者都知道,VB的ToolBox中就有OLE2.0控 件。当我们双击OLE2.0控件时,会弹出“Insert Object”窗口,在窗口中选 择对象类型Object Type为声音文件,选择“Create from File”,指定硬盘 上声音文件的位置,同时确认Link方式。这些步骤其实是在设置OLE2.0的属性。 通过按F4打开Properties属性窗口,设置其中的Class、SourceDoc、SourceItem 等属性也可完成这一工作。按F5运行程序,双击OLE对象时就会发声。与播放各 种声音文件相关的属性为Action,通过设置Action属性可以打开、驱动、删除 相应的声音对象。如下例在窗体装入时调用声音文件: Sub Form_Load () ole1.Class = "soundrec" ole1.SourceDoc = "c:\windows\ding.wav" ole1.Action = 1 ole1.Action = 7 End Sub 4.利用Visual Basic的多媒体控件MCI.VBX。 使用MCI.VBX是Visual Basic开发多媒体软件的主要方法。利用MCI.VBX 在应用程序中加入声音文件是轻而易举的事。有大量的专著介绍MCI.VBX的使 用方法,这里就不在赘述。 总的说来,以上四种方法的复杂程度依次递增,对系统的要求和消耗的系 统资源也越来越大。因而,作为一个VB程序员,在应用程序中,应该能够熟练 而准确的使用上述四种方法并在恰当的场合选择某一种方法,就可以为自己的 程序增添效果同时并不使软件显得华而不实。