windows-nt/Source/XPSP1/NT/com/oleutest/simpsvr/ioipao.cpp

405 lines
10 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
//**********************************************************************
// File name: IOIPAO.CPP
//
// Implementation file for the CClassFactory Class
//
// Functions:
//
// See ioipao.h for a list of member functions.
//
// Copyright (c) 1993 Microsoft Corporation. All rights reserved.
//**********************************************************************
#include "pre.h"
#include "obj.h"
#include "ioipao.h"
#include "app.h"
#include "doc.h"
//**********************************************************************
//
// COleInPlaceActiveObject::QueryInterface
//
// Purpose:
// Used for interface negotiation
//
// Parameters:
//
// REFIID riid - Interface being queried for.
//
// LPVOID FAR *ppvObj - Out pointer for the interface.
//
// Return Value:
//
// S_OK - Success
// E_NOINTERFACE - Failure
//
// Function Calls:
// Function Location
//
// CSimpSvrObj::QueryInterface OBJ.CPP
//
//
//********************************************************************
STDMETHODIMP COleInPlaceActiveObject::QueryInterface ( REFIID riid, LPVOID FAR* ppvObj)
{
TestDebugOut(TEXT("In COleInPlaceActiveObject::QueryInterface\r\n"));
// need to NULL the out parameter
return m_lpObj->QueryInterface(riid, ppvObj);
}
//**********************************************************************
//
// COleInPlaceActiveObject::AddRef
//
// Purpose:
//
// Increments the reference count on CSimpSvrObj. Since
// COleInPlaceActiveObject is a nested class of CSimpSvrObj, we don't
// need a separate reference count for COleInPlaceActiveObject. We
// can use the reference count of CSimpSvrObj.
//
// Parameters:
//
// None
//
// Return Value:
//
// The new reference count on the CSimpSvrObj
//
// Function Calls:
// Function Location
//
// OuputDebugString Windows API
// CSimpSvrObj::AddRef OBJ.CPP
//
//
//********************************************************************
STDMETHODIMP_(ULONG) COleInPlaceActiveObject::AddRef ()
{
TestDebugOut(TEXT("In COleInPlaceActiveObject::AddRef\r\n"));
return m_lpObj->AddRef();
}
//**********************************************************************
//
// COleInPlaceActiveObject::Release
//
// Purpose:
//
// Decrements the reference count on CSimpSvrObj. Since
// COleInPlaceActiveObject is a nested class of CSimpSvrObj, we don't
// need a separate reference count for COleInPlaceActiveObject. We
// can use the reference count of CSimpSvrObj.
//
// Parameters:
//
// None
//
// Return Value:
//
// The new reference count
//
// Function Calls:
// Function Location
//
// TestDebugOut Windows API
// CSimpSvrObj::Release OBJ.CPP
//
//
//********************************************************************
STDMETHODIMP_(ULONG) COleInPlaceActiveObject::Release ()
{
TestDebugOut(TEXT("In COleInPlaceActiveObject::Release\r\n"));
return m_lpObj->Release();
}
//**********************************************************************
//
// COleInPlaceActiveObject::OnDocWindowActivate
//
// Purpose:
//
// Called when the doc window (in an MDI App) is (de)activated.
//
// Parameters:
//
// BOOL fActivate - TRUE if activating, FALSE if deactivating
//
// Return Value:
//
// S_OK
//
// Function Calls:
// Function Location
//
// TestDebugOut Windows API
// IOleInPlaceFrame::SetActiveObject Container
// CSimpSvrObject::AddFrameLevelUI OBJ.CPP
//
//
//********************************************************************
STDMETHODIMP COleInPlaceActiveObject::OnDocWindowActivate ( BOOL fActivate )
{
TestDebugOut(TEXT("In COleInPlaceActiveObject::OnDocWindowActivate\r\n"));
// Activating?
if (fActivate)
m_lpObj->AddFrameLevelUI();
// No frame level tools to remove...
return ResultFromScode(S_OK);
}
//**********************************************************************
//
// COleInPlaceActiveObject::OnFrameWindowActivate
//
// Purpose:
//
// Called when the Frame window is (de)activating
//
// Parameters:
//
// BOOL fActivate - TRUE if activating, FALSE if Deactivating
//
// Return Value:
//
// S_OK
//
// Function Calls:
// Function Location
//
// TestDebugOut Windows API
// SetFocus Windows API
//
//
// Comments:
//
//
//********************************************************************
STDMETHODIMP COleInPlaceActiveObject::OnFrameWindowActivate ( BOOL fActivate)
{
TestDebugOut(TEXT("In COleInPlaceActiveObject::OnFrameWindowActivate\r\n"));
// set the focus to the object window if we are activating.
/* if (fActivate)
SetFocus(m_lpObj->m_lpDoc->GethDocWnd()); */
return ResultFromScode( S_OK );
}
//**********************************************************************
//
// COleInPlaceActiveObject::GetWindow
//
// Purpose:
//
// Gets the objects Window Handle.
//
// Parameters:
//
// HWND FAR* lphwnd - Location to return the window handle.
//
// Return Value:
//
// S_OK
//
// Function Calls:
// Function Location
//
// TestDebugOut Windows API
// CSimpSvrDoc::GethDocWnd DOC.H
//
//
//********************************************************************
STDMETHODIMP COleInPlaceActiveObject::GetWindow ( HWND FAR* lphwnd)
{
TestDebugOut(TEXT("In COleInPlaceActiveObject::GetWindow\r\n"));
// need to NULL the out parameter
*lphwnd = m_lpObj->m_lpDoc->GethDocWnd();
return ResultFromScode( S_OK );
}
//**********************************************************************
//
// COleInPlaceActiveObject::ContextSensitiveHelp
//
// Purpose:
//
// Used to implement Context Sensitive help
//
// Parameters:
//
// None
//
// Return Value:
//
// E_NOTIMPL
//
// Function Calls:
// Function Location
//
// TestDebugOut Windows API
//
//
// Comments:
//
// See TECHNOTES.WRI include with the OLE SDK for proper
// implementation of this function.
//
//********************************************************************
STDMETHODIMP COleInPlaceActiveObject::ContextSensitiveHelp ( BOOL fEnterMode )
{
TestDebugOut(TEXT("In COleInPlaceActiveObject::ContextSensitiveHelp\r\n"));
return ResultFromScode( E_NOTIMPL);
}
//**********************************************************************
//
// COleInPlaceActiveObject::TranslateAccelerator
//
// Purpose:
//
// Used for translating accelerators in .DLL objects.
//
// Parameters:
//
// LPMSG lpmsg - Pointer to a message
//
// Return Value:
//
// S_FALSE
//
// Function Calls:
// Function Location
//
// TestDebugOut Windows API
//
//
// Comments:
//
// This method should never be called since we are implemented
// in an executable.
//
//********************************************************************
STDMETHODIMP COleInPlaceActiveObject::TranslateAccelerator ( LPMSG lpmsg)
{
TestDebugOut(TEXT("In COleInPlaceActiveObject::TranslateAccelerator\r\n"));
// no accelerator table, return FALSE
return ResultFromScode( S_FALSE );
}
//**********************************************************************
//
// COleInPlaceActiveObject::ResizeBorder
//
// Purpose:
//
// Called when the border changes size.
//
// Parameters:
//
// LPCRECT lprectBorder - New Border
//
// LPOLEINPLACEUIWINDOW lpUIWindow - Pointer to UIWindow
//
// BOOL fFrameWindow - True if lpUIWindow is the
// frame window.
//
// Return Value:
//
// S_OK
//
// Function Calls:
// Function Location
//
// TestDebugOut Windows API
//
//
// Comments:
//
// Need to call SetBorderSpace again...
//
//********************************************************************
STDMETHODIMP COleInPlaceActiveObject::ResizeBorder ( LPCRECT lprectBorder,
LPOLEINPLACEUIWINDOW lpUIWindow,
BOOL fFrameWindow)
{
HRESULT hRes;
TestDebugOut(TEXT("In COleInPlaceActiveObject::ResizeBorder\r\n"));
// should always have an inplace frame...
if ((hRes=m_lpObj->GetInPlaceFrame()->SetBorderSpace(NULL)) != S_OK)
{
TestDebugOut(TEXT("COleInPlaceActiveObject::ResizeBorder \
SetBorderSpace fails\n"));
return(hRes);
}
// There will only be a UIWindow if in an MDI container
if (m_lpObj->GetUIWindow())
{
if((hRes=m_lpObj->GetUIWindow()->SetBorderSpace(NULL)) != S_OK)
{
TestDebugOut(TEXT("COleInPlaceActiveObject::ResizeBorder \
SetBorderSpace fails\n"));
return(hRes);
}
}
return ResultFromScode( S_OK );
}
//**********************************************************************
//
// COleInPlaceActiveObject::EnableModeless
//
// Purpose:
//
// Called to enable/disable modeless dialogs.
//
// Parameters:
//
// BOOL fEnable - TRUE to enable, FALSE to disable
//
// Return Value:
//
// S_OK
//
// Function Calls:
// Function Location
//
// TestDebugOut Windows API
//
//
// Comments:
//
// Called by the container when a model dialog box is added/removed
// from the screen. The appropriate action for a server application
// is to disable/enable any modeless dialogs currently being displayed.
// Since this application doesn't display any modeless dialogs,
// this method is essentially ignored.
//
//********************************************************************
STDMETHODIMP COleInPlaceActiveObject::EnableModeless ( BOOL fEnable)
{
TestDebugOut(TEXT("In COleInPlaceActiveObject::EnableModeless\r\n"));
return ResultFromScode( S_OK );
}