MCI实现播放器

</pre><pre name="code" class="cpp">VC2005实现的播放器http://download.csdn.net/detail/qaz2549066580/8261195
//  MCI.h
class MCI
{
public:
	MCI(void);
	~MCI(void);
public:
	int  mciOpen(CString);         //打开设备,返回打开设备的ID
	void mciPlay(int);             //播放音乐,传递的参数为mciOpen返回的ID
	void mciClose(int);            //关闭设备
	void mciPause(int);            //暂停,可用mciResume恢复播放
	void mciStop(int);             //停止设备
	void mciResume(int);           //从停止处恢复播放
	void mciSetVolume(int,DWORD);         //设置音量
	void mciSetPos(int,DWORD);            //设置播放位置
	DWORD_PTR mciLength(int);             //获得歌曲长度
	DWORD_PTR mciPosition(int);           //判断歌曲当前播放位置
private:  
	DWORD_PTR length;
};

// MCI.cpp
/*包含下列头文件,使用mciSendCommand函数*/
#include "Mmsystem.h"
#include "Digitalv.h"
#pragma comment(lib,"Winmm.lib")

int MCI::mciOpen(CString filename)
{
	//关闭所有MCI
	mciSendCommand(MCI_ALL_DEVICE_ID, MCI_CLOSE, MCI_WAIT, NULL);
        //打开设备,并传递要播放的文件名filename
	MCI_OPEN_PARMS mciopen;
	mciopen.lpstrElementName =filename;
	mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD_PTR)(&mciopen));
	return mciopen.wDeviceID;  //返回已打开设备的ID
}

void MCI::mciPlay(int  wDeviceID)
{
	MCI_PLAY_PARMS mciplay;
	mciplay.dwFrom =0;    //从开头播放
	mciplay.dwTo =-1;
	mciSendCommand(wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD_PTR)(&mciplay));
}

void MCI::mciClose(int wDeviceID)
{
	MCI_GENERIC_PARMS mciclose;
        mciSendCommand(wDeviceID,MCI_CLOSE,MCI_NOTIFY,(DWORD_PTR)(&mciclose));
}

void MCI::mciPause(int wDeviceID)
{
	MCI_GENERIC_PARMS  mcipause;
	mciSendCommand(wDeviceID,MCI_PAUSE,MCI_NOTIFY,(DWORD_PTR)(&mcipause));
}

void MCI::mciResume(int wDeviceID)
{
	MCI_GENERIC_PARMS mciresume;
	mciSendCommand(wDeviceID,MCI_RESUME,MCI_NOTIFY,(DWORD_PTR)(&mciresume));
}

void MCI::mciSetVolume(int wDeviceID, DWORD volume)
{
	MCI_DGV_SETAUDIO_PARMS mcivolume;
	mcivolume.dwItem=MCI_DGV_SETAUDIO_VOLUME;
	mcivolume.dwValue=volume;
	mciSendCommand(wDeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_ITEM|MCI_DGV_SETAUDIO_VALUE,(DWORD_PTR)(&mcivolume));
}

void MCI::mciSetPos(int wDeviceID,DWORD Pos)
{
	MCI_SEEK_PARMS mciseek;
	mciseek.dwTo=Pos;
        mciSendCommand(wDeviceID,MCI_SEEK,MCI_TO ,(DWORD_PTR)(&mciseek));
}

DWORD_PTR MCI::mciLength(int wDeviceID)
{

	MCI_STATUS_PARMS   statusParms;
	mciSendCommand(wDeviceID,MCI_SEEK,MCI_SEEK_TO_END,NULL);  //设置歌曲当前位置为歌曲结尾
	statusParms.dwItem=MCI_STATUS_POSITION;
	mciSendCommand(wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD_PTR)&statusParms);
        length=statusParms.dwReturn;
	mciSendCommand(wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,NULL);  //设置歌曲当前位置为歌曲开始
	
	return length;

}

DWORD_PTR MCI::mciPosition(int wDeviceID)
{
	MCI_STATUS_PARMS   statusParms;

        statusParms.dwItem=MCI_STATUS_POSITION; 
	mciSendCommand(wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD_PTR)&statusParms);
	return statusParms.dwReturn;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值