📄 kldshow.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 + -