📄 midobj.cpp
字号:
#include"midobj.h"
DWORD CMidi::Play(HWND hwnd,char* MidiFile)
{
// 开启Midi的硬体装置,我们使用一般内定值
mciOpenParms.lpstrDeviceType = "sequencer";
//这个叁数就是要播放的MIDI档案名称
mciOpenParms.lpstrElementName = MidiFile;
// 使用Message的方式来播放MIDI而不是STRING的方式
if (dwReturn = mciSendCommand(NULL, MCI_OPEN,
MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &mciOpenParms))return (dwReturn);
// The device opened successfully; get the device ID.
wDeviceID = mciOpenParms.wDeviceID;
// Check if the output port is the MIDI mapper.
mciStatusParms.dwItem = MCI_SEQ_STATUS_PORT;
if (dwReturn = mciSendCommand(wDeviceID, MCI_STATUS,
MCI_STATUS_ITEM, (DWORD)(LPVOID) &mciStatusParms))
{
mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
return (dwReturn);
}
// 为了达成重复播放的目的,必须让我们的程式能够接收到
// MM_MCINOTIFY的讯息,这个函示呼叫的方式,就是传递
// WM_PLAY讯息给装置,叫他开始播放。
mciPlayParms.dwCallback = (DWORD) hwnd;
if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY,
(DWORD)(LPVOID) &mciPlayParms))
{
mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
return (dwReturn);
}
return (0L);
};
void CMidi::Replay()
{
mciSendCommand(wDeviceID, MCI_SEEK,MCI_SEEK_TO_START, NULL);
mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)(LPVOID) &mciPlayParms);
}
void CMidi::Stop()
{
mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
}
DWORD CMidi::ChangePlay(char* MidiFile)
{
mciOpenParms.lpstrElementName = MidiFile;
if (dwReturn = mciSendCommand(NULL, MCI_OPEN,
MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,
(DWORD)(LPVOID) &mciOpenParms))return (dwReturn);
return (0L);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -