资源简介
一个非常好的学习AVI播放器编程的代码。
代码片段和文件信息
// CDXGraph.cpp: implementation of the CDXGraph class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
//#include “ppz.h“////////////////注意
#include //////////////注意
#include “CDXGraph.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern int i;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDXGraph::CDXGraph()
{
mGraph = NULL;
mMediaControl = NULL;
mEvent = NULL;
mBasicVideo = NULL;
mBasicAudio = NULL;
mVideoWindow = NULL;
mSeeking = NULL;
mobjectTableEntry = 0;
}
CDXGraph::~CDXGraph()
{
Release();
}
void CDXGraph::AddToobjectTable(void)
{
IMoniker * pMoniker = 0;
IRunningobjectTable * objectTable = 0;
if (SUCCEEDED(GetRunningobjectTable(0 &objectTable)))
{
WCHAR wsz[256];
// 将数值按照指定的格式转化为字符串:
wsprintfW(wsz L“FilterGraph %08p pid %08x“ (DWORD_PTR)mGraph GetCurrentProcessId());
HRESULT hr = CreateItemMoniker(L“!“ wsz &pMoniker);
if (SUCCEEDED(hr))
{
hr = objectTable->Register(0 mGraph pMoniker &mobjectTableEntry);
pMoniker->Release();
}
objectTable->Release();
}
}
bool CDXGraph::Create(void)
{ // 如果没有创建mGraph指针创建一个并初始化
if (!mGraph)
{
if (SUCCEEDED(CoCreateInstance(CLSID_FilterGraph NULL CLSCTX_INPROC_SERVER
IID_IGraphBuilder (void **)&mGraph))) // 创建未经初始化的mGraph
{
AddToobjectTable(); // 添加进去
return QueryInterfaces();
}
mGraph = 0;
}
return false;
}
//得到当前的position(换成s)给*outPosition
bool CDXGraph::GetCurrentPosition(double *outPosition)
{
if (mSeeking)//类IMediaSeeking
{
__int64 position = 0;
if (SUCCEEDED(mSeeking->GetCurrentPosition(&position)))
{
*outPosition = ((double)position) / 10000000.;
return true;
}
}
return false;
}
//得到持续时间Duration(换成s)给*outDuration
bool CDXGraph::GetDuration(double *outDuration)
{
if (mSeeking)
{
__int64 length = 0;
if (SUCCEEDED(mSeeking->GetDuration(&length)))
{
*outDuration = ((double)length) / 10000000.;
return true;
}
}
return false;
}
bool CDXGraph::GetFullScreen(void)
{
if (mVideoWindow)
{
long fullScreenMode = OAFALSE;
mVideoWindow->get_FullScreenMode(&fullScreenMode);
return (fullScreenMode == OATRUE);
}
return false;
}
bool CDXGraph::GetStopPosition(double *outPosition)
{
if (mSeeking)
{
__int64 position = 0;
if (SUCCEEDED(mSeeking->GetStopPosition(&position)))
{
*outPosition = ((double)position) / 10000000.;
return true;
}
}
return false;
}
bool CDXGraph::IsPaused(void)
{
if (mGraph && mMediaControl)
{
OAFilterState state = State_Stopped;
if (SUCCEEDED(mMediaControl->GetState(10 &state)))
{
return state == State_Paused;
}
}
return false;
}
bool C
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 13313 2008-06-12 16:18 AviPla
文件 1629 2008-06-13 09:22 AviPla
文件 1938 2007-05-23 17:12 AviPla
文件 1399 2007-04-29 08:46 AviPla
文件 36016 2008-07-02 23:06 AviPla
文件 1431 2008-07-02 23:08 AviPla
文件 2476 2007-04-18 09:11 AviPla
文件 4434 2007-04-28 11:09 AviPla
文件 529 2007-04-16 17:03 AviPla
文件 172079 2008-07-02 23:06 AviPla
文件 1322 2007-04-27 13:34 AviPla
文件 173056 2008-07-02 23:08 AviPla
文件 61952 2008-07-02 23:08 AviPla
文件 2054 2008-07-02 23:06 AviPla
文件 5540 2008-07-02 23:06 AviPla
文件 33792 2007-05-10 17:05 AviPla
文件 37888 2007-05-10 17:05 AviPla
文件 353 2007-05-08 17:33 AviPla
文件 10655 2008-07-02 23:06 AviPla
文件 11637 2008-06-13 09:31 AviPla
文件 2381 2008-07-02 23:06 AviPla
文件 3525 2007-04-16 17:03 AviPla
文件 1078 2008-06-12 12:48 AviPla
文件 395 2007-04-16 17:03 AviPla
文件 1141 2008-06-12 14:38 AviPla
文件 205 2007-04-16 17:03 AviPla
文件 1056 2007-04-17 14:10 AviPla
目录 0 2008-07-02 22:47 AviPla
目录 0 2008-07-02 23:08 AviPla
目录 0 2008-07-02 23:08 AviPla
............此处省略4个文件信息
评论
共有 条评论