代码如下:
DWORD csound::Play(CWnd *pParentWnd, LPCSTR pFileName)
{
//打开音频设备的程序代码段(复制):OpenDevice()
DWORD dwResult=0;
MCI_OPEN_PARMS mciOpenParms;
//将设备设置为音频设备
mciOpenParms.lpstrDeviceType =(LPSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
//打开音频设备
dwResult=mciSendCommand(NULL,MCI_OPEN,
MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT,
(DWORD)(LPVOID)&mciOpenParms);
if(dwResult!=0)
AfxMessageBox("打开音频设备出错!");
//保存设备ID,使用其它MCI命令
m_nDeviceID=mciOpenParms.wDeviceID ;
//-------------------------------------------------------------
//播放WAV文件
//初始化数据结构
memset(&mciOpenParms,0,sizeof(MCI_OPEN_PARMS));
//设置所要播放的WAV文件名
mciOpenParms.lpstrElementName =pFileName;
//第一次打开音频设备
dwResult=mciSendCommand(m_nDeviceID,MCI_OPEN,
MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpenParms);
if(dwResult!=0)
AfxMessageBox("打开音频设备失败!");
//保存元素ID
m_nElementID=mciOpenParms.wDeviceID ;
MCI_PLAY_PARMS mciPlayParms;
//设置窗口,接收消息
mciPlayParms.dwCallback =(DWORD)pParentWnd->m_hWnd ;
//通知设备播放文件
dwResult=mciSendCommand(m_nElementID,MCI_PLAY,
MCI_NOTIFY,(DWORD)(LPVOID)&mciPlayParms);
if(dwResult!=0)
AfxMessageBox("通知设备播放文件出错!");
return dwResult;
}
然后用一个BUTTON按钮调用它:
void CSoundView::OnButton3()
{
UpdateData();
//播放WAV文件
csound m_sound;
if( m_sound.Play(this,m_filename)!=0)
{
AfxMessageBox("播放WAV文件出错!");
}
return;
}
运行结果:不出现任何出错提示,但没有声音;请各位高人指教。多谢了。
6 个解决方案
#1
http://www.codeproject.com/audio/wave_class_for_playing_and_recording.asp
#2
你的电脑有几个声音输出设备?
#3
to:szmylove(还要努力):
我还不大清楚,是不是要增加指定输出设备的语句?请指教。
我还不大清楚,是不是要增加指定输出设备的语句?请指教。
#4
留下mail
我给你Cwave类。
我给你Cwave类。
#5
TO:nevergrief(孤独骑士)
fudesheng2001@yahoo.com.cn
多谢。
fudesheng2001@yahoo.com.cn
多谢。
#6
发了,以后给别人发消息的时候,记得说清楚哪个问题。
忽然来个mail,我怎么知道是谁的?
忽然来个mail,我怎么知道是谁的?
#1
http://www.codeproject.com/audio/wave_class_for_playing_and_recording.asp
#2
你的电脑有几个声音输出设备?
#3
to:szmylove(还要努力):
我还不大清楚,是不是要增加指定输出设备的语句?请指教。
我还不大清楚,是不是要增加指定输出设备的语句?请指教。
#4
留下mail
我给你Cwave类。
我给你Cwave类。
#5
TO:nevergrief(孤独骑士)
fudesheng2001@yahoo.com.cn
多谢。
fudesheng2001@yahoo.com.cn
多谢。
#6
发了,以后给别人发消息的时候,记得说清楚哪个问题。
忽然来个mail,我怎么知道是谁的?
忽然来个mail,我怎么知道是谁的?