众所周知,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,StartSound。其声明格式如下:
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程序员,在应用程序中,应该能够熟练而准确的使用上述四种方法并在恰当的场合选择某一种方法,就可以为自己的
程序增添效果同时并不使软件显得华而不实。