首页
社区
课程
招聘
PlaySound 为何放不出声音
发表于: 2010-10-26 23:43 5025

PlaySound 为何放不出声音

2010-10-26 23:43
5025
#include <windows.h>

#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")

int main()
{

        ::PlaySound( "129.wav", NULL, SND_FILENAME | SND_ASYNC );

        return 0;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 38
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
我测试可以正常播放---(用汇编函数用法正确)

后来建了个VC控制台 -- 不能播放音乐

后来 在 这个函数后加了个 MessageBox 就可以了---
应该是 控制台 进程 结束的 太快了---还没播- -- 就退出了

后又 加 Sleep (5000)

发现 就能播放 5 秒 ---

应该是 这个原因了 --- 退出太快

采用 异步标志 了 -- PlaySound 打开音乐 即 返回

接着 你就 return 0 了 --- -进程 退出了---  播放音乐的线程自然就结束了 -- -听不到了

采用 同步标志 或 只结束 主线程 可听音乐
2010-10-27 00:16
0
雪    币: 596
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
3
虽然没听到但是已经播放了,你的播放标志采用异步播放,函数返回太快所以你听不见如果想听见就在下面加代码例如:
#include <windows.h>
#include<iostream.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")

int main()
{

  ::PlaySound( "129.wav", NULL, SND_FILENAME | SND_ASYNC );
  for(int i=0;i<10000;i++)
  {
    cout<<i<<endl;
  }

  return 0;
}
这样应该就能听到了

  或者把异步播放标志改成同步播放即把SND_ASYNC 改成SND_SYNC ,不加代码也能听见
2010-10-27 00:31
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不错,学习了,顺便例行刷新
2010-10-27 20:57
0
雪    币: 558
活跃值: (46)
能力值: ( LV2,RANK:16 )
在线值:
发帖
回帖
粉丝
5
getchar应该就好了吧
2011-1-13 18:29
0
游客
登录 | 注册 方可回帖
返回
//