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

📄 playwnddlg.h

📁 这是我写的一个DSHOW用FFDSHOW解码 播放一个AVI文件小例子 欢迎跟初学者一起探讨 高手可以无视
💻 H
字号:
// PlayWndDlg.h : 头文件
//

#pragma once

#include "stdafx.h"
#include <initguid.h>


// CyberLink H.264/AVC Decoder (PDVD8){C16541FF-49ED-4DEA-9126-862F57722E31}
DEFINE_GUID(CLSID_FFdshowFilter,
0x04FE9017, 0xF873, 0x410E, 0x87, 0x1E, 0xAB, 0x91, 0x66, 0x1A, 0x4E, 0xF7);

// MPC - Avi Splitter{9736D831-9D6C-4E72-B6E7-560EF9181001}
DEFINE_GUID(CLSID_AviSpliter,
0x1B544C20, 0xFD0B, 0x11CE, 0x8C, 0x63, 0x00, 0xAA, 0x00, 0x44, 0xB5, 0x1E);
// {78766964-0000-0010-8000-00AA00389B71}
DEFINE_GUID(CLSID_VMRRenderer,
0x51B4ABF3, 0x748F, 0x4E3B, 0xA2, 0x76, 0xC8, 0x28, 0x33, 0x0E, 0x92, 0x6A);

// {78766964-0000-0010-8000-00AA00389B71}
DEFINE_GUID(CLSID_AviDecoder,
0x78766964, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71);

DEFINE_GUID(CLSID_CoreAvcDecoder,
0x09571A4B, 0xF1FE, 0x4C60, 0x97, 0x60, 0xDE, 0x6D, 0x31, 0x0C, 0x7C, 0x31);

// CPlayWndDlg 对话框
class CPlayWndDlg : public CDialog

{
// 构造
public:
	CPlayWndDlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = IDD_PLAYWND_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持
    virtual BOOL DestroyWindow();

// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP();

    //和媒体控制相关的成员变量
    afx_msg HRESULT OnGraphNotify(WPARAM wParam,LPARAM lParam);
private:
    IGraphBuilder *m_pGraph; //IGraphBuilder 接口提供了生成Filter Graph相//关的方法
    IMediaControl *m_pMediaControl;
    //IMediaControl 接口提供了控制流经Filter //Graph数据流的相关方法

    IMediaEventEx *m_pEvent; 
    //IMediaEventEx 继承自IMediaEvent,提供了从
    //Filter Graph 管理器获取事件消息的方法
    HRESULT GetUnconnectedPin(IBaseFilter *pFileter, PIN_DIRECTION PinDir, IPin **ppPin);
    HRESULT ConnectFilters( IGraphBuilder *pGraph,  IBaseFilter *pSrc, IBaseFilter *pDest);
    HRESULT ConnectFilters( IGraphBuilder *pGraph, IPin *pOut, IBaseFilter *pDest);
    IMediaSeeking *m_pMediaSeeking; //IMediaSeeking 提供了控制流的播放位置和播放//速度的方法
    CString m_strMediaFile; //当前播放的媒体文件的名称
    BOOL m_isPlaying; //当前的播放状态

private:
    void MoveVideoWindow(void);
    void CleanUp(void);
    BOOL Stop(void);
    BOOL Play(void);
public:

    afx_msg void OnBnClickedBrowseButton();
    afx_msg void OnBnClickedPlayButton();
    afx_msg void OnBnClickedPauseButton();
    afx_msg void OnBnClickedCancel();
};

⌨️ 快捷键说明

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