// VideoWindow.h : Declaration of the CVideoWindowObj

#ifndef __VIDEOWINDOW_H_
#define __VIDEOWINDOW_H_

#include "resource.h"       // main symbols
#include "NetMeeting.h"

/////////////////////////////////////////////////////////////////////////////
// CVideoWindowObj
class ATL_NO_VTABLE CVideoWindowObj : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public IDispatchImpl<IVideoWindow, &IID_IVideoWindow, &LIBID_NetMeetingLib>,
	public CComControl<CVideoWindowObj>,
	public IPersistStreamInitImpl<CVideoWindowObj>,
	public IOleControlImpl<CVideoWindowObj>,
	public IOleObjectImpl<CVideoWindowObj>,
	public IOleInPlaceActiveObjectImpl<CVideoWindowObj>,
	public IViewObjectExImpl<CVideoWindowObj>,
	public IOleInPlaceObjectWindowlessImpl<CVideoWindowObj>,
	public CComCoClass<CVideoWindowObj, &CLSID_VideoWindow>,
	public ISupportErrorInfoImpl<&IID_IVideoWindow>,
	public IObjectSafetyImpl<CVideoWindowObj, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
{

private:
	CVideoView*	m_pVideoView;
	HWND		m_hWndEdit;

public:
	CVideoWindowObj();
	~CVideoWindowObj();

DECLARE_REGISTRY_RESOURCEID(IDR_VIDEOWINDOW)
DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CVideoWindowObj)
	COM_INTERFACE_ENTRY(IVideoWindow)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(IObjectSafety)
	COM_INTERFACE_ENTRY(ISupportErrorInfo)
	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)
END_COM_MAP()

BEGIN_PROP_MAP(CVideoWindowObj)
	PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
	PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
	// Example entries
	// PROP_ENTRY("Property Description", dispid, clsid)
	// PROP_PAGE(CLSID_StockColorPage)
END_PROP_MAP()

BEGIN_MSG_MAP(CVideoWindowObj)
//	CHAIN_MSG_MAP(CComControl<CVideoWindowObj>)
	MESSAGE_HANDLER(WM_PAINT, MyOnPaint)
	DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()

  virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);

  LRESULT MyOnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
  {
	PAINTSTRUCT ps;
	::BeginPaint(m_hWnd, &ps );

	if( ::IsWindow( m_hWndEdit ) )
	{
		::InvalidateRect(m_hWndEdit, NULL, TRUE);
		::UpdateWindow( m_hWndEdit );
			TRACE_OUT(("MyOnPaint"));
	}
	
	::EndPaint( m_hWnd, &ps );

	return 1;
  }

// IViewObjectEx
	DECLARE_VIEW_STATUS(0)

public:
};

#endif //__VIDEOWINDOW_H_