安徽省中职学校名录:vb有关的声音函数

来源:百度文库 编辑:神马品牌网 时间:2024/05/14 13:24:44
谁能说说vb是怎样控制声音的

vb自带的声音只有Beep函数

不过他可以调用api函数!也可以使用控件
或者dx等接口。。

vb的api应用太复杂了,还是用vc之类的编好之后编译成dll动态库文件在用vb的程序调用。

Private Declare Function waveOutGetVolume Lib "winmm.dll" _
(ByVal uDeviceID As Long, lpdwVolume As Long) As Long
Private Declare Function waveOutSetVolume Lib "winmm.dll" _
(ByVal uDeviceID As Long, ByVal dwVolume As Long) As Long
Private Declare Function waveOutGetDevCaps Lib "winmm.dll" _
Alias "waveOutGetDevCapsA" (ByVal uDeviceID As Long, _
lpCaps As WAVEOUTCAPS, ByVal uSize As Long) As Long

Const WAVE_MAPPER = -1&
Const MAXPNAMELEN = 32

Private Type WAVEOUTCAPS
wMid As Integer
wPid As Integer
vDriverVersion As Long
szPname As String * MAXPNAMELEN
dwFormats As Long
wChannels As Integer
dwSupport As Long
End Type

Private Sub Form_Load()
Dim lVol As Long
Dim tWaveCaps As WAVEOUTCAPS

waveOutGetVolume WAVE_MAPPER, lVol
HScroll1.Value = (lVol And 255)
HScroll2.Value = ((lVol \ 65536) And 255)
End Sub

Private Sub HScroll1_Change()
Dim lVol As Long

lVol = HScroll2.Value * 65536
Debug.Print waveOutSetVolume(WAVE_MAPPER, (lVol Or HScroll1.Value))
End Sub

Private Sub HScroll2_Change()
Dim lVol As Long

lVol = HScroll2.Value * 65536
Debug.Print waveOutSetVolume(WAVE_MAPPER, (lVol Or HScroll1.Value))
End Sub