用VB开发DirectSound程序

博客介绍用VB结合DirectSound开发播放声音程序。指出相比其他方法,DirectSound更灵活但编程有难度,微软示例不适合初学者。作者编写入门代码,说明程序添加按钮和对话框,介绍使用DirectSound的安装和引用要求,还提及程序注意事项及不同版本情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家都知道directsound是directx中的一个部份。它的主要功能是用来播放声音。其实用vb来开发播放声音的程序有很多种方法。但是和directsound相比,这些方法都缺少灵活性。而正是由于这些灵活性,使directsound的编程具有一定的难度。虽然微软给了许多的程序代码实例,但是本人在看这些例子的时,发现这些程序并不适合初学者。因为在这些程序里,有许多的错误处理程序和调试代码。这样给初学者增加了很大的学习难度。正是由于上面愿因,本人编写了一个简单的基础入门代码,帮助初学者快速入门,并以此为基础进行更高层次的学习。 程序说明 在本程序中我们添加两个命令按纽和一个打开文件对话框。第一个按钮用来播放声音,第二命令按钮用来打开文件对话框,选择要播放的声音文件。对于directsound的初始化,在formload里完成。 要使用directsound首先要安装directx的sdk的sdk包(里面有大量的例子程序和帮助,我只发现在序例号为q99jq-hvjyx- 68gm3-wxt68的win98的安装盘中有sdk包)或带有dx7类库的游戏(指有些游戏带有‘安装dirhct7.0’选项)。在vb的菜单[工程]---》(引用...)弹出引用对话框中选中’directx7 for visualbase type lidrary‘。 代码入下: dim m_dx as new directx7’声明dlrect x7对象 dim dufferdesc as dsbufferdesc’声明缓冲结构 dim waveformat as waveformatex’声明文件格式 dim m_dsduffer(100) as directsoundbuffer’声明缓冲对象 dim k as string dim m_ds as directsound ’声明directsound对象 private sud commandl click() set m_dsduffer(100)=m ds createsoundbufferfromfile(k,dufferdesc, waveformat)’装入文件到缓冲中。m dsduffer(100)表示缓冲的大小。 m_dsduffer(100),play flag’播放 end sub prlvate sub command2_click() commondialog1 showopen k=commondialog1 filename end sub private sub form_load() set m_ds=m_dx direetsoundcreata("")’direetsound 使用的硬件括号为空表示是用默认的硬件 m_ds.setcooberativelevr1,me.hwnd,dsscl_prlorlty’定义协作层 ’定义缓冲参数 bufferdesc lflags = dsbcaps_ctrlfrequency or dsbcaps_ctrlpan or dsbcaps_ctrlvolume or dsb_caps_statlc ’********************************************************( ’定义文件对象的参数 waveformat nformattag = waveformat pcm waveformat nchannels = 2 waveformat lsamplespersec = 22050 waveformat nbitspersample = 16 waveformat nblockalign =waveformat.nbitspersample/8* waveformmat.nchannels waveformat lavgbytespersec =waveformat.lsamplespersec * waveformat.nblockalign ’*****************) end sub 此程序要注意的地方:如你的声卡正被一些使用directsound的技术软件所使用,那么,初使化会失败。因为我是用directsoundcreate 方法创建dlrect-sound对象的,此方法表示使用默认的声卡并以独占的方发使用。反之,此程序运行时,其他使用dlrectsound技术的软件也不可以运行,如超级解霸2001。此外,此程序只可以播放wav的声音文件。(不要问为什么,这是规定。)这就是为什么很多游戏安装完后会带有很多的 wav声音文件的原因。但好象听说8.0版可以播放更多的声音文件。各位可以在8.0的机器上试一下本程序。如果8.0上运行有问题请在vb的菜单[工程]---》[引用.....]弹出引用对话框中选中”dlrectx8 for vlsual base type li-brary”然后使用vb中的对象浏览器查看看8.0与7.0的差别,在第一个下拉框中选出dxvbllba他是8.0的类库名,7.0是 dxvbllb.把代码中使用的7.0的对象,方法等改成8.0的对象,方法等如本程序的dimm dx as new directx7改成dim m dx as new directx7改成dimm dx as new directx8。依次类推。7.0以下不可以运行本程序,因为7.0以下不支持vb的开发,只支持c系列语言的开发。 本程序未在8.0中测试,希望读者可以告诉我在8.0中的运行效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值