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);

//同时也是关闭播放设备,所有声音都会停止

posted @ 2014-07-03 11:38  何人之名  阅读(373)  评论(0)    收藏  举报