mymidi.cpp
来自「Visual_C++.NET实用编程百例」· C++ 代码 · 共 98 行
CPP
98 行
#include "StdAfx.h"
#include ".\mymidi.h"
CMyMidi::CMyMidi(void)
{
}
CMyMidi::~CMyMidi(void)
{
}
// 打开设备
DWORD CMyMidi::Open(CString fileName)
{
DWORD dwFlags=MCI_OPEN_TYPE|MCI_OPEN_ELEMENT;
MCI_OPEN_PARMS mciOpenParms;
MCI_STATUS_PARMS mciStatusParms;
MCI_SEQ_SET_PARMS mciSeqSetParms;
mciOpenParms.lpstrDeviceType = "sequencer";
mciOpenParms.lpstrElementName = (LPCSTR)fileName;
DWORD m_return;
if(m_return=mciSendCommand(NULL,MCI_OPEN,dwFlags,(DWORD)(LPVOID)&mciOpenParms))
return m_return;
m_Status=Opened;
m_wDeviceID=mciOpenParms.wDeviceID ;
mciStatusParms.dwItem = MCI_SEQ_STATUS_PORT;
if(m_return = mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms))
{
mciSendCommand(m_wDeviceID,MCI_CLOSE,0,NULL);
m_Status=Closed;
return m_return;
}
return m_return;
}
// //关闭设备
void CMyMidi::Close(void)
{
mciSendCommand(m_wDeviceID,MCI_CLOSE,0,NULL);
m_Status = Closed;
}
// //播放音乐
DWORD CMyMidi::Play(HWND hWndNotify, CString fileName)
{
DWORD m_return;
MCI_PLAY_PARMS mciPlayParms;
mciPlayParms.dwCallback =(DWORD)hWndNotify;
mciPlayParms.dwFrom=0;
if(m_Status==Closed)
Open(fileName);
if(m_return=mciSendCommand(m_wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciPlayParms))
{
MessageBox(hWndNotify,"播放失败了",NULL,MB_OK);
mciSendCommand(m_wDeviceID,MCI_CLOSE,0,NULL);
m_Status=Closed;
return m_return;
}
m_Status=Played;
return 0L;
}
// //停止播放
void CMyMidi::Pause(void)
{
MCI_PLAY_PARMS PlayParms;
if(mciSendCommand(m_wDeviceID,MCI_PAUSE,MCI_NOTIFY,(DWORD)(LPVOID)&PlayParms)==0)
m_Status=Paused;
}
// //暂停播放
void CMyMidi::Stop(void)
{
mciSendCommand(m_wDeviceID,MCI_STOP,NULL,NULL);
m_Status=Stoped;
Close();
}
void CMyMidi::Resume(void)
{
MCI_GENERIC_PARMS ResumeParms;
if(mciSendCommand(m_wDeviceID,MCI_RESUME,MCI_WAIT,(DWORD)(LPVOID)&ResumeParms)==0)
m_Status = Played;
}
// 获取设备信息
DWORD CMyMidi::GetStatus(DWORD dwItem, HWND m_hWnd)
{
MCI_STATUS_PARMS mciStatusParms;
mciStatusParms.dwCallback =(DWORD)m_hWnd;
mciStatusParms.dwItem = dwItem;
mciStatusParms.dwReturn=0;
DWORD dwReturn;
dwReturn=mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);
return mciStatusParms.dwReturn ;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?