// Preview.h : Declaration of the CVideoPreview #ifndef __VIDEOPREVIEW_H_ #define __VIDEOPREVIEW_H_ #include "resource.h" // main symbols #include #define PM_CREATEGRAPH (WM_USER+1) #define PM_GOAWAY (WM_USER+2) #define TIMER_SHOW_DIALOG 1 #define TIMER_CLOSE_DIALOG 2 typedef struct { HWND hDlg; HANDLE hEvent; } PREVIEW_INFO_STRUCT; ///////////////////////////////////////////////////////////////////////////// // CVideoPreview class ATL_NO_VTABLE CVideoPreview : public CComObjectRootEx, public CStockPropImpl, public CComControl, public IPersistStreamInitImpl, public IOleControlImpl, public IOleObjectImpl, public IOleInPlaceActiveObjectImpl, public IViewObjectExImpl, public IOleInPlaceObjectWindowlessImpl, public IPersistStorageImpl, public ISpecifyPropertyPagesImpl, public IQuickActivateImpl, public IDataObjectImpl, public IProvideClassInfo2Impl<&CLSID_VideoPreview, NULL, &LIBID_WIAVIEWLib>, public CComCoClass { public: CVideoPreview() { m_bWindowOnly = TRUE; m_bAutoSize = FALSE; //m_bUsingWindowRegion = TRUE; m_bCreated = FALSE; WIA_PUSHFUNCTION((TEXT("CVideoPreview::CVideoPreview"))); } ~CVideoPreview() { WIA_PUSHFUNCTION((TEXT("CVideoPreview::~CVideoPreview"))); } DECLARE_REGISTRY_RESOURCEID(IDR_PREVIEW) DECLARE_PROTECT_FINAL_CONSTRUCT() // Mark this interface as safe BEGIN_CATEGORY_MAP(CVideoPreview) IMPLEMENTED_CATEGORY(CATID_SafeForScripting) IMPLEMENTED_CATEGORY(CATID_SafeForInitializing) END_CATEGORY_MAP() BEGIN_COM_MAP(CVideoPreview) COM_INTERFACE_ENTRY(IVideoPreview) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IViewObjectEx) COM_INTERFACE_ENTRY(IViewObject2) COM_INTERFACE_ENTRY(IViewObject) COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY(IOleInPlaceObject) COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY(IOleInPlaceActiveObject) COM_INTERFACE_ENTRY(IOleControl) COM_INTERFACE_ENTRY(IOleObject) COM_INTERFACE_ENTRY(IPersistStreamInit) COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit) COM_INTERFACE_ENTRY(ISpecifyPropertyPages) COM_INTERFACE_ENTRY(IQuickActivate) COM_INTERFACE_ENTRY(IPersistStorage) COM_INTERFACE_ENTRY(IDataObject) COM_INTERFACE_ENTRY(IProvideClassInfo) COM_INTERFACE_ENTRY(IProvideClassInfo2) END_COM_MAP() BEGIN_PROP_MAP(CVideoPreview) PROP_ENTRY("HWND", DISPID_HWND, CLSID_NULL) // Example entries // PROP_ENTRY("Property Description", dispid, clsid) // PROP_PAGE(CLSID_StockColorPage) END_PROP_MAP() BEGIN_MSG_MAP(CVideoPreview) CHAIN_MSG_MAP(CComControl) MESSAGE_HANDLER(WM_SIZE, OnSize) MESSAGE_HANDLER(WM_CREATE,OnCreate) MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd) DEFAULT_REFLECTION_HANDLER() END_MSG_MAP() // Handler prototypes: // LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); // LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled); // IViewObjectEx // DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE) // IOleInPlaceObject STDMETHOD(InPlaceDeactivate)(); // IVideoPreview public: STDMETHOD(Device)(IUnknown * pDevice); LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); HRESULT OnDraw(ATL_DRAWINFO& di) { return S_OK; } private: CComPtr m_pDevice; CComPtr m_pWiaVideo; BOOL m_bCreated; }; #endif //__PREVIEW_H_