home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 November / Chip_2002-11_cd1.bin / zkuste / vbasic / Data / Utils / WME71SDK.exe / RCDATA / CABINET / encoderview.h < prev    next >
C/C++ Source or Header  |  2001-03-02  |  11KB  |  341 lines

  1. // EncoderView.h : Declaration of the CEncoderView
  2.  
  3. #ifndef __ENCODERVIEW_H_
  4. #define __ENCODERVIEW_H_
  5.  
  6. #include "resource.h"       // main symbols
  7. #include <atlctl.h>
  8. using namespace std;
  9.  
  10. /////////////////////////////////////////////////////////////////////////////
  11. // CEncoderView
  12. class ATL_NO_VTABLE CEncoderView : 
  13.     public CComObjectRootEx<CComSingleThreadModel>,
  14.     public CStockPropImpl<CEncoderView, IEncoderView, &IID_IEncoderView, &LIBID_ENCVIEWLib>,
  15.     public CComCompositeControl<CEncoderView>,
  16.     public IPersistStreamInitImpl<CEncoderView>,
  17.     public IOleControlImpl<CEncoderView>,
  18.     public IOleObjectImpl<CEncoderView>,
  19.     public IOleInPlaceActiveObjectImpl<CEncoderView>,
  20.     public IViewObjectExImpl<CEncoderView>,
  21.     public IOleInPlaceObjectWindowlessImpl<CEncoderView>,
  22.     public IPersistStorageImpl<CEncoderView>,
  23.     public ISpecifyPropertyPagesImpl<CEncoderView>,
  24.     public IQuickActivateImpl<CEncoderView>,
  25.     public IDataObjectImpl<CEncoderView>,
  26.     public IProvideClassInfo2Impl<&CLSID_EncoderView, NULL, &LIBID_ENCVIEWLib>,
  27.     public CComCoClass<CEncoderView, &CLSID_EncoderView>
  28. {
  29. public:
  30.     CEncoderView();
  31.     
  32.     HRESULT FinalConstruct();
  33.     void FinalRelease();
  34.  
  35. DECLARE_REGISTRY_RESOURCEID(IDR_ENCODERVIEW)
  36.  
  37. DECLARE_PROTECT_FINAL_CONSTRUCT()
  38.  
  39. BEGIN_COM_MAP(CEncoderView)
  40.     COM_INTERFACE_ENTRY(IEncoderView)
  41.     COM_INTERFACE_ENTRY(IDispatch)
  42.     COM_INTERFACE_ENTRY(IViewObjectEx)
  43.     COM_INTERFACE_ENTRY(IViewObject2)
  44.     COM_INTERFACE_ENTRY(IViewObject)
  45.     COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
  46.     COM_INTERFACE_ENTRY(IOleInPlaceObject)
  47.     COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
  48.     COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
  49.     COM_INTERFACE_ENTRY(IOleControl)
  50.     COM_INTERFACE_ENTRY(IOleObject)
  51.     COM_INTERFACE_ENTRY(IPersistStreamInit)
  52.     COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
  53.     COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
  54.     COM_INTERFACE_ENTRY(IQuickActivate)
  55.     COM_INTERFACE_ENTRY(IPersistStorage)
  56.     COM_INTERFACE_ENTRY(IDataObject)
  57.     COM_INTERFACE_ENTRY(IProvideClassInfo)
  58.     COM_INTERFACE_ENTRY(IProvideClassInfo2)
  59. END_COM_MAP()
  60.  
  61. BEGIN_PROP_MAP(CEncoderView)
  62.     PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
  63.     PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
  64.     PROP_ENTRY("AutoSize", DISPID_AUTOSIZE, CLSID_NULL)
  65.     PROP_ENTRY("BackColor", DISPID_BACKCOLOR, CLSID_StockColorPage)
  66.     PROP_ENTRY("Caption", DISPID_CAPTION, CLSID_NULL)
  67.     PROP_ENTRY("Enabled", DISPID_ENABLED, CLSID_NULL)
  68.     PROP_ENTRY("MouseIcon", DISPID_MOUSEICON, CLSID_StockPicturePage)
  69.     // Example entries
  70.     // PROP_ENTRY("Property Description", dispid, clsid)
  71.     // PROP_PAGE(CLSID_StockColorPage)
  72. END_PROP_MAP()
  73.  
  74. BEGIN_MSG_MAP(CEncoderView)
  75.     CHAIN_MSG_MAP(CComCompositeControl<CEncoderView>)
  76.     MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
  77.     NOTIFY_CODE_HANDLER(TVN_ITEMEXPANDING, OnItemexpandingTree_encoder)
  78.     NOTIFY_CODE_HANDLER(NM_RCLICK, OnContextMenu)
  79.     NOTIFY_HANDLER(IDC_TREE_ENCODER, TVN_DELETEITEM, OnDeleteitemTree_encoder)
  80.     NOTIFY_HANDLER(IDC_TREE_ENCODER, NM_OUTOFMEMORY, OnOutofmemoryTree_encoder)
  81.     NOTIFY_HANDLER(IDC_TREE_ENCODER, NM_RCLICK, OnRclickTree_encoder)
  82.     MESSAGE_HANDLER(WM_ENCODER_EVENT, OnEncoderEvent)
  83.     NOTIFY_HANDLER(IDC_TREE_ENCODER, TVN_BEGINDRAG, OnBegindragTree_encoder)
  84.     MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUP)
  85.     MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
  86.     MESSAGE_HANDLER(WM_COMMAND, OnCommand)
  87. END_MSG_MAP()
  88. // Handler prototypes:
  89. //  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  90. //  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
  91. //  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  92.  
  93. BEGIN_SINK_MAP(CEncoderView)
  94.     //Make sure the Event Handlers have __stdcall calling convention
  95. END_SINK_MAP()
  96.  
  97.     STDMETHOD(OnAmbientPropertyChange)(DISPID dispid)
  98.     {
  99.         if (dispid == DISPID_AMBIENT_BACKCOLOR)
  100.         {
  101.             SetBackgroundColorFromAmbient();
  102.             FireViewChange();
  103.         }
  104.         return IOleControlImpl<CEncoderView>::OnAmbientPropertyChange(dispid);
  105.     }
  106.  
  107.  
  108.  
  109. // IViewObjectEx
  110.     DECLARE_VIEW_STATUS(0)
  111.  
  112. // IEncoderView
  113. public:
  114.     STDMETHOD(AddMachine)(/*[in]*/ BSTR bstrMachineName);
  115.     STDMETHOD(Refresh)();
  116.     STDMETHOD(get_Root)(/*[out, retval]*/ IDispatch* *pVal);
  117.     STDMETHOD(put_Root)(/*[in]*/ IDispatch* newVal);
  118.     OLE_COLOR m_clrBackColor;
  119.     CComBSTR m_bstrCaption;
  120.     BOOL m_bEnabled;
  121.     CComPtr<IPictureDisp> m_pMouseIcon;
  122.  
  123.  
  124.     // Root, can be encoder or agent
  125.     CComPtr<IDispatch>    m_pRoot;
  126.     CComBSTR            m_bstrMachine;
  127.     vector<CString>        m_vecMachines;
  128.     CTreeViewCtrlEx        m_Tree;
  129.     HICON                m_iNormalIcon, m_iSelectedIcon;
  130.     CImageList            m_ImageList; // needed for drag-drop operation
  131.     bool                m_bDragging;
  132.     HTREEITEM            m_hDragItem;
  133.     enum { IDD = IDD_ENCODERVIEW };
  134.  
  135.     LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  136.     LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  137. protected:
  138.     
  139.     HRESULT InitTreeView();
  140.     void DeleteChildren(HTREEITEM hItem);
  141.     void GetNormalAndSelectedIcons(LPITEMIDLIST lpifq,LPTV_ITEM lptvitem);
  142.     LRESULT OnItemexpandingTree_encoder(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  143.     LRESULT OnDeleteitemTree_encoder(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  144.     HRESULT GetSelectedEncoder(IWMEncoder** pEnc);
  145. protected:
  146.     HRESULT DisplayEncoder(IWMEncoder* pEnc, HTREEITEM hParent);
  147.     HRESULT ShowEncoderDetails(HTREEITEM hItem,IUnknown* pUnk);
  148.     HRESULT ShowMachineDetails(HTREEITEM hItem,IUnknown* pUnk);
  149.     HRESULT ShowSGCDetails(HTREEITEM hItem,IUnknown* pUnk);
  150.     HRESULT ShowSrcPlInfoMgr(HTREEITEM hItem,IUnknown* pUnk);
  151.     HRESULT ShowTrPlInfoMgr(HTREEITEM hItem,IUnknown* pUnk);
  152.     HRESULT ShowDisplayInfo(HTREEITEM hItem,IUnknown* pUnk);
  153.     HRESULT ShowAttributes(HTREEITEM hItem,IUnknown* pUnk);
  154.     HRESULT ShowBroadcast(HTREEITEM hItem,IUnknown* pUnk);
  155.     HRESULT ShowFile(HTREEITEM hItem,IUnknown* pUnk);
  156.     HRESULT ShowStatistics(HTREEITEM hItem,IUnknown* pUnk);
  157.     HRESULT ShowProfileCollection(HTREEITEM hItem,IUnknown* pUnk);
  158.  
  159.     HRESULT ShowSGDetails(HTREEITEM hItem,IUnknown* pUnk);
  160.     HRESULT ShowSrcDetails(HTREEITEM hItem,IUnknown* pUnk);
  161.     HRESULT ShowProfile(HTREEITEM hItem,IUnknown* pUnk);
  162.     HRESULT ShowAudienceCollection(HTREEITEM hItem,IUnknown* pUnk);
  163.     HRESULT ShowGroupTransformCollection(HTREEITEM hItem,IUnknown* pUnk);
  164.     HRESULT ShowTransformDetails(HTREEITEM hItem,IUnknown* pUnk);
  165.     HRESULT ShowPreviewCollection(HTREEITEM hItem,IUnknown* pUnk);
  166.     HRESULT ShowPostviewCollection(HTREEITEM hItem,IUnknown* pUnk);
  167.     HRESULT ShowPreOrPostViewCollection(HTREEITEM hItem,IUnknown* pUnk);
  168.     HRESULT ShowWMFOutputStats(HTREEITEM hItem,IUnknown* pUnk);
  169.     HRESULT ShowNetConnectionStats(HTREEITEM hItem,IUnknown* pUnk);
  170.     HRESULT ShowFileArchiveStats(HTREEITEM hItem,IUnknown* pUnk);
  171.     HRESULT ShowIndexerStats(HTREEITEM hItem,IUnknown* pUnk);
  172.  
  173.  
  174.     HRESULT ShowSrcPlInfo(HTREEITEM hParent, IUnknown* pUnk);
  175.  
  176.  
  177.     // ewent showing functions
  178.     HRESULT ShowArchiveStateEvents(HTREEITEM hItem,IUnknown* pUnk);
  179.     HRESULT ShowClientConnectEvents(HTREEITEM hItem,IUnknown* pUnk);
  180.     HRESULT ShowClientDisconnectEvents(HTREEITEM hItem,IUnknown* pUnk);
  181.     HRESULT ShowConfigEvents(HTREEITEM hItem,IUnknown* pUnk);
  182.     HRESULT ShowErrorEvents(HTREEITEM hItem,IUnknown* pUnk);
  183.     HRESULT ShowIndexerStateEvents(HTREEITEM hItem,IUnknown* pUnk);
  184.     HRESULT ShowSourceStateEvents(HTREEITEM hItem,IUnknown* pUnk);
  185.     HRESULT ShowStateEvents(HTREEITEM hItem,IUnknown* pUnk);
  186.  
  187.     template<class T, class I>
  188.         HRESULT InsertProperty(HRESULT (__stdcall I::*fp)(T*), I* p, HTREEITEM hParent, CString strName
  189.         ,std::map<T,CString>& m)
  190.         {
  191.             HRESULT hr = NOERROR;
  192.             T Val;
  193.             hr = (p->*fp)(&Val);
  194.             CString strRes;
  195.             if(FAILED(hr))
  196.             {
  197.                 strRes = GetError();
  198.             }
  199.             else
  200.             {
  201.                 strRes = m[Val];
  202.             }
  203.  
  204.             strName += strRes;
  205.  
  206.             m_Tree.InsertItem(strName,hParent,TVI_LAST);
  207.             return hr;
  208.         }
  209.  
  210.     // works on data types long , short etc
  211.     template<class T, class I>
  212.         HRESULT InsertProperty(HRESULT (__stdcall I::*fp)(T*), I* p, HTREEITEM hParent, 
  213.         CString strName    )
  214.         {
  215.             HRESULT hr = NOERROR;
  216.             T Val;
  217.             hr = (p->*fp)(&Val);
  218.             CString strRes;
  219.             if(FAILED(hr))
  220.             {
  221.                 strRes = GetError();
  222.             }
  223.             else
  224.             {
  225.                 strRes.Format(_T("%d"),Val);;
  226.             }
  227.  
  228.             strName += strRes;
  229.  
  230.             m_Tree.InsertItem(strName,hParent,TVI_LAST);
  231.             return hr;
  232.         }
  233.  
  234.     // works on string properties
  235.     template<class T, class I>
  236.         HRESULT InsertPropertyBSTR(HRESULT (__stdcall I::*fp)(T*), I* p, HTREEITEM hParent, 
  237.         CString strName    )
  238.         {
  239.             HRESULT hr = NOERROR;
  240.             CComBSTR Val;
  241.             hr = (p->*fp)(&Val);
  242.             CString strRes;
  243.             if(FAILED(hr))
  244.             {
  245.                 strRes = GetError();
  246.             }
  247.             else
  248.             {
  249.                 USES_CONVERSION;
  250.                 strRes = W2T(Val);
  251.             }
  252.  
  253.             strName += strRes;
  254.  
  255.             m_Tree.InsertItem(strName,hParent,TVI_LAST);
  256.             return hr;
  257.         }
  258.  
  259.     // this one inserts a nocde given a function to get the interface pointer
  260.     template<class T, class I>
  261.         HTREEITEM InsertNode(HTREEITEM hParent, CString strText, 
  262.         HRESULT (__stdcall I::*fp)(T**), I* p
  263.         , LPFNDISPLAY pfn)
  264.     {
  265.         CComPtr<T> pT;
  266.         HRESULT hr = NOERROR;
  267.         hr = (p->*fp)(&pT);
  268.         if(FAILED(hr))
  269.             return NULL;
  270.         CComPtr<IUnknown> pUnk;
  271.         hr = pT.QueryInterface(&pUnk);
  272.  
  273.         return InsertNode(hParent, strText, (LPUNKNOWN)pUnk.p,pfn);
  274.  
  275.     }
  276.  
  277.     template<class Coll, class Item>
  278.         HRESULT ShowCollection( HTREEITEM hParent, Coll* pCol, HRESULT (CEncoderView::*fp)(HTREEITEM, IUnknown*), 
  279.         Item* pUnused = NULL )
  280.     {
  281.         HRESULT hr = NOERROR;
  282.         if(!pCol)
  283.         return E_POINTER;
  284.         _ASSERT(m_Tree.IsWindow());
  285.     
  286.         long lCount =0 ;
  287.         hr = pCol->get_Count(&lCount);
  288.         HR_TEST(hr);
  289.         USES_CONVERSION;
  290.         for(long l=0; l<lCount; l++)
  291.         {
  292.             CComPtr<Item> pItem;
  293.             hr = pCol->Item(l,&pItem);
  294.             if(FAILED(hr))
  295.                 continue;
  296.             CString strName;
  297.             CComBSTR bstrName;
  298.             hr = pItem->get_Name(&bstrName);
  299.             if(FAILED(hr))
  300.                 continue;
  301.             strName = W2T(bstrName);
  302.             InsertNode(hParent, strName, (LPUNKNOWN)pItem.p, fp);
  303.         }
  304.  
  305.         return hr;
  306.     }
  307.  
  308.     HTREEITEM InsertNode(HTREEITEM hParent, CString strText, LPUNKNOWN pUnk, LPFNDISPLAY pfn);
  309.     HTREEITEM InsertNode(HTREEITEM hParent, CString strText, TREEDATA* pData);
  310.     UINT GetItemIndex(CTreeItem& DragItem);
  311.     
  312.     HRESULT Move(HTREEITEM hDragItem,HTREEITEM hHitItem);
  313.     HRESULT MoveTreeItems(HTREEITEM hDragItem,HTREEITEM hHitItem);
  314.     
  315.     long GetEventType(CEncoderEventSink* pSink);
  316.     HTREEITEM GetEventTreeNode(HTREEITEM hParent, long lEventID);
  317.     
  318.     LRESULT OnOutofmemoryTree_encoder(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
  319.     {
  320.         // TODO : Add Code for control notification handler.
  321.         return 0;
  322.     }
  323.     LRESULT OnRclickTree_encoder(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
  324.     {
  325.         // TODO : Add Code for control notification handler.
  326.         return 0;
  327.     }
  328.  
  329.     LRESULT OnEncoderEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  330.     LRESULT OnBegindragTree_encoder(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
  331.     
  332.     LRESULT OnLButtonUP(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  333.     
  334.     LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
  335.     
  336.     LRESULT OnContextMenu(int , LPNMHDR pnmh, BOOL& );
  337. };
  338.  
  339.  
  340. #endif //__ENCODERVIEW_H_
  341.