关于一个添加背景音乐的问题,进来看看吧?

qinhaichao 2008-11-09 02:06:04
是这样的:

我的初衷是想在整个工程中一直循环播放一段背景音乐,背景音乐是wav 格式的文件。(具体的插入文件资源我知道的)

我尝试一下在主对话框的OnInitDialog函数中调用Playsound函数,结果是:只有程序执行到主要对话框的时候才开始背景音乐的播放。但这不是我想得到的结果。

我是想在程序一开始执行的时候就开始播放背景音乐,而且背景音乐的播放不受程序中任何事件的影响(我也在The**App 的Instance()中尝试调用了Playsound函数,

结果是:当在有按钮事件的时候背景音乐又是从新开始播放。)

想最终实现的效果是:程序开始执行-->播放背景音乐(背景音乐不受程序中任何事件的影响)-->用户退出程序。


请指教,给出大概的操作思路就可以了,具体细节我自己再到MSDN上找。


谢谢~~~~
...全文
125 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinhaichao 2008-11-09
  • 打赏
  • 举报
回复
回楼上各位:

看了上面的建议我也尝试着用了上面各位说的办法了,还是不能达到预期效果。


除了用 etz2008的创建一个新的线程的办法估计还可以解决该问题,我在工程里面基本上每个对话框的OnInitDialog()函数中都要调用一次PlaySound()函

数,而且,如果两个PlaySound()函数同时在OnInitDialog()函数中调用的话程序好像只执行排在上面的PlaySound()函数,后面的就不执行了。


所以说,如果在有对话框本身有调用PlaySound()函数的前提下,再实现背景音乐不从新开始播放貌似有点麻烦。


不过,还是要感谢楼上各位的热心帮助,我再继续想象办法吧。
etz2008 2008-11-09
  • 打赏
  • 举报
回复
创建一个专门的新线程来播放音乐!
试试
etz2008 2008-11-09
  • 打赏
  • 举报
回复
创建一个新的线程来专门播放音乐
看看可以不呢?
wltg2001 2008-11-09
  • 打赏
  • 举报
回复
一般onpaint 是会被经常调用的
============
这个肯定不行,因为它被调用的次数太多了,效果就是放不了一下就会重新开始。
首先你应该将Playsound的播放方式设为异步方式,另外加上参数SND_LOOP。这样就不用考虑音乐长度的问题了。
其次Playsound应该放在一个只调用一次的函数中,免得从新调用又从头开始
rollrock1987 2008-11-09
  • 打赏
  • 举报
回复
你可以这么想,什么东西在程序存在的过程中会被不停的调用??
一般onpaint 是会被经常调用的
当然,我建议你使用 时钟 SetTimer 可以设置多少时间响应一次

比如你可以得到你的歌曲的长度是5分30秒 那你就可以设置5分30秒或者别的时间来响应一次调用
具体可以google
rollrock1987 2008-11-09
  • 打赏
  • 举报
回复
你可以这么想,什么东西在程序存在的过程中会被不停的调用??
一般onpaint 是会被经常调用的
当然,我建议你使用 时钟 SetTimer 可以设置多少时间响应一次

比如你可以得到你的歌曲的长度是5分30秒 那你就可以设置5分30秒或者别的时间来响应一次调用
具体可以google
schlafenhamster 2008-11-09
  • 打赏
  • 举报
回复
在Instance()里不行,在ctors中行吗?
sunlin7 2008-11-09
  • 打赏
  • 举报
回复
在APP的构造函数里面调用Playsound即可。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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