工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 微软开发专栏 > Visual Studio.net专栏 > VB.net > 正文
VB.NET中使用Directsound9之简单播放
[文章信息]
作者:archive
时间:2005-03-07
出处:blog
责任编辑:方舟
[文章导读]
关于VB6的爱好者.大家还是尽快放弃VB6吧,我从97年开始用,现在终于也到了.Net了
advertisement
热点推荐
· ADO.NET的开发场景及传统ADO的处理
· Decorator模式中遭遇继承与聚合的冲突
· 急速闪电:强大的Flash播放利器
· Excel动画教程:添加说明文字
· 软件盗版与反盗版之战
[正文]
  关于VB6的爱好者.大家还是尽快放弃VB6吧,我从97年开始用,现在终于也到了.Net了,中间的痛苦可想而知。尤其是服务器编程,.NET会方便很多。客户端随着XP的推广跟windows update的升级,也快了,别到时候别没有准备。

  我的学习方法:

  看SDK的文档,了解诸多概念,然后看SDK C#的教程(已经习惯了)

  准备工作:

  VS2003(有2002的,但是不用那个版本)

  DXSDK 9.0C 2004 Dec(记住,是for VS2k3的,曾经有过VS2k2的,而且很多地方不通用)

  Win2k(这个久不用说了吧)

  主要步骤:

  1、首先要添加引用.否则直接imports没办法找到 Microsoft.Directx....

  2、引用完了,为了方便再imports Microsoft.DirectX.directsound

  为了播放一个简单的声音文件进行如下操作:

  ·创建一个设备,关联到这个窗体

  ·创建一个缓冲,指定来源(这里用文件)

  ·播放...

Dim ad As Device '创建设备
Dim Buf As SecondaryBuffer '创建缓冲
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 ad = New Device '实力化设备对象
 ad.SetCooperativeLevel(Me.Handle, CooperativeLevel.Normal) '关联
 Buf = New SecondaryBuffer("G:\MEDIA\WAV\ff9start.wav", ad) '实力化缓冲区
 Buf.Play(0, BufferPlayFlags.Looping) '播放,同时指定开始位置跟方式
End Sub

  这是一个最基本最简单的例子,目的是了解步骤。

  有趣的现象,由于DS关联的是窗体,当窗体失去焦点的时候,他会停止播放 一旦重新获得焦点会继续播放。

  很方便吧

  但是DS用的是缓冲区的,在切换的时候,会丢失声音,少了那么一点,SDK也提到过,但是我没有认真看(1 感觉问题不大(除非录音) 2 英文的,懒~)

  实际上没有必要解决丢失问题,因为对buf描述的时候就有这个选项。

  普通的(就是默认的,我用的这种)

  Sticky 看原文吧:Buffers with \"sticky\" focus will continue to play if the user switches to another application not using DirectSound. However, if the user switches to another DirectSound application, all normal-focus and sticky-focus buffers in the previous application are muted.";

  全局的:Buffers with global focus will continue to play if the user switches focus to another application, even if the new application uses DirectSound. The one exception is if you switch focus to a DirectSound application that uses the DSSCL_WRITEPRIMARY cooperative level. In this case, the global-focus buffers from other applications will not be audible.";

  再就是 默认 硬件加速 软件加速 (用默认就好,有硬件就用硬件,否则模拟)

  以下是原文:

if (MixHardware)
{
 sText = sText + "\n\nWith the hardware mixing flag, the new buffer will be forced to use hardware mixing. If the device does not support hardware mixing or if the required hardware resources are not available, the call to the DirectSound.CreateSoundBuffer method will fail.";
}
else if (MixSoftware)
{
 sText = sText + "\n\nWith the software mixing flag, the new buffer will use software mixing, even if hardware resources are available.";
}
else
{
 // Default mixing
 sText = sText + "\n\nWith default mixing, the new buffer will use hardware mixing if available, otherwise software mixing will be used.";
}
 
  由于内容很简单,没有翻译的必要(主要是因为懒,自己能看懂稍微记录一下就算了)

  实际上DirectSound能作的工作很多,包括特效,3D音效跟混音以及声音抓取等。

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 用Visual Basic.NET编写扑克牌游戏
  • Visual Basic.NET实现双检锁(DCL)模式
  • 浅议Visual Basic.NET中HOOK的应用
  • 用VB.NET结合Excel设计统计生产报表
  • VB.NET上传图片并在DataGrid中显示
  • 专家:手机将实现一键通 能当对讲机使用
  • 中国发力切食网游蛋糕 政府出台扶持政策
  • 英国音像工业协会:非法下载音乐要被重罚
  • 电信运营商各自拿方案 过期卡余额有望退还
  • 网络立法:网络虚拟财产何时能得到法律关怀
  • 网络立法:用法律为青少年打造健康网络空间
  • 网络立法:“网络牛皮癣”真的无法根治吗?
  • 谨防新型木马病毒“美女”盗窃QQ账号密码
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索