本文主要介绍playsound以及playsoundA函数的初级用法
语言:C++
环境:win7 MFC
程序逻辑: mfc下,两个button控件,一个负责打开wav、wave格式文件,另一个按钮则播放。播放键,点击奇数次,音频文件播放一次。点击偶数次,则循环播放此音频。
第一步:.h文件(添加lib库及引用相应的.h文件)
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib") //由于是系统本身就有,所以直接这样写就可以了。不要去真的找到winmm.lib文件。
public:
afx_msg void OnBnClickedButton1();//打开文件 button事件
CString filepath;//全局变量;打开文件时,用于保存wav(or wave)文件父路径
CString filename;//全局变量;保存文件名。由于playsound函数需要wav文件路径。所以filepath和filename需要保存。
afx_msg void OnBnClickedButton2();//播放操作 button事件
int num; //全局变量;button2控件点击奇偶次计数位
第二步:.cpp文件
void Cplaysound2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"WAV(*.wav) |*wav|WAVE(*.wave)|*.wave",NULL);
if (dlg.DoModal()!=FALSE)
{
filepath=dlg.GetFolderPath();
filename=dlg.GetFileName();
num=0;
}
}
void Cplaysound2Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
str+=filepath+"\\"+filename;//合成wav、wave音频文件存在路径。
num++;
if (num%2==1) //奇数次点击,播放一次
{
PlaySoundA(str,NULL,NULL);//函数PlaySoundA 。第一个参数为路径,也可以添加绝对路径: 如“C:\Users\Administrator\Desktop\CS音效\MSG.wav”
}
if (num%2==0) //偶数次点击,循环播放
{
PlaySound(str, NULL, SND_FILENAME | SND_ASYNC|SND_LOOP);//LOOP是循环的意思
}
return;
}