revplaymdichildwnd.h
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:5k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #if !defined(AFX_REVPLAYMDICHILDWND_H__32C9A3E1_3AC9_11D4_883E_0000210A0111__INCLUDED_)
  2. #define AFX_REVPLAYMDICHILDWND_H__32C9A3E1_3AC9_11D4_883E_0000210A0111__INCLUDED_
  3. // Added by ClassView
  4. #include "WaitDlg.h" // Added by ClassView
  5. #include "winsock2.h"
  6. #include "Mmsystem.h"
  7. //#include "streams.h"
  8. #include "mpegdef.h"
  9. #include "mpgutil.h"
  10. #if _MSC_VER > 1000
  11. #pragma once
  12. #endif // _MSC_VER > 1000
  13. // RevPlayMDIChildWnd.h : header file
  14. //
  15. class CMemStream;
  16. class CMemReader;
  17. #define MPEGWIDTH 352
  18. #define MPEGHEIGHT 288
  19. #define HELPER_RELEASE(x) {if(x) x -> Release(); x = NULL;} // 控件释放
  20. #define CHECK_ERROR(x, idFailMsg) if (FAILED(hr = (x))) { if (idFailMsg) MessageBox(idFailMsg); return -1;}
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CRevPlayMDIChildWnd frame
  23. struct COnCmdMsg
  24. {
  25. int m_nID;
  26. int m_nCode;
  27. void* m_pExtra;
  28. AFX_CMDHANDLERINFO* m_pHandlerInfo;
  29. };
  30. #define WM_USER_ONCMDMSG (WM_USER + 0x1000)
  31. #define WM_USER_PREPARE_TO_CLOSE (WM_USER + 0x1001)
  32. class CRevPlayMDIChildWnd : public CMDIChildWnd
  33. {
  34. DECLARE_DYNCREATE(CRevPlayMDIChildWnd)
  35. protected:
  36.       // protected constructor used by dynamic creation
  37.     static CMenu NEAR menu;
  38. // Attributes
  39. public:
  40. // Operations
  41. public:
  42. CRevPlayMDIChildWnd();     
  43. BOOL Create(LPCTSTR szTitle,const RECT&rect,CMDIFrameWnd* parent);
  44. // Overrides
  45. // ClassWizard generated virtual function overrides
  46. //{{AFX_VIRTUAL(CRevPlayMDIChildWnd)
  47. public:
  48. virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
  49. virtual BOOL DestroyWindow();
  50. //}}AFX_VIRTUAL
  51. // Implementation
  52. protected:
  53. virtual ~CRevPlayMDIChildWnd();
  54. // Generated message map functions
  55. //{{AFX_MSG(CRevPlayMDIChildWnd)
  56. afx_msg void OnSize(UINT nType, int cx, int cy);
  57. //}}AFX_MSG
  58. afx_msg LRESULT OnPrepareToClose(WPARAM wParam=0, LPARAM lParam=0);
  59. DECLARE_MESSAGE_MAP()
  60. };
  61. /////////////////////////////////////////////////////////////////////////////
  62. /////////////////////////////////////////////////////////////////////////////
  63. // CRevPlayWnd window
  64. class CRevPlayWnd : public CWnd
  65. {
  66. // Construction
  67. public:
  68. CRevPlayWnd();
  69. // Attributes
  70. public:
  71. // Operations
  72. public:
  73. // Overrides
  74. // ClassWizard generated virtual function overrides
  75. //{{AFX_VIRTUAL(CRevPlayWnd)
  76. //}}AFX_VIRTUAL
  77. // Implementation
  78. public:
  79. BOOL m_Receive;   //表示是否按了Receive菜单
  80. void StopReceive();
  81. PBYTE pRevMem[100];    //存放接收的数据,以供DirectShow读取
  82. PBYTE achInBuf;
  83. BOOL m_FirstRead; //是否是第一次接收数据
  84. BOOL m_Save;      //是否保存接收数据
  85. BOOL m_Stop;      //停止接收菜单标志      
  86.     BOOL m_RenderOk; //是否Render成功     
  87.    
  88. int RevLen;            //实际接收数据的长度
  89.     int g_rwIndex;         //DirectShow读取数据数组的标志
  90.     int Block;            
  91. int rIndex;
  92. int m_LostBlock;
  93. HMMIO hmmioSave;  //保存数据文件句柄
  94. WSABUF stWSABuf;  //接收缓冲区
  95. SOCKET MultiSock;
  96. char strDestAddr[20];  //组播地址
  97.     int DestPort;         //组播端口
  98.        
  99. CWaitDlg WaitDlg;
  100. CMediaType mt;
  101. CMemStream *m_pStream;
  102. CMemReader *m_rdr;
  103. IVideoWindow  *m_pivw; // 视频窗口
  104. IFilterGraph  *m_pifg; // 图像过滤
  105. IGraphBuilder *m_pigb; // 图像建立 
  106. IMediaControl *m_pimc; // 媒体控制
  107.   IMediaPosition *m_ppos;
  108.     MPEG_PACKET_DATA PacketData;
  109. SEQHDR_INFO SeqInfo; 
  110. DWORD Parse(PBYTE Ptr,DWORD dwSize,LONGLONG* llTime);
  111. void RenderFrom(PBYTE Buf,LPCTSTR File);
  112. int InitGraph();
  113. int ReceiveData();
  114. void InitMultiSock();
  115. int Connect(HWND hwnd,const char* Addr,short Port,int& sock);
  116. BOOL Create(LPCTSTR szTitle,long stytle,const RECT&rect, CWnd* parent);
  117. virtual ~CRevPlayWnd();
  118. // Generated message map functions
  119. protected:
  120. //{{AFX_MSG(CRevPlayWnd)
  121. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  122. afx_msg void OnSave();
  123. afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
  124. afx_msg void OnStopReceive();
  125. afx_msg void OnRevPlay();
  126. afx_msg void OnUpdateSave(CCmdUI* pCmdUI);
  127. afx_msg void OnUpdateStopReceive(CCmdUI* pCmdUI);
  128. afx_msg void OnSize(UINT nType, int cx, int cy);
  129. //}}AFX_MSG
  130. afx_msg LRESULT OnDelegatedCmdMsg(WPARAM, LPARAM);
  131. afx_msg LRESULT OnPrepareToClose(WPARAM wParam, LPARAM lParam);
  132.     afx_msg LRESULT OnConnect(WPARAM wParam,LPARAM lParam);
  133. afx_msg LRESULT OnRead(WPARAM wParam,LPARAM lParam);
  134. DECLARE_MESSAGE_MAP()
  135. };
  136. /////////////////////////////////////////////////////////////////////////////
  137. //{{AFX_INSERT_LOCATION}}
  138. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  139. #endif // !defined(AFX_REVPLAYMDICHILDWND_H__32C9A3E1_3AC9_11D4_883E_0000210A0111__INCLUDED_)