PlaySound界面最小化后不播放(失去焦点后不播放)

 // Load the wave file into a DirectSound buffer
 if( FAILED( hr = g_pSoundManager->Create( &g_pSound, strFileName, 0, GUID_NULL ) ) )

改为:
 if( FAILED( hr = g_pSoundManager->Create( &g_pSound, strFileName, DSBCAPS_GLOBALFOCUS, GUID_NULL ) ) )

 

这里要传递参数给CreateSoundBuffer(LPCDSBUFFERDESC pcDSBufferDesc,LPDIRECTSOUNDBUFFER *ppDSBuffer,LPUNKNOWN pUnKOuter);

DSBUFFERDESC 结构体定义如下:

struct {

DWORD dwSize;//结构体大小

DWORD dwFlags;//缓冲区的用途标志

DWORD dwBufferBytes;//缓冲区大小(如果是设置主缓冲区必须设置为0)

DWORD dwReserved;//保留未用,必须为0

LPWAVEFORMATEX lpwfxFormat;//声音的格式属性

GUID    guid3DAlgorithm;//3D声效算法,一般不必理会

};

dwflag 参数的标志说明:

DSBCAPS_CTRL3D   //缓冲区具有的3D音效控制能力,不能与DSBCAPS_CTRLPAN一起使用

DSBCAPS_CTRLFREQUENCY   //可设置采样频率

DSBCAPS_CTRLFX  //缓冲区支持特效处理,但缓冲区必须够大,可容纳更多的数据

DSBCAPS_CTRLPAN  //缓冲区可以控制声道

DSBCAPS_CTRLPOSITIONNOTIFY  //缓冲区具有播放位置通知能力

DSBCAPS_CTRLVOLUME  //缓冲区可设置音量大小

DSBCAPS_GLOBALFOCUS  //缓冲是一个全局声音资源,当前程序切换到其他程序依然可以继续播放.

DSBCAPS_LOCDEFER  //缓冲区可绑定硬件内存或者软件内存来播放声音

DSBCAPS_LOCHARDWARE  //缓冲区必须使用硬件的混声器,如果不支持硬件内存或者混声器,都会导致创建缓冲区失败.

DSBCAPS_LOCSOFTWARE  //缓冲区使用软件内存或者使用软件混音

DSBCAPS_MUTE3DATMAXDISTANCE  //超过声音可听的最大距离,将停止播放声音

DSBCAPS_PRIMARYBUFFER  //说明缓冲区的为主缓冲区(如果没说明,则用作次缓冲区)

DSBCAPS_STATIC  //自动使用硬件内存做缓冲区

DSBCAPS_STICKYFOCUS  //当程序切换到其他不使用DIRECTSOUND 的程序时,缓冲区继续播放声音,但无法如常进行其他处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值