PlaySound(TEXT("music.wav"), NULL, SND_FILENAME | SND_ASYNC);
时间: 2025-06-22 15:45:56 浏览: 9
### 使用 `PlaySound` 函数播放 WAV 文件
为了成功调用 `PlaySound` 函数并播放 WAV 文件,在程序中需遵循特定的设置和编码实践。
#### 头文件包含
确保在源代码顶部包含了必要的头文件。由于 `PlaySound` 是 Windows API 的一部分,因此需要引入 `<mmsystem.h>` 这个头文件[^3]:
```cpp
#include <windows.h>
#include <mmsystem.h> // 包含 PlaySound 原型声明
#pragma comment(lib, "winmm.lib") // 链接 winmm 库
```
注意,应将此包含语句放置于已有包含语句之后,以防止潜在冲突或编译错误。
#### 播放指定路径下的 WAV 文件
通过传递完整的文件路径给 `pszSound` 参数可以实现对具体音频文件的播放操作。下面展示了如何定义一个简单的消息循环来响应菜单项的选择事件,并执行相应的音效控制命令:
```cpp
switch (message) {
...
case WM_COMMAND:
switch(LOWORD(wParam)) {
...
case ID_DISP_SOUND: // 菜单项ID用于触发播放动作
PlaySound(TEXT("D:\\1_school_four\\media\\Test\\test1\\TheClassic.wav"),
NULL,
SND_FILENAME | SND_ASYNC);
break;
case ID_STOP_SOUND: // 另一菜单项ID停止当前正在播放的声音
PlaySound(NULL, NULL, SND_PURGE | SND_ASYNC);
break;
...
}
break;
}
```
这里使用了两个常量标志位组合:`SND_FILENAME` 表明参数是一个指向波形声音文件名字符串的指针;而 `SND_ASYNC` 则指示异步方式运行该函数,即不阻塞主线程直到完成整个音频流的回放过程结束为止。当想要立即终止任何正在进行中的播放时,则可以通过传入 `NULL` 给第一个参数以及加上 `SND_PURGE` 来清除队列内的所有待播项目[^4]。
阅读全文
相关推荐


















