用mciSendCommand实现的音乐播放类
2015-01-03 10:43
127 查看
本文将提供用mciSendCommand实现的简单音乐播放类
头文件和CPP的实现如下:
.h
.cpp
该类实现了音乐的播放,暂停,恢复,停止等功能。
头文件和CPP的实现如下:
.h
#pragma once #include "mmsystem.h" #define WAVE_PAUSE 1 #define WAVE_RESUME 2 class CPlayWave { public: CPlayWave(void); ~CPlayWave(void); DWORD InitDevice(); DWORD TerminalDevice(); DWORD Play(HWND hWnd, LPCTSTR pFileName); DWORD Stop(); DWORD Pause(); protected: MCIDEVICEID m_DeviceID; MCIDEVICEID m_ElementID; };
.cpp
#include "StdAfx.h" #include "PlayWave.h" #include <Digitalv.h> #pragma comment(lib, "winmm.lib") CPlayWave::CPlayWave(void) { m_DeviceID = 0; m_ElementID = 0; InitDevice(); } CPlayWave::~CPlayWave(void) { if (m_ElementID) { Stop(); } if (m_DeviceID) { TerminalDevice(); } } DWORD CPlayWave::InitDevice() { DWORD dwResult = 0; if (m_DeviceID == 0) { MCI_OPEN_PARMS mciInitParms; mciInitParms.lpstrDeviceType = (LPTSTR)MCI_DEVTYPE_WAVEFORM_AUDIO; dwResult = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_WAIT, (DWORD)(LPVOID)&mciInitParms); m_DeviceID = mciInitParms.wDeviceID; } return dwResult; } DWORD CPlayWave::TerminalDevice() { DWORD dwResult = 0; if (m_DeviceID) { dwResult = mciSendCommand(m_DeviceID, MCI_CLOSE, NULL, NULL); } m_DeviceID = 0; return dwResult; } DWORD CPlayWave::Play(HWND hWnd, LPCTSTR pFileName) { MCI_OPEN_PARMS mciOpenParms; memset(&mciOpenParms, 0, sizeof(MCI_OPEN_PARMS)); mciOpenParms.lpstrElementName = pFileName; DWORD dwResult = 0; dwResult = mciSendCommand(m_DeviceID, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)(LPVOID)&mciOpenParms); if (!dwResult) { m_ElementID = mciOpenParms.wDeviceID; MCI_PLAY_PARMS mciPlayParms; mciPlayParms.dwCallback = (DWORD)hWnd; dwResult = mciSendCommand(m_ElementID, MCI_PLAY, MCI_DGV_PLAY_REPEAT/*MCI_NOTIFY*/, (DWORD)(LPVOID)&mciPlayParms); } return dwResult; } DWORD CPlayWave::Stop() { DWORD dwResult = 0; if (m_ElementID) { dwResult = mciSendCommand(m_ElementID, MCI_CLOSE, NULL, NULL); m_ElementID = 0; } return dwResult; } DWORD CPlayWave::Pause() { DWORD dwResult = 0; static BOOL bPlayMode = TRUE; if (m_ElementID) { if (bPlayMode) { dwResult = mciSendCommand(m_ElementID, MCI_PAUSE, NULL, NULL); dwResult = WAVE_PAUSE; } else { dwResult = mciSendCommand(m_ElementID, MCI_RESUME, NULL, NULL); dwResult = WAVE_RESUME; } bPlayMode = !bPlayMode; } return dwResult; }
该类实现了音乐的播放,暂停,恢复,停止等功能。
相关文章推荐
- 如何实现space多个音乐自动连续播放
- DerectX7实现播放音乐效果
- 用mciSendString()实现音乐播放
- 用javascript实现音乐播放
- 使用mciSendCommand循环播放音乐
- 网页中自动连续播放音乐文件的实现
- Android之MediaPlayer播放音乐并实现进度条实例
- 解决关于如何实现锁屏后继续播放音乐的问题
- 用mciSendString()实现音乐播放
- Visual Studio 2010 使用Windows Media Player控件实现播放音乐视频
- 网页中播放音乐的实现方法代码
- 网页中播放音乐的实现方法代码
- 如何实现拨通电话,IVR提示,转人工按1,转传真按2,繁忙时自动转到队列,并播放音乐,并提示按1继续等待,按2退出。
- C# mciSendString()实现循环播放音乐
- 纯 Java 实现播放 mp3 音乐
- DerectX7实现播放音乐效果
- 网页中播放音乐的实现方法代码
- 实现播放音乐的几种方法
- 解决关于如何实现锁屏后继续播放音乐的问题
- 安卓实现天天动听音乐播放歌词悬浮哦(转)