只知道怎么播放内存wave文件:sndplaysound ,呵呵mp3有蹩脚的办法,就是先抱res里面的数据存成文件

解决方案 »

  1.   

    恩...那如果是wave呢?该如何使用sndPlaySound我用sndPlaySound(ArrSound(0),SND_MEMORY) (ArrSound是一个包含合法的Wave File的数组)但是返回值还是0,问题处在哪里呢?
      

  2.   

    Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long
    Private Declare Function sndStopSound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszNull As Long, ByVal uFlags As Long) As Long
    Private Const SND_MEMORY = &H4
    Private Const SND_SYNC = &H0
    Private Const SND_ASYNC = &H1
    Private Const SND_NODEFAULT = &H2
    Private Const SND_LOOP = &H8
    Private Const SND_NOSTOP = &H10Private arrBound()    As Byte
    Private arrFired()    As Byte
    Private arrNoBullet() As Byte
    Private Function PlaySound(ind As Integer) As Boolean
        Dim r        As Long
        Dim uFlags   As Long
                
        uFlags = SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY
        r = sndStopSound(0, SND_ASYNC)
        
        Select Case ind
            Case 0 'Fire
                r = sndPlaySound(arrFired(0), uFlags)
            Case 1 'Shotted
                r = sndPlaySound(arrBound(0), uFlags)
            Case 2 'esNoBullet
                r = sndPlaySound(arrNoBullet(0), uFlags)
        End Select
    End FunctionPrivate Function LoadSound() As Boolean
        arrBound = LoadResData("Bound", "WAVE")
        arrFired = LoadResData("Fire", "WAVE")
        arrNoBullet = LoadResData("NoBullet", "WAVE")
    End Function
      

  3.   

    我也想知道不保存为单个文件,如何播放音频?我指的是如同上面的程序一样以数组格式传递一首歌曲的数据,其他格式呢?MP3、Midi、Wma。有人知道吗?我也可以另外开贴给分,分数不是问题。非常感谢!