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")
    • 方法2 :在项目属性中配置:
      • 右键项目 → 属性 → 链接器 → 输入 → 附加依赖项 → 添加winmm.lib
​**(2) 字符串类型适配**
  • 若项目使用Unicode字符集(默认设置),需将字符串参数转换为宽字符类型:

    cpp 复制代码
    PlaySound(TEXT("sound.wav"), NULL, SND_FILENAME | SND_ASYNC); // 使用TEXT宏自动转换[1](@ref)

2. 调用PlaySound()函数

​**(1) 播放本地WAVE文件**
cpp 复制代码
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) 播放资源文件**
  1. 在资源视图中右键项目 → 添加 → 资源 → 导入WAVE文件,假设资源ID为IDR_SOUND

    cpp 复制代码
    PlaySound(MAKEINTRESOURCE(IDR_SOUND), GetModuleHandle(NULL), SND_RESOURCE | SND_ASYNC); // 从资源播放[1,4](@ref)
  • 注意MAKEINTRESOURCE用于将资源ID转换为指针类型。
​**(3) 播放系统声音**
cpp 复制代码
PlaySound(TEXT("SystemStart"), NULL, SND_ALIAS | SND_ASYNC); // 播放系统启动音效[1,4](@ref)
  • SystemStart是Windows预定义的系统事件别名。

3. 常见标志组合

标志 作用 示例场景
SND_ASYNC 异步播放(函数立即返回) 背景音乐播放
SND_LOOP 循环播放 游戏背景音乐
SND_NODEFAULT 不播放默认声音(若文件不存在) 避免错误提示音
SND_MEMORY 播放内存中的音频数据 加载到内存的音频缓冲区

4. 错误处理

cpp 复制代码
if (!PlaySound(TEXT("nonexistent.wav"), NULL, SND_FILENAME)) {
    // 处理错误(如文件不存在)
    MessageBox(NULL, TEXT("音频文件加载失败!"), TEXT("错误"), MB_ICONERROR);
}

5. 注意事项

  1. 路径格式 :Windows路径需使用双反斜杠(\\)或TEXT()宏处理。
  2. 异步播放 :若需同步播放(函数等待音频结束),移除SND_ASYNC标志。
  3. 资源释放 :若通过SND_MEMORY加载音频,需手动释放内存。

通过以上步骤,即可在Visual Studio 2022中实现音频播放功能。具体实现可根据需求选择文件路径、资源或系统声音。

相关推荐
海清河晏1112 天前
数据结构 | 二叉搜索树
数据结构·c++·visual studio
love530love2 天前
用自然语言让 AI Agent 卸载软件 —— 以卸载 Visual Studio 2026 为例
ide·人工智能·windows·agent·visual studio·ai agent·marvis
落寞的电源2 天前
使用Visual Studio SDK制作GLSL词法着色插件
ide·visual studio
C++ 老炮儿的技术栈2 天前
MFC 自定义纯色居中文字进度条控件
c语言·数据库·c++·windows·算法·c·visual studio
我不是懒洋洋23 天前
【C++】string(string的成员变量、auto和范围for、string常用接口的说明、OJ题目、string的模拟实现)
c语言·开发语言·c++·visual studio
C++ 老炮儿的技术栈24 天前
Ubuntu root账号自动登陆
linux·运维·服务器·c语言·c++·ubuntu·visual studio
A.零点24 天前
【2个月 C 语言从入门到精通:零基础系统教程】第十二讲:深入了解指针(五)
c语言·开发语言·网络·笔记·visual studio
彷徨而立24 天前
【VS2026】介绍 Visual Studio 几个重要配置项
visual studio
AndyHuang197624 天前
【避坑指南】Visual Studio 插件报错 “Windows Terminal (wt.exe) was not found in PATH“ 完美解决
ide·windows·visual studio
彷徨而立24 天前
【Visual Studio】msbuild 使用举例
ide·visual studio