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

📄 midobj.cpp

📁 经典飞机游戏的源代码 dx实现
💻 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 + -