做声音报警,当有报警状态时,在定时器中定时调用改函数,不断的播放wav文件,报警。
但是不断重复播放的的时候,有时候就没有声音了。电脑重启,或者软件重启后正常,
是什么原因?

解决方案 »

  1.   

    调用例子:
    ndPlaySound("声音文件wav路径",SND_ASYNC);
      

  2.   

    你判断一下返回值,然后GetLastError.
      

  3.   

    我是这样使用的,
     在定时器中。每次检查标志 如果标志成立
      就执行ndPlaySound("声音文件wav路径",SND_ASYNC);这个语句。但客户反映
     有时候听不到声音
      

  4.   

    同问 为什么不用PlaySound?  
    If the specified sound cannot be found, sndPlaySound plays the system default sound. If there is no system default entry in the registry or WIN.INI file, or if the default sound cannot be found, the function makes no sound and returns FALSE.The specified sound must fit in available physical memory and be playable by an installed waveform-audio device driver.
      

  5.   

    是有这个问题的
    可以考虑用其他播放方式
    DSOUND之类的看看
      

  6.   

    调用例子:
    ndPlaySound("声音文件wav路径",SND_ASYNC);
      

  7.   

    现在流行XAudio2 or 3 接口
      

  8.   


    多谢
    WIndows XP下如何使用??
      

  9.   

        PlaySound(MAKEINTRESOURCE(IDR_WAVE1),AfxGetResourceHandle(),SND_RESOURCE);
      

  10.   

    楼上的是播放资源内的wave
    继续求解
      

  11.   

    PlaySound在一个线程中只能播放一个文件..也就是新的播放有可能打断上次的播放(除非右SND_NOSTOP),如果播放的文件路径是空就会停止所有的播放.如果你在其他地方调用PlaySound(NULL,...)就会停止以前播放的东西,想要同时播放多个文件建议用micSendCommand
      

  12.   

    多谢,多种报警声音是根据优先级来安排的 如下
      if(报警1条件成立)
             sndPlaySound('声音文件1');
      else if(报警条件2)
            sndPlaySound('声音文件2');
      else  ....... 应该没有同时调用一个文件问题。