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

📄 revplaymdichildwnd.h

📁 VC++视频开发实例集锦(包括“远程视频监控”"语音识别系统"等13个经典例子)
💻 H
字号:
#if !defined(AFX_REVPLAYMDICHILDWND_H__32C9A3E1_3AC9_11D4_883E_0000210A0111__INCLUDED_)
#define AFX_REVPLAYMDICHILDWND_H__32C9A3E1_3AC9_11D4_883E_0000210A0111__INCLUDED_

	// Added by ClassView
#include "WaitDlg.h"	// Added by ClassView
#include "winsock2.h"
#include "Mmsystem.h"
//#include "streams.h"
#include "mpegdef.h"
#include "mpgutil.h"


#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// RevPlayMDIChildWnd.h : header file
//

class CMemStream;
class CMemReader;

#define MPEGWIDTH	352
#define MPEGHEIGHT	288

#define HELPER_RELEASE(x) {if(x) x -> Release(); x = NULL;} // 控件释放
#define CHECK_ERROR(x, idFailMsg) if (FAILED(hr = (x))) { if (idFailMsg) MessageBox(idFailMsg); return -1;}

/////////////////////////////////////////////////////////////////////////////
// CRevPlayMDIChildWnd frame

struct COnCmdMsg
{
	int m_nID;
	int m_nCode;
	void* m_pExtra;
	AFX_CMDHANDLERINFO* m_pHandlerInfo;
};


#define WM_USER_ONCMDMSG (WM_USER + 0x1000)
#define WM_USER_PREPARE_TO_CLOSE (WM_USER + 0x1001)


class CRevPlayMDIChildWnd : public CMDIChildWnd
{
	DECLARE_DYNCREATE(CRevPlayMDIChildWnd)
protected:
      // protected constructor used by dynamic creation
    static CMenu NEAR menu;
// Attributes
public:

// Operations
public:
	CRevPlayMDIChildWnd();     
	BOOL Create(LPCTSTR szTitle,const RECT&rect,CMDIFrameWnd* parent);

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CRevPlayMDIChildWnd)
	public:
	virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
	virtual BOOL DestroyWindow();
	//}}AFX_VIRTUAL

// Implementation
protected:
	virtual ~CRevPlayMDIChildWnd();

	// Generated message map functions
	//{{AFX_MSG(CRevPlayMDIChildWnd)
	afx_msg void OnSize(UINT nType, int cx, int cy);
	//}}AFX_MSG
	afx_msg LRESULT OnPrepareToClose(WPARAM wParam=0, LPARAM lParam=0);
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
// CRevPlayWnd window

class CRevPlayWnd : public CWnd
{
// Construction
public:
	CRevPlayWnd();

// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CRevPlayWnd)
	//}}AFX_VIRTUAL

// Implementation
public:
	BOOL m_Receive;   //表示是否按了Receive菜单
	void StopReceive();

	PBYTE pRevMem[100];    //存放接收的数据,以供DirectShow读取
	PBYTE achInBuf;
	
	
	BOOL m_FirstRead; //是否是第一次接收数据
	BOOL m_Save;      //是否保存接收数据
	BOOL m_Stop;      //停止接收菜单标志      
    BOOL m_RenderOk; //是否Render成功     
   
	int RevLen;            //实际接收数据的长度
    int g_rwIndex;         //DirectShow读取数据数组的标志
    int Block;            
	int rIndex;
	
	int m_LostBlock;
	HMMIO hmmioSave;  //保存数据文件句柄
	WSABUF stWSABuf;  //接收缓冲区
	SOCKET MultiSock;
	char strDestAddr[20];  //组播地址
    int DestPort;         //组播端口
       

	CWaitDlg WaitDlg;	
	
	CMediaType mt;
	CMemStream	*m_pStream;
	CMemReader *m_rdr;
	IVideoWindow  *m_pivw; // 视频窗口
	IFilterGraph  *m_pifg; // 图像过滤
	IGraphBuilder *m_pigb; // 图像建立 
	IMediaControl *m_pimc; // 媒体控制
 	IMediaPosition *m_ppos;
    MPEG_PACKET_DATA PacketData;
	SEQHDR_INFO SeqInfo; 

	
	DWORD Parse(PBYTE Ptr,DWORD dwSize,LONGLONG* llTime);
	void RenderFrom(PBYTE Buf,LPCTSTR File);
	int InitGraph();
	int ReceiveData();
	void InitMultiSock();
	int Connect(HWND hwnd,const char* Addr,short Port,int& sock);
	BOOL Create(LPCTSTR szTitle,long stytle,const RECT&rect, CWnd* parent);
	virtual ~CRevPlayWnd();

	// Generated message map functions
protected:
	//{{AFX_MSG(CRevPlayWnd)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnSave();
	afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
	afx_msg void OnStopReceive();
	afx_msg void OnRevPlay();
	afx_msg void OnUpdateSave(CCmdUI* pCmdUI);
	afx_msg void OnUpdateStopReceive(CCmdUI* pCmdUI);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	//}}AFX_MSG
	afx_msg LRESULT OnDelegatedCmdMsg(WPARAM, LPARAM);
	afx_msg LRESULT OnPrepareToClose(WPARAM wParam, LPARAM lParam);
    afx_msg LRESULT OnConnect(WPARAM wParam,LPARAM lParam);
	afx_msg LRESULT OnRead(WPARAM wParam,LPARAM lParam);
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_REVPLAYMDICHILDWND_H__32C9A3E1_3AC9_11D4_883E_0000210A0111__INCLUDED_)

⌨️ 快捷键说明

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