调用声音文件的VB函数

    多媒体软件中,声音是重要组成部分。而VB中却没有直接调用声音文件的语句。于是笔者在VB5.0中定义了一个调用声音文件函数。调用此函数时只需带上不同的参数,就能执行不同的声音文件并发出各种声音。利用此函数在编制多媒体软件时可以带来很大方便。
    定义调用声音文件函数时用到了Windows播放声音的API函数。现先将此API函数作简单介绍sndPlaySound(参数1,参数2)其中:参数1描述要播放的声音文件的位置和文件名;参数2的取值能决定播放声音的模
式。参数2的主要取值介绍如下:
    取&H0时:为同步播放模式;
    取&H1时:为异步播放模式;
    取&H2时:当声音文件未找到就停止播音返回;
    取&H8时:为循环播放模式。
    当调用函数成功,就播放有关声音文件,并且函数的返回值为非0;函数调用失败,函数的返回值为0。
    定义调用声音文件函数的具体步骤如下:
    ①在C盘根目录上建立一个名为Sound的文件夹,在此文件夹中放入5个你所需要的声音文件;
    ②在VB5.0状态进入“工程”菜单中的“添加模块”再选用“新建”中的“模块”;
    ③在模块的“通用”中输入下面代码,进行调用API函数的声明;
     Declare Function sndPlaySound Lib "winmm.dll" Alias
    “sndPlaySoundA" (ByV al lpszSoundName As String, ByVal uFlags As Long) As Long
     Dim fil As String
    ④在模块中输入以下代码,定义调用声音文件函数。
    Public Function sound(n As Integer) As Integer
    Dim x As Integer
    Select Case n
    Case 1
    fil = "c:\sound\beep3.wav"
    x = sndPlaySound(0, 0)
    x = sndPlaySound(fil, &H1 Or &H2)
    sound = x
    Case 2
    fil = "c:\sound\hit8.wav"
    x = sndPlaySound(0, 0)
    x = sndPlaySound(fil, &H1 Or &H2)
    sound = x
    Case 3
    fil = "c:\sound\net7.wav"
    x = sndPlaySound(0, 0)
    x = sndPlaySound(fil, &H1 Or &H2)
    sound = x
    Case 4
    fil = "c:\sound\out12.wav"
    x = sndPlaySound(0, 0)
    x = sndPlaySound(fil, &H1 Or &H2)
    sound = x
    Case 5
    fil = "c:\sound\spin5.wav"
    x = sndPlaySound(0, 0)
    x = sndPlaySound(fil, &H1 Or &H2)
    sound = x
    Case Else
    sound = 0
    End Select
    End Function
    新定义的调用声音函数格式为:sound(n),其中n的取值为1至5的正整数。利用此函数可调用5个不同的声音文件。下面是使用sound函数的演示程序:
    ①如图在form窗口设置6个命令控件;
    ②在这些命令控件的Click事件中入分别输入以下代码。
    Private Sub Command1_Click()
    l = sound(1)
    End Sub
    Private Sub Command2_Click()
    l = sound(2)
    End Sub
    Private Sub Command3_Click()
    l = sound(3)
    End Sub
     年Private Sub Command4_Click()
    l = sound(4)
    End Sub
    Private Sub Command5_C lick()
     End Sub
    Private Sub Command6_Click()
    End
    End Sub
    运行程序后,单击有关按钮就能调用所指定的声音文件,发出各种声音。
    (江苏苏州市景范中学 赵旭 215005)
    选择字段浏览程序
    虽然FoxPro系统给我们提供USE、BROW命令来打开数据库进行浏览,如果是浏览指定的数据库文件和全部字段还比较方便,当频繁打开不同目录的数据库文件或只想浏览部分字段时,使用上述过程就显得力不从心了。下面这个小程序可以把当前硬盘和软盘所有目录下的数据库文件列出,当您选择到一个数据库文件后,又将库中所有字段列出,您可以有选择地进行浏览,从而使数据库选择字段浏览相当简便。
    SET TALK ON
    SET COLO TO W/N,R/B,R && 使选择字段时, 屏幕显示所选的字段
    SET COLOR OF SCHEME 2 TO BG/W,N/W,N/W,B/W,B/BG,W+/R,GR+/W,N+/N,B/W,W/N,+
    DO WHIL .T.
    DEFINE POPUP database FROM 2,10 to 15,30 PROMPT FILES LIKE *.dbf colo sche 2;
    MESSAGE “移动↑↓光标键,选择数据库文件目录,其它键退出”
    ON SELECTION POPUP database DO Database
    DEFINE POPUP fieldlist FROM 2,26 TO 15,46 PROMPT STRUCTURE MARGIN;
    MESSAGE “按<ENTER>选择字段,然后按<ESC>进行浏览”
    ON SELECTION POPUP fieldlist DO Fieldlist
    CLEAR
    @ 1,11 SAY “ 选择一个数据库:” COLO B/G
    ACTIVATE POPUP database
    @ 1,11 SAY “ ” COLO N/N
    IF NOT EMPTY(DBF()) && 如果选择了一个数据库
    @ 1,29 SAY “ 选择数据库字段:”COLO R/G
    mfieldlist =“ ” && 字段选择变量
    ACTIVATE POPUP fieldlist&&激活菜单显示数据库字段
    IF NOT EMPTY(mfieldlist)
    mfieldlist = “FIELDS ” + LEFT(mfieldlist, LEN(mfieldlist)-1)
    *在字段选择变量中增加 “FILEDS”, 并除去尾部逗号.
    ENDIF
    BROWSE &mfieldlist COLO R+/BG+
    * 浏览所选择的数据库和所选择的字段
    ENDIF
    RELEASE POPUP database, fieldlist
    CLEA
    XX=" "
    @ 23,24 SAY "还继续浏览数据库吗(y/Y)?" GET XX COLO B+/W
    READ
    IF UPPER(XX)="Y".OR.XX="Y"
    LOOP
    ELSE
    EXIT
    ENDIF
    ENDDO
    SET TALK OFF
    CLOSE DATABASE
    QUIT
    RETURN
    * Process database file list selection
    PROCEDURE Database
     USE PROMPT()
&& 打开所选择的数据库
    DEACTIVATE POPUP database
    RETURN
    PROCEDURE Fieldlist
    IF NOT PROMPT() $ mfieldlist
    mfieldlist = mfieldlist + PROMPT() + ","
    * 在字段选择变量中增加字段和逗号
    ENDIF
    RETURN
    (河北省邯郸市峰峰矿务局 左巍 056207)

(上一页)---(下一页)