• 大小: 88KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: 其他
  • 标签:

资源简介

一个非常好的学习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  AviPlayerDemo\CDXGraph.cpp

     文件       1629  2008-06-13 09:22  AviPlayerDemo\CDXGraph.h

     文件       1938  2007-05-23 17:12  AviPlayerDemo\nicesliderctrl.cpp

     文件       1399  2007-04-29 08:46  AviPlayerDemo\nicesliderctrl.h

     文件      36016  2008-07-02 23:06  AviPlayerDemo\ppz.aps

     文件       1431  2008-07-02 23:08  AviPlayerDemo\ppz.clw

     文件       2476  2007-04-18 09:11  AviPlayerDemo\ppz.cpp

     文件       4434  2007-04-28 11:09  AviPlayerDemo\ppz.dsp

     文件        529  2007-04-16 17:03  AviPlayerDemo\ppz.dsw

     文件     172079  2008-07-02 23:06  AviPlayerDemo\ppz.exe

     文件       1322  2007-04-27 13:34  AviPlayerDemo\ppz.h

     文件     173056  2008-07-02 23:08  AviPlayerDemo\ppz.ncb

     文件      61952  2008-07-02 23:08  AviPlayerDemo\ppz.opt

     文件       2054  2008-07-02 23:06  AviPlayerDemo\ppz.plg

     文件       5540  2008-07-02 23:06  AviPlayerDemo\ppz.rc

     文件      33792  2007-05-10 17:05  AviPlayerDemo\ppz.vcb

     文件      37888  2007-05-10 17:05  AviPlayerDemo\ppz.vco

     文件        353  2007-05-08 17:33  AviPlayerDemo\ppz.vcw

     文件      10655  2008-07-02 23:06  AviPlayerDemo\ppzDlg.cpp

     文件      11637  2008-06-13 09:31  AviPlayerDemo\ppzDlg.cpp.bak

     文件       2381  2008-07-02 23:06  AviPlayerDemo\ppzDlg.h

     文件       3525  2007-04-16 17:03  AviPlayerDemo\ReadMe.txt

     文件       1078  2008-06-12 12:48  AviPlayerDemo\res\ppz.ico

     文件        395  2007-04-16 17:03  AviPlayerDemo\res\ppz.rc2

     文件       1141  2008-06-12 14:38  AviPlayerDemo\resource.h

     文件        205  2007-04-16 17:03  AviPlayerDemo\StdAfx.cpp

     文件       1056  2007-04-17 14:10  AviPlayerDemo\StdAfx.h

     目录          0  2008-07-02 22:47  AviPlayerDemo\Debug

     目录          0  2008-07-02 23:08  AviPlayerDemo\res

     目录          0  2008-07-02 23:08  AviPlayerDemo

............此处省略4个文件信息

评论

共有 条评论

相关资源