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

📄 mci.h

📁 C++编程实践与技巧一书各章节的源码
💻 H
字号:
//////////////////////////////////////////////////////////////////////////
// Mci.h : header file
//
//该头文件提供对MCI设备的支持

#if !defined(AFX_MCI_H_098R22G3234_23453_235124_123A44HQ13451_INCLUDED_)
#define AFX_MCI_H_098R22G3234_23453_235124_123A44HQ13451_INCLUDED_

#include <mmsystem.h>

class CMsf {
public:
	CMsf() {
		m_dwMsf = 0;
	}

	CMsf(DWORD dwMsf) {		
		m_dwMsf = dwMsf;
	}

	CMsf(BYTE minute, BYTE second, BYTE frame) {		
		m_dwMsf = MCI_MAKE_MSF(minute, second, frame);
	}
	
	operator DWORD() const {return m_dwMsf;}
	
	BYTE GetMinute() const { return MCI_MSF_MINUTE(m_dwMsf); }
	BYTE GetSecond() const { return MCI_MSF_SECOND(m_dwMsf); }
	BYTE GetFrame() const { return MCI_MSF_FRAME(m_dwMsf); }

protected:
	DWORD m_dwMsf;
};

class CTmsf {
public:
	CTmsf() {
		m_dwTmsf = 0;
	}

	CTmsf(DWORD dwTmsf) {		
		m_dwTmsf = dwTmsf;
	}

	CTmsf(BYTE track, BYTE minute, BYTE second, BYTE frame) {		
		m_dwTmsf = MCI_MAKE_TMSF(track, minute, second, frame);
	}
	
	operator DWORD() const {return m_dwTmsf;}

	BYTE GetTrack() const { return MCI_TMSF_TRACK(m_dwTmsf); }
	BYTE GetMinute() const { return MCI_TMSF_MINUTE(m_dwTmsf); }
	BYTE GetSecond() const { return MCI_TMSF_SECOND(m_dwTmsf); }
	BYTE GetFrame() const { return MCI_TMSF_FRAME(m_dwTmsf); }

protected:
	DWORD m_dwTmsf;
};

//////////////////////////////////////////////////////////////////////////
// CMciDevice是所有MCI设备的基类
//
class CMciDevice {
public:	
	//一般模式
	static const DWORD ModeNotReady;
	static const DWORD ModePause;
	static const DWORD ModePlay;
	static const DWORD ModeStop;
	static const DWORD ModeOpen;
	static const DWORD ModeRecord;
	static const DWORD ModeSeek;
	//一般状态项
	static const DWORD StatusReady;
	static const DWORD StatusMediaPresent;
	static const DWORD StatusMode;
	static const DWORD StatusNumberOfTracks;
	// 一般使能项
	static const DWORD GetdevcapsCanEject;
	static const DWORD GetdevcapsCanPlay;
	static const DWORD GetdevcapsCanRecord;
	static const DWORD GetdevcapsCanSave;
	static const DWORD GetdevcapsCompound;
	static const DWORD GetdevcapsDeviceType;	
	static const DWORD GetdevcapsHasAudio;
	static const DWORD GetdevcapsHasVideo;
	static const DWORD GetdevcapsUsesFiles;
	
	//设备信息
	static const DWORD InfoProduct;

	// 设备类型
	static const DWORD DevtypeAnimation;
	static const DWORD DevtypeCdaudio;
	static const DWORD DevtypeDat;
	static const DWORD DevtypeDigitalvideo;
	static const DWORD DevtypeOther;
	static const DWORD DevtypeOverlay;
	static const DWORD DevtypeScanner;
	static const DWORD DevtypeSequencer;
	static const DWORD DevtypeVcr;
	static const DWORD DevtypeVideodisc;
	static const DWORD DevtypeWaveaudio;

	

	// Construction/Destruction
	CMciDevice();
	~CMciDevice();

	// Open/Close: All derived classes must implement them
	virtual DWORD Open(DWORD dwDeviceType, BOOL bShareable = FALSE);
	virtual DWORD Open(LPCSTR lpstrName, BOOL bShareable = FALSE);	
	virtual DWORD Close();

	// Attaches the device to a MCI device already opened
	inline void  Attach(UINT wDeviceID);
	
	// 取得设备ID
	MCIDEVICEID GetDeviceID() const;
	
	// 关闭所有MCI设备
	static  DWORD CloseAll();
	
	// 接收设备静态信息
	DWORD GetDevCaps(DWORD dwDevcaps, BOOL bItem = FALSE);
	
	// 接收设备状态项
	virtual DWORD GetStatus(DWORD dwStatusItem);
	
	//接收设备模式
	virtual DWORD GetMode();

	// 从设备中接收字符串信息
	virtual DWORD GetInfo(DWORD dwInfo, LPSTR lpstrReturn, DWORD dwRetSize);

	//取得或设置回调窗口
	HWND GetCallbackHwnd() const;
	void SetCallbackWnd(CWnd* pWnd);
	void SetCallbackWnd(HWND hWnd);
	
	//设置MCI错误报告开关(on/off)
	void ReportErrors(BOOL bReport = TRUE);

protected:
	// mciSendCommand with error handling
	DWORD SendCommand(UINT uMsg, DWORD fdwCommand, DWORD dwParam);
		
	// MCI error report
	static void ShowError(DWORD dwError);
	MCIERROR GetLastError() const;

// 数据成员
protected:
	MCIDEVICEID	m_wDeviceID;					//设备ID
	HWND		m_hMainWnd;						// 回调窗口句柄

private:
	MCIERROR	m_dwLastError;					//最后错误码
	BOOL		m_bReportErrors;				//是否汇报MCI错误标志	
};

#endif // !defined(AFX_MCI_H_098R22G3234_23453_235124_123A44HQ13451_INCLUDED_)

⌨️ 快捷键说明

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