⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmidi.cpp

📁 打飞机的游戏
💻 CPP
字号:
/*
 * Midi的应用播放函数
 * 编辑: jzZ 2000,05
 */

#include "CMidi.h"

/*播放
 *打开设备并且开始播放midi文件
 *
 */
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);

    // 打开设备成功,得到设备 ID.
    wDeviceID = mciOpenParms.wDeviceID;
    // 检测输出是否是 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);
}



/*重新播放
 *
 *重播一个已经播放的midi
 */
void CMidi::Replay()
{
        mciSendCommand(wDeviceID, MCI_SEEK,MCI_SEEK_TO_START, NULL);
        mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)(LPVOID) &mciPlayParms);
}


/*停止播放
 *停止正在播放的MIDI,并且销毁设备关联
 */
void CMidi::Stop()
{
    mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
}


/*播放另外一首MIDI
 *在已经用Play启动MIDI播放后,改变播放的文件
 */
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);
}

/*销毁器
 *自动调用停止函数
 */
CMidi::~CMidi()
{
	Stop();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -