MFC 播放声音/音乐
转自:http://blog.sina.com.cn/s/blog_6a1cdb3f0101irtd.html
法一:
PlaySound(MAKEINTRESOURCE(IDR_WAVE_GAME),AfxGetResourceHandle(),SND_RESOURCE|SND_ASYNC);
//IDR_WAVE_GAME为声音资源的ID,声音为wave类型。
法二:
1.在头文件中声明头文件
#include "mmsystem.h"//声音效果
//#pragma comment(lib,"WINMM.LIB")
//#pragma comment(lib,"msimg32.lib")
声明变量
MCIDEVICEID m_count; //设备ID
2.播放声音
void CLLKGame::playBgMusic()
{
MCI_OPEN_PARMS mciopenparms;//打开
MCI_PLAY_PARMS mciplayparms;//播放
mciopenparms.lpstrElementName="res\\bg.mid";//播放路径,文件为mid格式
mciopenparms.lpstrDeviceType=NULL;//文件类型
MCIERROR ret = mciSendCommand(0,MCI_OPEN,MCI_DEVTYPE_WAVEFORM_AUDIO,
(DWORD)(LPVOID)&mciopenparms);//向MCI设备发送命令消息
if(ret != 0)
{
WORD err = LOWORD(ret);
char strText[1024] = {0};
mciGetErrorString(err,strText,sizeof(strText));
MessageBox(strText);
}
m_count=mciopenparms.wDeviceID;
mciplayparms.dwCallback=(DWORD)GetSafeHwnd();
mciplayparms.dwFrom=0;
ret = mciSendCommand(m_count,MCI_PLAY,MCI_FROM| MCI_NOTIFY ,(DWORD)(LPVOID)& mciplayparms);
if(ret != 0)
{
WORD err = LOWORD(ret);
char strText[1024] = {0};
mciGetErrorString(err,strText,sizeof(strText));
MessageBox(strText);
}
}
3.关闭声音
mciSendCommand(m_count,MCI_CLOSE,0,NULL);
//同时也是关闭播放设备,所有声音都会停止

浙公网安备 33010602011771号