将wave文件加载到内存中来,用什么方法比较好?

lilostyle 2003-10-18 11:25:17
GlobalAlloc?
还是HeapCreate 什么的?
因为要动态加载,所以不能将wave文件加载到资源中来
还请各位大侠多多指点啊
最好能给出加载进来后,如何使用sndPlaySound函数播放的代码
谢过先
~~bow

...全文
136 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
akiko 2003-10-18
  • 打赏
  • 举报
回复
#include <mmsystem.h>
project--setting--link--Object/library modules加上winmm.lib
然后直接:
sndPlaySound("d:\\logoff.wav",SND_ASYNC);
lilostyle 2003-10-18
  • 打赏
  • 举报
回复
是这样吗??
MMSystem只支持从文件名或资源播放两种方式吗?
我看了msdn也云里雾里的,不好意思啊 shy

能帮我确定一下吗
我这里原先将wav放在资源里能工作的代码是
HINSTANCE h=AfxGetInstanceHandle();
HRSRC hr=FindResource(h,"KACHA","WAVE");
HGLOBAL hg=LoadResource(h,hr);
LPSTR lp=(LPSTR)LockResource(hg);
sndPlaySound(lp,SND_ASYNC|SND_MEMORY);
UnlockResource(hg);
FreeResource(hg);
我还以为在SND_MEMORY方式下,lp可以指向一段内存空间,不管是LockResource得到的,
还是GlobalLock得到的
大牛,帮我验证一下吧
lilostyle 2003-10-18
  • 打赏
  • 举报
回复
这个我也明白,(还是很谢谢你)
但是我不希望每次对wav文件做微小的改动都要重新link
我希望程序能自己加载相对目录下的×××.wav文件

比如我在对话框初始化时把他加载进内存,在对话框退出时将其释放掉
在对话框生存期内,可能频繁的需要播放该声音,所以想如同bmp一样
动态加载进内存,不直接添加到资源中去

那位老大,给点意见的说
谢过先
Bow~~~`
microran2000 2003-10-18
  • 打赏
  • 举报
回复
MMSystem中函数好像只提供文件名或者资源播放两种方式,如果你先播放速度不尽人意.那么你可以采用DirectSound.
microran2000 2003-10-18
  • 打赏
  • 举报
回复
如果你的Wav文件比较小,你可以把它直接嵌入到你的应用程序中,一旦你的程序加载后,这个资源就会自动载入到你的进程的内存地址空间.你可以采用sndPlaySound来播放程序中的该资源.
具体文档可以参考PlaySound或者sndPlaySound
lilostyle 2003-10-18
  • 打赏
  • 举报
回复
这样每次播放会不会都要读文件阿?
如果播放操作比较频繁
效率岂不是很低????

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧