众所周知,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程序员,在应用程序中,应该能够熟练而准确的使用上述四种方法并在恰当的场合选择某一种方法,就可以为自己的程序增添效果同时并不使软件显得华而不实。
-
vb教程之在VB应用程序中恰当的使用声音
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程