visual studion 2022如何使用PlaySound()
书籍:《windows程序设计(第五版)》的开始
环境:visual studio 2022
内容:HELLOWIN程序
说明:以下内容大部分来自腾讯元宝。
在Visual Studio 2022中使用PlaySound()
函数播放音频,需完成以下步骤:
1. 配置项目环境
**(1) 添加头文件和库文件**
- 头文件:在代码中包含
<mmsystem.h>
,注意需在<windows.h>
之后引入。 - 库文件:需链接
winmm.lib
库。可通过以下两种方式实现:- 方法1:在代码中添加
#pragma comment(lib, "winmm.lib")
。
- 方法1:在代码中添加
-
- 方法2:在项目属性中配置:
- 右键项目 → 属性 → 链接器 → 输入 → 附加依赖项 → 添加
winmm.lib
。
- 右键项目 → 属性 → 链接器 → 输入 → 附加依赖项 → 添加
- 方法2:在项目属性中配置:
**(2) 字符串类型适配**
- 若项目使用Unicode字符集(默认设置),需将字符串参数转换为宽字符类型:
PlaySound(TEXT("sound.wav"), NULL, SND_FILENAME | SND_ASYNC); // 使用TEXT宏自动转换[1](@ref)
2. 调用PlaySound()
函数
**(1) 播放本地WAVE文件**
PlaySound(TEXT("TESTWAVE.wav"), NULL, SND_FILENAME | SND_ASYNC); // 同步/异步播放[1,4](@ref)
- 参数说明:
TEXT("TESTWAVE.wav")
:音频文件路径(需双反斜杠转义,如C:\\music\\sound.wav
)。NULL
:使用当前实例句柄。SND_FILENAME | SND_ASYNC
:指定文件路径并异步播放(播放后函数立即返回)。
**(2) 播放资源文件**
- 在资源视图中右键项目 → 添加 → 资源 → 导入WAVE文件,假设资源ID为
IDR_SOUND
:PlaySound(MAKEINTRESOURCE(IDR_SOUND), GetModuleHandle(NULL), SND_RESOURCE | SND_ASYNC); // 从资源播放[1,4](@ref)
- 注意:
MAKEINTRESOURCE
用于将资源ID转换为指针类型。
**(3) 播放系统声音**
PlaySound(TEXT("SystemStart"), NULL, SND_ALIAS | SND_ASYNC); // 播放系统启动音效[1,4](@ref)
SystemStart
是Windows预定义的系统事件别名。
3. 常见标志组合
标志 | 作用 | 示例场景 |
---|---|---|
SND_ASYNC | 异步播放(函数立即返回) | 背景音乐播放 |
SND_LOOP | 循环播放 | 游戏背景音乐 |
SND_NODEFAULT | 不播放默认声音(若文件不存在) | 避免错误提示音 |
SND_MEMORY | 播放内存中的音频数据 | 加载到内存的音频缓冲区 |
4. 错误处理
if (!PlaySound(TEXT("nonexistent.wav"), NULL, SND_FILENAME)) {
// 处理错误(如文件不存在)
MessageBox(NULL, TEXT("音频文件加载失败!"), TEXT("错误"), MB_ICONERROR);
}
5. 注意事项
- 路径格式:Windows路径需使用双反斜杠(
\\
)或TEXT()
宏处理。 - 异步播放:若需同步播放(函数等待音频结束),移除
SND_ASYNC
标志。 - 资源释放:若通过
SND_MEMORY
加载音频,需手动释放内存。
通过以上步骤,即可在Visual Studio 2022中实现音频播放功能。具体实现可根据需求选择文件路径、资源或系统声音。