网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC下实现DirectSound
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
);
BufferDesc.dwBufferBytes = m_dwSize;
BufferDesc.dwFlags = 0;
file://头文件中声明m_pDSoundBuffer,类
型:LPDIRECTSOUNDBUFFER
if (pDSoundObject->CreateSoundBuffer
(&BufferDesc, &m_pDSoundBuffer, 0) != DS_OK)
return FALSE;

4. 载入声音数据
BOOL CDirectWave::LoadData (void){
LPVOID lpPtr1, lpPtr2;
DWORD dwLen1, dwLen2;
HRESULT hResult;

TryLoad:
hResult = m_pDSoundBuffer- >Lock
(0, m_dwSize, &lpPtr1, &dwLen1, &lpPtr2, &dwLen2, 0);
if (hResult == DS_OK){
memcpy (lpPtr1, m_pData, dwLen1);
if (lpPtr2)
memcpy (lpPtr2, m_pData + dwLen1, dwLen2);
m_pDSoundBuffer- >Unlock
(lpPtr1, dwLen1, lpPtr2, dwLen2);
return TRUE;
}
else if (hResult == DSERR_BUFFERLOST){
hResult = m_pDSoundBuffer- >Restore ();
if (hResult == DS_OK)
goto TryLoad;
}
return FALSE;
}

5. 播放及停止
void CDirectWave::Play (BOOL bLoop){
DWORD dwFlags = 0;
file://dwFlags= DSBPLAY_LOOPING可实现循环播放
TryPlay:
if (m_pDSoundBuffer- >
Play (0, 0, dwFlags) == DSERR_BUFFERLOST){
if (LoadData ())//数据丢失,重新装载
goto TryPlay;
}
}
void CDirectWave::Stop (void){
m_pDSoundBuffer- >Stop ();
}
6. 关闭。释放内存块,声音缓冲区。

DirectSound需要用到mmsystem.h,dsound.h两个头文件。

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号