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

📄 kldshow.h

📁 一个个人开发的rpg游戏<亚特兰蒂斯传奇>的源码
💻 H
字号:
//能播放很多媒体的类,mp3,wav,mid,avi,mpeg,qt,mov,asf,wma,wmv,....
//创建于2003/5/24 by Kylinx
//最后修改于2003/5/24
//使用方法举例
//KGDShow*pShow=KGDShow::KGDShowCreate();
//if(!pShow)
//	error();
//pShow->LoadMedia(szMediaFile);//szMediaFile是媒体文件名
//pShow->Play(GetActiveWindow());
//while(pShow->IsPlaying())
// do your things...;
//pShow->Release();
#include<dshow.h>
#include<windows.h>
#define UM_GRAPHNOTIFY								WM_USER+0x99
#pragma comment(lib,"strmiids")
class KGDShow
{
public:
	virtual ~KGDShow();
	static KGDShow* KGDShowCreate();
	virtual bool LoadMedia(char*szMediaFile)=0;							//读取一个媒体文件
	virtual bool Pause()=0;												//暂停
	virtual bool Continue()=0;											//从暂停点播放
	virtual bool Reset()=0;												//从新定位到开始点
	virtual bool IsPlaying()=0;											//是否正在播放
	virtual bool StopAndRelease()=0;									//停止并释放
	virtual bool Play(HWND hWnd,BOOL bLoop=true)=0;						//在HWND这个窗口播放
	virtual char*GetErrorMessage()=0;									//得到错误信息
	virtual bool HandleGraphEvent()=0;
	virtual void Release()=0;											//释放
};
class KGDShowInstance:private KGDShow
{
	IGraphBuilder* m_pGraphBuilder;
	IMediaControl* m_pMediaControl;
	IVideoWindow* m_pVideoWindow;
	IMediaEventEx*m_pMediaEvent;
	IMediaSeeking*m_pMediaSeeking;
	char m_szErrMsg[1024];
	BOOL m_bAudioFile;
	BOOL m_bLoaded;
	BOOL m_bLoop;
	DWORD m_dwState;
	LONGLONG m_llCurrentPos;
	BOOL CheckMediaKinds();
	bool InitDirectShow();
	virtual bool LoadMedia(char*szMediaFile);
	virtual bool Pause();
	virtual bool Continue();
	virtual bool Reset();
	virtual bool IsPlaying();
	virtual bool StopAndRelease();
	virtual bool Play(HWND hWnd,BOOL bLoop=true);
	virtual char*GetErrorMessage();
	virtual bool HandleGraphEvent();
	virtual void Release();
public:
	enum
	{
		MS_NULL=0,
		MS_PLAYING,//MediaState_Playing
		MS_STOP,
		MS_PAUSE
	};
	KGDShowInstance();
	virtual ~KGDShowInstance();
};

⌨️ 快捷键说明

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