热情软件屋

 

如何播放资源文件中的声音


编号:QA001739
建立日期: 1999年9月21日 最后修改日期:1999年9月21日
所属类别:

luguoging:
    VB 6.0
    Windows
    如何在VB6.0中播放资源文件中的声音?

回答:

    假设资源文件是这样的:
     CHIMES WAVE DISCARDABLE "Chimes.wav"
     DING WAVE DISCARDABLE "Ding.wav"
    1、建立一个新工程;
    2、添加下面代码到Form1
     '**************************************************
    
' Form1.frm - 调用 PlayWaveRes播放声音资源文件
    
'**************************************************
    
Sub Command1_Click()
    
PlayWaveRes "Chimes"
    
PlayWaveRes "Ding"
    
End Sub
    
3、添加你的资源文件到工程。
    
4、建立一个新模块,输入以下代码:
    
'**************************************************
    

    
' Baswave.bas - 使用LoadResData播放声音文件
    
' 从http://askpro.yeah.net下载
     '**************************************************
    

    
Option Explicit
    
Private Declare Function sndPlaySound Lib "winmm" Alias _
    
"sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) _
    
As Long
    

    
'**************************************************
    
' wFlags 参数
    
'**************************************************
    

    
Public Const SND_SYNC = &H0 ' Play synchronously (default).
    
'Public Const SND_ASYNC = &H1 ' Play asynchronously (see
    
' note below).
    
Public Const SND_NODEFAULT = &H2 ' Do not use default sound.
    
Public Const SND_MEMORY = &H4 ' lpszSoundName points to a
    
' memory file.
    
Public Const SND_LOOP = &H8 ' Loop the sound until next
    
' sndPlaySound.
    
Public Const SND_NOSTOP = &H10 ' Do not stop any currently
    
' playing sound.
    

    
'**************************************************
    
' 播放资源文件中的声音
    
'**************************************************
    

    
Public Sub PlayWaveRes(vntResourceID As Variant, Optional vntFlags)
    
'----------------------------------------------------------
    
' 注意: 如果使用SND_ASYNC,你必须将下面的
    
' bytSound()数组放在模块级变量定义的地方
    
' 或定义为静态变量,否则可能导致GPF
    
'-------------------------------------------------
    
Dim bytSound() As Byte ' Always store binary data in byte arrays!
    

    
bytSound = LoadResData(vntResourceID, "WAVE")
    

    
If IsMissing(vntFlags) Then
    
vntFlags = SND_NODEFAULT Or SND_SYNC Or SND_MEMORY
    
End If
    

    
If (vntFlags And SND_MEMORY) = 0 Then
    
vntFlags = vntFlags Or SND_MEMORY
    
End If
    

    
sndPlaySound bytSound(0), vntFlags
    
End Sub
    另外,参考
QA000457 "SndPlaySound播放WAV文件时候不能进行其他对窗口的操作"QA000082 "如何显示资源文件中GIF 文件"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio