ConvertDlg.h
上传用户:tangyu_668
上传日期:2014-02-27
资源大小:678k
文件大小:5k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2006 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. #pragma once
  22. #include "IGraphBuilder2.h"
  23. #include "....DSUtilDSMPropertyBag.h"
  24. class CFilterTreeCtrl : public CTreeCtrl
  25. {
  26. public:
  27. CFilterTreeCtrl();
  28. protected:
  29. virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  30. virtual void PreSubclassWindow();
  31. public:
  32. DECLARE_MESSAGE_MAP()
  33. afx_msg BOOL OnToolTipText(UINT nID, NMHDR* pNMHDR, LRESULT* pResult);
  34. };
  35. // CConvertDlg dialog
  36. class CConvertDlg : public CResizableDialog
  37. {
  38. public:
  39. class CTreeItem
  40. {
  41. protected:
  42. CTreeCtrl& m_tree;
  43. HTREEITEM m_hTI;
  44. public: 
  45. CTreeItem(CTreeCtrl& tree, HTREEITEM hTIParent);
  46. virtual ~CTreeItem();
  47. virtual void Update() {}
  48. virtual bool ToolTip(CString& str) {return false;}
  49. void SetLabel(LPCTSTR label);
  50. void SetImage(int nImage, int nSelectedImage);
  51. operator HTREEITEM() {return m_hTI;}
  52. };
  53. class CTreeItemFilter : public CTreeItem 
  54. {
  55. public:
  56. CComPtr<IBaseFilter> m_pBF;
  57. CTreeItemFilter(IBaseFilter* pBF, CTreeCtrl& tree, HTREEITEM hTIParent);
  58. void Update();
  59. };
  60. class CTreeItemFile : public CTreeItemFilter
  61. {
  62. public:
  63. CString m_fn;
  64. CTreeItemFile(CString fn, IBaseFilter* pBF, CTreeCtrl& tree, HTREEITEM hTIParent);
  65. void Update();
  66. bool ToolTip(CString& str);
  67. };
  68. class CTreeItemPin : public CTreeItem
  69. {
  70. public:
  71. CComPtr<IPin> m_pPin;
  72. CTreeItemPin(IPin* pPin, CTreeCtrl& tree, HTREEITEM hTIParent);
  73. void Update();
  74. bool ToolTip(CString& str);
  75. bool IsConnected();
  76. };
  77. class CTreeItemResourceFolder : public CTreeItem
  78. {
  79. public: 
  80. CTreeItemResourceFolder(CTreeCtrl& tree, HTREEITEM hTIParent);
  81. void Update();
  82. bool ToolTip(CString& str);
  83. };
  84. class CTreeItemResource : public CTreeItem
  85. {
  86. public: 
  87. CDSMResource m_res;
  88. CTreeItemResource(const CDSMResource& res, CTreeCtrl& tree, HTREEITEM hTIParent);
  89. ~CTreeItemResource();
  90. void Update();
  91. bool ToolTip(CString& str);
  92. };
  93. class CTreeItemChapterFolder : public CTreeItem
  94. {
  95. public: 
  96. CTreeItemChapterFolder(CTreeCtrl& tree, HTREEITEM hTIParent);
  97. void Update();
  98. };
  99. class CTreeItemChapter : public CTreeItem
  100. {
  101. public: 
  102. CDSMChapter m_chap;
  103. CTreeItemChapter(const CDSMChapter& chap, CTreeCtrl& tree, HTREEITEM hTIParent);
  104. void Update();
  105. };
  106. private:
  107. CComPtr<IGraphBuilder2> m_pGB;
  108. CComPtr<IBaseFilter> m_pMux;
  109. CComQIPtr<IMediaControl> m_pMC;
  110. CComQIPtr<IMediaEventEx> m_pME;
  111. CComQIPtr<IMediaSeeking> m_pMS;
  112. CString m_title;
  113. UINT m_nIDEventStatus;
  114. CBitmap m_streamtypesbm;
  115. CImageList m_streamtypes;
  116. CList<CTreeItem*> m_pTIs;
  117. void AddFile(CString fn);
  118. bool ConvertFile(LPCTSTR fn, IPin* pPin = NULL);
  119. void AddFilter(HTREEITEM hTI, IBaseFilter* pBF);
  120. void DeleteFilter(IBaseFilter* pBF);
  121. void DeleteItem(HTREEITEM hTI);
  122. void DeleteChildren(HTREEITEM hTI);
  123. HTREEITEM HitTest(CPoint& sp, CPoint& cp);
  124. void ShowPopup(CPoint p);
  125. void ShowFilePopup(HTREEITEM hTI, CPoint p);
  126. void ShowPinPopup(HTREEITEM hTI, CPoint p);
  127. void ShowResourceFolderPopup(HTREEITEM hTI, CPoint p);
  128. void ShowResourcePopup(HTREEITEM hTI, CPoint p);
  129. void ShowChapterFolderPopup(HTREEITEM hTI, CPoint p);
  130. void ShowChapterPopup(HTREEITEM hTI, CPoint p);
  131. bool EditProperties(IDSMPropertyBag* pPB);
  132. bool EditResource(CTreeItemResource* t);
  133. bool EditChapter(CTreeItemChapter* t);
  134. public:
  135. CConvertDlg(CWnd* pParent = NULL);   // standard constructor
  136. virtual ~CConvertDlg();
  137. // Dialog Data
  138. enum { IDD = IDD_CONVERT_DLG };
  139. CFilterTreeCtrl m_tree;
  140. CString m_fn;
  141. protected:
  142. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  143. virtual BOOL PreTranslateMessage(MSG* pMsg);
  144. virtual BOOL OnInitDialog();
  145. virtual void OnOK();
  146. DECLARE_MESSAGE_MAP()
  147. public:
  148. afx_msg LRESULT OnGraphNotify(WPARAM wParam, LPARAM lParam);
  149. afx_msg void OnDropFiles(HDROP hDropInfo);
  150. afx_msg void OnClose();
  151. afx_msg void OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult);
  152. afx_msg void OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult);
  153. afx_msg void OnNMDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult);
  154. afx_msg void OnBnClickedButton1();
  155. afx_msg void OnUpdateButton1(CCmdUI* pCmdUI);
  156. afx_msg void OnTimer(UINT nIDEvent);
  157. afx_msg void OnBnClickedButton2();
  158. afx_msg void OnBnClickedButton3();
  159. afx_msg void OnBnClickedButton4();
  160. afx_msg void OnUpdateButton2(CCmdUI* pCmdUI);
  161. afx_msg void OnUpdateButton3(CCmdUI* pCmdUI);
  162. afx_msg void OnUpdateButton4(CCmdUI* pCmdUI);
  163. };