网页功能: 加入收藏 设为首页 网站搜索  
DirectShow的中文资料之控制视频回放窗口
发表日期:2007-01-18作者:[转贴] 出处:  

主要讲解如何控制视频回放窗口,所有有些东西没有说,你可以参考"一.播放影片"中的代码。
需要的头文件:
#include <windows.h>
#include <mmsystem.h>
#include <streams.h>

定义一个窗口消息和HELPER_RELEASE 宏。
#define WM_GRAPHNOTIFY    WM_USER+13
#define HELPER_RELEASE(x) { if (x) x->Release(); x = NULL; }

申明变量:
HWND      ghApp;
HINSTANCE ghInst;
HRESULT   hr;
LONG      evCode;
LONG      evParam1;
LONG      evParam2;
RECT      grc;

参数的含义和"一.播放影片"的一样,唯一要说明的是grc,将保存父窗口的客户区。

申明和初始化必须的接口。由于接口的索引值是自动的加1,所以你不要调用IUnknown::AddRef方法(如果你觉得陌生,你可以参考综述篇的"一、DirectX和部件对象模型COM")。
IGraphBuilder *pigb  = NULL;
IMediaControl *pimc  = NULL;
IMediaEventEx *pimex = NULL;
IVideoWindow  *pivw  = NULL;

定义一个函数:szFile参数是播放的媒体文件名
void PlayMovieInWindow (LPCTSTR szFile)
{

 
实例化一个filter graph manager。
    hr = CoCreateInstance(CLSID_FilterGraph,
                          NULL,
                          CLSCTX_INPROC_SERVER,
                          IID_IGraphBuilder,
                          (void **)&pigb);

查询IMediaControl接口(提供run,pause and stop methods),IMediaEventEx接口(你可以接收事件响应),IVideoWindow接口。
    pigb->QueryInterface(IID_IMediaControl, (void **)&pimc);
    pigb->QueryInterface(IID_IMediaEventEx, (void **)&pimex);
    pigb->QueryInterface(IID_IVideoWindow, (void **)&pivw);

让filter graph manager建立filter graph去渲染输入文件。现在还没播放文件(当你用run函数播放时,filter graph会自动渲染输入文件的媒体类型,你不必指定渲染过滤器)。
    hr = pigb->RenderFile(wFile, NULL);
 
设置回放窗口的句柄:
    pivw->put_Owner((OAHWND)ghApp);

设置视频窗口的风格。这步很重要,你必须指定WS_CHILD, WS_CLIPCHILDREN, and WS_CLIPSIBLINGS 标志。
    pivw->put_WindowStyle(WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);

得到父窗口的客户区。
    GetClientRect(ghApp, &grc);

在父窗口的客户区设置回放窗口的位置。在这里,回放窗口填满了客户区,当然你也可以取其一部分。如果播放的视频比这小,他会自动的伸展以适应位置的大小,如果比这大,他会缩小来适应。
    pivw->SetWindowPosition(grc.left, grc.top, grc.right, grc.bottom);

开始播了:
    hr = pimc->Run();

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 DirectShow的中文资料之控制视频回放窗口
本类热点文章
  DirectShow应用——支持Windows Media格..
  DirectShow PIN 連接教學
  游戏UI设计1
  PSD格式文件的读取
  将RGB值转换为灰度值的简单算法
  貼圖 filtering 與 MIP map 簡介
  读取万能图片以及DShow的另类用法
  TGA图像文件格式资料
  DirectShow初探
  PNG格式
  DirectShow应用——支持DVD播放
  DirectShow的中文资料之建立一个捕捉程序
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.004