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

📄 cdplayer.h

📁 游戏音频程序设计-Beginning.Game.Audio.Programming
💻 H
字号:
// CDPlayer.h: interface for the CCDPlayer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CDPLAYER_H__59990C98_8CB5_4667_BF8C_DC0064E0EB89__INCLUDED_)
#define AFX_CDPLAYER_H__59990C98_8CB5_4667_BF8C_DC0064E0EB89__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <windows.h>
#include <mmsystem.h>

#include <vector>
#include <string>

namespace AudioEngine {

class CTrackMinSecFrame 
{
public:
  CTrackMinSecFrame() { m_Track = 0; m_Minute = 0; m_Second = 0; m_Frame = 0; }
  virtual ~CTrackMinSecFrame() { }
  int m_Track;
  int m_Minute;
  int m_Second;
  int m_Frame;
  CTrackMinSecFrame &operator=(DWORD dw) { 
    m_Track = MCI_TMSF_TRACK(dw);
    m_Minute = MCI_TMSF_MINUTE(dw);
    m_Second = MCI_TMSF_SECOND(dw);
    m_Frame = MCI_TMSF_FRAME(dw);
    return(*this);
  }
  operator DWORD() { return(MCI_MAKE_TMSF(m_Track, m_Minute, m_Second, m_Frame)); }
};

class CCDDeviceInfo
{
public:
  char m_DriveLetter;
  std::string m_Description;
  std::string m_CDID;
  std::string m_CDProductCode;
};

class CCDPlayer  
{
public:
  CCDPlayer();
	virtual ~CCDPlayer();

  void Init(HWND hwnd, char driveletter = 0);
  void UnInit();

  void Play(int track);
  bool IsPlaying();
  bool IsPaused();

  void Stop();
  void Pause();
  void Resume();
  void OpenCDDoor();
  void CloseCDDoor();
  bool IsCDInDrive();

  CTrackMinSecFrame GetCurrentPos();
  int GetTrackLength(int track);
  int GetNumTracks();

  static std::vector<CCDDeviceInfo> GetAvailableDevices();

protected:
  bool m_InitGood;
  bool m_Paused;
  CTrackMinSecFrame m_PausedPos;
  static void HandleError(MCIERROR err);
  HWND m_hWnd;
  DWORD m_DeviceID;
};

} // namespace

#endif // !defined(AFX_CDPLAYER_H__59990C98_8CB5_4667_BF8C_DC0064E0EB89__INCLUDED_)

⌨️ 快捷键说明

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