//*********************************************************************
//*                  Microsoft Windows                               **
//*            Copyright(c) Microsoft Corp., 1995                    **
//*********************************************************************

//
//	ACTOBJ.CPP - Implementation of COleInPlaceActiveObject class
//

//	HISTORY:
//	
//	10/15/95	jeremys		Created.
//

//
//	The COleInPlaceActiveObject class implements the IOleInPlaceActiveObject
//  interface.
//

#include "project.hpp"
#pragma hdrstop

#include "htmlview.hpp"
#include "helpers.hpp"


/*******************************************************************

	NAME:		COleInPlaceActiveObject::QueryInterface

	SYNOPSIS:	Returns pointer to requested interface

    NOTES:		Delegates to outer unknown

********************************************************************/
STDMETHODIMP COleInPlaceActiveObject::QueryInterface ( REFIID riid, LPVOID FAR* ppvObj)
{
	DEBUGMSG("In COleObject::QueryInterface\r\n");
	return m_pUnkOuter->QueryInterface(riid, ppvObj);
}


/*******************************************************************

	NAME:		COleInPlaceActiveObject::AddRef

	SYNOPSIS:	Increases reference count on this object

********************************************************************/
STDMETHODIMP_(ULONG) COleInPlaceActiveObject::AddRef()
{
	DEBUGMSG("In COleObject::AddRef\r\n");
	m_nCount ++;
    return m_pUnkOuter->AddRef();
}


/*******************************************************************

	NAME:		COleInPlaceActiveObject::Release

	SYNOPSIS:	Decrements reference count on this object. 

********************************************************************/
STDMETHODIMP_(ULONG) COleInPlaceActiveObject::Release()
{
	DEBUGMSG("In COleObject::Release\r\n");
	m_nCount--;
	return m_pUnkOuter->Release();
}


/*******************************************************************

	NAME:		COleInPlaceActiveObject::OnDocWindowActivate

	SYNOPSIS:	Called when the document window (in an MDI app)
    			is activated or deactivated.

	ENTRY:		fActivate - TRUE if activating, FALSE if deactivating

********************************************************************/
STDMETHODIMP COleInPlaceActiveObject::OnDocWindowActivate  ( BOOL fActivate )
{
	DEBUGMSG("In COleInPlaceActiveObject::OnDocWindowActivate\r\n");

#if 0
	// BUGBUG implement
	// Activating?
	if (fActivate)
		m_pHTMLView->AddFrameLevelUI();
#endif
	// No frame level tools to remove...

	return ResultFromScode(S_OK);
};


/*******************************************************************

	NAME:		COleInPlaceActiveObject::OnFrameWindowActivate

    SYNOPSIS:	Called when the frame window is activated or deactivated.

	ENTRY:		fActivate - TRUE if activating, FALSE if deactivating

********************************************************************/
STDMETHODIMP COleInPlaceActiveObject::OnFrameWindowActivate  ( BOOL fActivate)
{
	DEBUGMSG("In COleInPlaceActiveObject::OnFrameWindowActivate\r\n");

#if 0
	// BUGBUG implement
	// set the focus to the object window if we are activating.
/*    if (fActivate)
		SetFocus(m_pHTMLView->m_lpDoc->GethDocWnd()); */
#endif

	return ResultFromScode( S_OK );
};


/*******************************************************************

	NAME:		COleInPlaceActiveObject::GetWindow

	SYNOPSIS:	Returns the window handle of the in-place object

********************************************************************/
STDMETHODIMP COleInPlaceActiveObject::GetWindow  ( HWND FAR* lphwnd)
{
	DEBUGMSG("In COleInPlaceActiveObject::GetWindow\r\n");

#if 0
	// BUGBUG implement
	*lphwnd = m_pHTMLView->m_lpDoc->GethDocWnd();
#endif

    *lphwnd = NULL;	// BUGBUG temporary!

    return ResultFromScode( S_OK );
};


/*******************************************************************

	NAME:		COleInPlaceActiveObject::ContextSensitiveHelp

	SYNOPSIS:	Called when container wants object to enter or exit
    			context sensitive help mode

********************************************************************/
STDMETHODIMP COleInPlaceActiveObject::ContextSensitiveHelp ( BOOL fEnterMode )
{
    DEBUGMSG("In COleInPlaceActiveObject::ContextSensitiveHelp\r\n");

	// BUGBUG need to do something real here sooner or later

    return ResultFromScode( E_NOTIMPL);
};


/*******************************************************************

	NAME:		COleInPlaceActiveObject::TranslateAccelerator

	SYNOPSIS:	Called to translate accelerator keystrokes for
    			controls in this object

********************************************************************/
STDMETHODIMP COleInPlaceActiveObject::TranslateAccelerator  ( LPMSG lpmsg)
{
	DEBUGMSG("In COleInPlaceActiveObject::TranslateAccelerator\r\n");

    // BUGBUG need to do something real here sooner or later

    return ResultFromScode( S_FALSE );
};


/*******************************************************************

	NAME:		COleInPlaceActiveObject::ResizeBorder

	SYNOPSIS:	Called when the border changes size

	ENTRY:		lprectBorder - new border rectangle
    			lpUIWindow - pointer to IOleInPlaceUIWindow interface
                fFrameWindow - true if lpUIWindow is the frame window

********************************************************************/
STDMETHODIMP COleInPlaceActiveObject::ResizeBorder  ( LPCRECT lprectBorder,
													  LPOLEINPLACEUIWINDOW lpUIWindow,
													  BOOL fFrameWindow)
{
	DEBUGMSG("In COleInPlaceActiveObject::ResizeBorder\r\n");

#if 0
	// BUGBUG implement

	// should always have an inplace frame...
	m_pHTMLView->GetInPlaceFrame()->SetBorderSpace(NULL);

	// There will only be a UIWindow if in an MDI container
	if (m_pHTMLView->GetUIWindow())
		m_pHTMLView->GetUIWindow()->SetBorderSpace(NULL);
#endif 

	return ResultFromScode( S_OK );
};


/*******************************************************************

	NAME:		COleInPlaceActiveObject::EnableModeless

	SYNOPSIS:	Called to enable or disable modeless dialogs

	ENTRY:		fEnable - TRUE if enabling modeless dialogs, FALSE
    				if disabling

********************************************************************/
STDMETHODIMP COleInPlaceActiveObject::EnableModeless  ( BOOL fEnable)
{
	DEBUGMSG("In COleInPlaceActiveObject::EnableModeless\r\n");

    // BUGBUG need to do something real here sooner or later

    return ResultFromScode( S_OK );
};