是这样的:我的初衷是想在整个工程中一直循环播放一段背景音乐,背景音乐是wav 格式的文件。(具体的插入文件资源我知道的)我尝试一下在主对话框的OnInitDialog函数中调用Playsound函数,结果是:只有程序执行到主要对话框的时候才开始背景音乐的播放。但这不是我想得到的结果。我是想在程序一开始执行的时候就开始播放背景音乐,而且背景音乐的播放不受程序中任何事件的影响(我也在The**App 的Instance()中尝试调用了Playsound函数,结果是:当在有按钮事件的时候背景音乐又是从新开始播放。)想最终实现的效果是:程序开始执行-->播放背景音乐(背景音乐不受程序中任何事件的影响)-->用户退出程序。
请指教,给出大概的操作思路就可以了,具体细节我自己再到MSDN上找。 
谢谢~~~~

解决方案 »

  1.   

    在APP的构造函数里面调用Playsound即可。
      

  2.   

    在Instance()里不行,在ctors中行吗?
      

  3.   

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

  4.   

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

  5.   

    一般onpaint 是会被经常调用的 
    ============
    这个肯定不行,因为它被调用的次数太多了,效果就是放不了一下就会重新开始。
    首先你应该将Playsound的播放方式设为异步方式,另外加上参数SND_LOOP。这样就不用考虑音乐长度的问题了。
    其次Playsound应该放在一个只调用一次的函数中,免得从新调用又从头开始
      

  6.   

    回楼上各位:看了上面的建议我也尝试着用了上面各位说的办法了,还是不能达到预期效果。
    除了用 etz2008的创建一个新的线程的办法估计还可以解决该问题,我在工程里面基本上每个对话框的OnInitDialog()函数中都要调用一次PlaySound()函数,而且,如果两个PlaySound()函数同时在OnInitDialog()函数中调用的话程序好像只执行排在上面的PlaySound()函数,后面的就不执行了。
    所以说,如果在有对话框本身有调用PlaySound()函数的前提下,再实现背景音乐不从新开始播放貌似有点麻烦。
    不过,还是要感谢楼上各位的热心帮助,我再继续想象办法吧。