16,472
社区成员
发帖
与我相关
我的任务
分享
void CMusicDlg::OnUpdatePlayMusic(CCmdUI* pCmdUI)
{
BOOL bCheck=m_main_menu.GetMenuState(IDR_PLAY_MUSIC,MF_CHECKED);
if(m_bstart)
{
m_main_menu.CheckMenuItem(IDR_PLAY_MUSIC,MF_BYCOMMAND|(bCheck?MF_CHECKED:MF_UNCHECKED));
}
PlayBackMusic(!bCheck);
Invalidate();
}
void CMusicDlg::PlayBackMusic(BOOL bflg)
{
if(bflg)
{
sndPlaySound("music.wav",SND_ASYNC);//播放音乐
}
else
{
sndPlaySound(NULL,SND_PURGE);//停止播放
}
}
#include <Vfw.h>
#pragma comment(lib,"vfw32.lib")
class Ring
{
public:
bool Init(HWND hwnd);
void Play(CString song);
void Stop();
void Destroy();
private:
HWND m_hWnd;
};
bool Ring::Init( HWND hwnd )
{
m_hWnd = MCIWndCreateW(hwnd, NULL, WS_POPUP | MCIWNDF_NOERRORDLG, NULL);
return (m_hWnd != NULL);
}
void Ring::Play(CString song)
{
if(m_hWnd == NULL)
return;
DWORD ret = MCIWndOpen(m_hWnd, song.operator LPCTSTR(), 0);
if(ret == 0)
MCIWndPlay(m_hWnd);
}
void Ring::Stop()
{
if(m_hWnd != NULL)
MCIWndStop(m_hWnd);
}
void Ring::Destroy()
{
Stop();
if(m_hWnd != NULL)
MCIWndDestroy(m_hWnd);
}
BOOL CRingDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_ring.Init(m_hWnd);
return TRUE;
}
void CRingDlg::OnDestroy()
{
CDialogEx::OnDestroy();
m_ring.Destroy();
}
void CRingDlg::OnBnClickedOk()
{
m_ring.Play(_T("msg.wav"));
}
有点怀疑你文件路径是否正确。 比如我上面这个程序,从vs运行时,msg.wav要和工程目录一样。直接双击运行,msg.wav要和exe目录一样。
#include <Vfw.h>
#pragma comment(lib,"vfw32.lib")
class Ring
{
public:
bool Init(HWND hwnd);
void Play();
void Stop();
void Destroy();
private:
std::wstring ring_;
HWND hwnd_;
};
bool Ring::Init( HWND hwnd )
{
ring_ = L"c:\\test.mp3";
hwnd_ = MCIWndCreateW(hwnd, NULL, WS_POPUP | MCIWNDF_NOERRORDLG, NULL);
if(hwnd_ == NULL)
{
DWORD err = GetLastError();
return false;
}
else
return true;
}
void Ring::Play()
{
if(hwnd_ == NULL)
return;
DWORD ret = MCIWndOpen(hwnd_, ring_.c_str(), 0);
if(ret == 0)
MCIWndPlay(hwnd_);
else
{
DWORD err = GetLastError();
}
}
void Ring::Stop()
{
if(hwnd_ != NULL)
MCIWndStop(hwnd_);
}
void Ring::Destroy()
{
if(hwnd_ != NULL)
MCIWndDestroy(hwnd_);
}
sndPlaySound("msg.wav",SND_ASYNC);
我的程序里面就这一行代码播放的声音,成功播放。#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
int main(int argc, char *argv[])
{
mciSendString(TEXT("open let it go.mp3 alias mysong"), NULL, 0, NULL);
mciSendString(TEXT("play MySong"), NULL, 0, NULL);
Sleep(500000);
return 0;
}
我是按照百度百科的例子写得,难道可以直接写open let it go.mp3吗,还没写目录啊,具体怎么改啊