summaryrefslogtreecommitdiffstats
path: root/private/oleutest/simpsvr/ioipo.cpp
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/oleutest/simpsvr/ioipo.cpp
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/oleutest/simpsvr/ioipo.cpp')
-rw-r--r--private/oleutest/simpsvr/ioipo.cpp400
1 files changed, 400 insertions, 0 deletions
diff --git a/private/oleutest/simpsvr/ioipo.cpp b/private/oleutest/simpsvr/ioipo.cpp
new file mode 100644
index 000000000..c7379ab02
--- /dev/null
+++ b/private/oleutest/simpsvr/ioipo.cpp
@@ -0,0 +1,400 @@
+//**********************************************************************
+// File name: IOIPO.CPP
+//
+// Implementation file for the CClassFactory Class
+//
+// Functions:
+//
+// See ioipo.h for a list of member functions.
+//
+// Copyright (c) 1993 Microsoft Corporation. All rights reserved.
+//**********************************************************************
+
+#include "pre.h"
+#include "obj.h"
+#include "ioipo.h"
+#include "app.h"
+#include "doc.h"
+#include "math.h"
+
+//**********************************************************************
+//
+// COleInPlaceObject::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 COleInPlaceObject::QueryInterface ( REFIID riid, LPVOID FAR* ppvObj)
+{
+ TestDebugOut(TEXT("In COleInPlaceObject::QueryInterface\r\n"));
+ // need to NULL the out parameter
+ *ppvObj = NULL;
+ return m_lpObj->QueryInterface(riid, ppvObj);
+}
+
+//**********************************************************************
+//
+// COleInPlaceObject::AddRef
+//
+// Purpose:
+//
+// Increments the reference count of CSimpSvrObj. Since
+// COleInPlaceObject is a nested class of CSimpSvrObj, we don't need
+// to have a separate reference count for COleInPlaceObject. We can
+// use the reference count of CSimpSvrObj.
+//
+// Parameters:
+//
+// None
+//
+// Return Value:
+//
+// The new reference count of CSimpSvrObj
+//
+// Function Calls:
+// Function Location
+//
+// OuputDebugString Windows API
+// CSimpSvrObj::AddRef OBJ.CPP
+//
+//
+//********************************************************************
+
+STDMETHODIMP_(ULONG) COleInPlaceObject::AddRef ()
+{
+ TestDebugOut(TEXT("In COleInPlaceObject::AddRef\r\n"));
+ return m_lpObj->AddRef();
+}
+
+//**********************************************************************
+//
+// COleInPlaceObject::Release
+//
+// Purpose:
+//
+// Decrements the reference count of CSimpSvrObj. Since
+// COleInPlaceObject is a nested class of CSimpSvrObj, we don't need
+// to have a separate reference count for COleInPlaceObject. We can
+// use the reference count of CSimpSvrObj.
+//
+// Parameters:
+//
+// None
+//
+// Return Value:
+//
+// The new reference count of CSimpSvrObj
+//
+// Function Calls:
+// Function Location
+//
+// TestDebugOut Windows API
+// CSimpSvrObj::Release OBJ.CPP
+//
+//
+//********************************************************************
+
+STDMETHODIMP_(ULONG) COleInPlaceObject::Release ()
+{
+ TestDebugOut(TEXT("In COleInPlaceObject::Release\r\n"));
+ return m_lpObj->Release();
+}
+
+//**********************************************************************
+//
+// COleInPlaceObject::InPlaceDeactivate
+//
+// Purpose:
+//
+// Called to deactivat the object
+//
+// Parameters:
+//
+// None
+//
+// Return Value:
+// NOERROR
+//
+// Function Calls:
+// Function Location
+//
+// TestDebugOut Windows API
+// IOleInPlaceSite::OnInPlaceDeactivate Container
+// IOleInPlaceSite::Release Container
+// CSimpSvrObj::DeactivateUI OBJ.CPP
+// CSimpSvrObj::DoInPlaceHide OBJ.CPP
+//
+//********************************************************************
+
+STDMETHODIMP COleInPlaceObject::InPlaceDeactivate()
+{
+ TestDebugOut(TEXT("In COleInPlaceObject::InPlaceDeactivate\r\n"));
+
+ // if not inplace active, return NOERROR
+ if (!m_lpObj->m_fInPlaceActive)
+ return NOERROR;
+
+ // clear inplace flag
+ m_lpObj->m_fInPlaceActive = FALSE;
+
+ // deactivate the UI
+ m_lpObj->DeactivateUI();
+ m_lpObj->DoInPlaceHide();
+
+ // tell the container that we are deactivating.
+ if (m_lpObj->m_lpIPSite)
+ {
+ HRESULT hRes;
+ if ((hRes=m_lpObj->m_lpIPSite->OnInPlaceDeactivate()) != S_OK)
+ {
+ TestDebugOut(TEXT("COleInPlaceObject::InPlaceDeactivate \
+ OnInPlaceDeactivate fails\n"));
+ }
+ m_lpObj->m_lpIPSite->Release();
+ m_lpObj->m_lpIPSite =NULL;
+ }
+
+ return ResultFromScode(S_OK);
+}
+
+//**********************************************************************
+//
+// COleInPlaceObject::UIDeactivate
+//
+// Purpose:
+//
+// Instructs us to remove our UI.
+//
+// Parameters:
+//
+// None
+//
+// Return Value:
+//
+// S_OK
+//
+// Function Calls:
+// Function Location
+//
+// TestDebugOut Windows API
+// CSimpSvrObj::DeactivateUI OBJ.CPP
+//
+//
+//********************************************************************
+
+STDMETHODIMP COleInPlaceObject::UIDeactivate()
+{
+ TestDebugOut(TEXT("In COleInPlaceObject::UIDeactivate\r\n"));
+
+ m_lpObj->DeactivateUI();
+
+ return ResultFromScode (S_OK);
+}
+
+//**********************************************************************
+//
+// COleInPlaceObject::SetObjectRects
+//
+// Purpose:
+//
+// Called when the container clipping region or the object position
+// changes.
+//
+// Parameters:
+//
+// LPCRECT lprcPosRect - New Position Rect.
+//
+// LPCRECT lprcClipRect - New Clipping Rect.
+//
+// Return Value:
+//
+// S_OK
+//
+// Function Calls:
+// Function Location
+//
+// TestDebugOut Windows API
+// IntersectRect Windows API
+// OffsetRect Windows API
+// CopyRect Windows API
+// MoveWindow Windows API
+// CSimpSvrDoc::GethHatchWnd DOC.H
+// CSimpSvrDoc::gethDocWnd DOC.h
+// SetHatchWindowSize OLE2UI
+//
+//
+//********************************************************************
+
+STDMETHODIMP COleInPlaceObject::SetObjectRects ( LPCRECT lprcPosRect, LPCRECT lprcClipRect)
+{
+ TestDebugOut(TEXT("In COleInPlaceObject::SetObjectRects\r\n"));
+
+ RECT resRect;
+ POINT pt;
+
+ // Get the intersection of the clipping rect and the position rect.
+ IntersectRect(&resRect, lprcPosRect, lprcClipRect);
+
+ m_lpObj->m_xOffset = abs (resRect.left - lprcPosRect->left);
+ m_lpObj->m_yOffset = abs (resRect.top - lprcPosRect->top);
+
+ m_lpObj->m_scale = (float)(lprcPosRect->right - lprcPosRect->left)/m_lpObj->m_size.x;
+
+ if (m_lpObj->m_scale == 0)
+ m_lpObj->m_scale = 1.0F;
+
+ TCHAR szBuffer[255];
+
+ wsprintf(szBuffer, TEXT("New Scale %3d\r\n"), m_lpObj->m_scale);
+
+ TestDebugOut(szBuffer);
+
+ // Adjust the size of the Hatch Window.
+ SetHatchWindowSize(m_lpObj->m_lpDoc->GethHatchWnd(),(LPRECT) lprcPosRect, (LPRECT) lprcClipRect, &pt);
+
+ // offset the rect
+ OffsetRect(&resRect, pt.x, pt.y);
+
+ CopyRect(&m_lpObj->m_posRect, lprcPosRect);
+
+ // Move the actual object window
+ MoveWindow(m_lpObj->m_lpDoc->GethDocWnd(),
+ resRect.left,
+ resRect.top,
+ resRect.right - resRect.left,
+ resRect.bottom - resRect.top,
+ TRUE);
+
+
+ return ResultFromScode( S_OK );
+}
+
+//**********************************************************************
+//
+// COleInPlaceObject::GetWindow
+//
+// Purpose:
+//
+// Returns the Window handle of the inplace object
+//
+// Parameters:
+//
+// HWND FAR* lphwnd - Out pointer in which to return the window
+// Handle.
+//
+// Return Value:
+//
+// S_OK
+//
+// Function Calls:
+// Function Location
+//
+// TestDebugOut Windows API
+// CSimpleDoc::GethDocWnd DOC.H
+//
+//
+//********************************************************************
+
+STDMETHODIMP COleInPlaceObject::GetWindow ( HWND FAR* lphwnd)
+{
+ TestDebugOut(TEXT("In COleInPlaceObject::GetWindow\r\n"));
+ *lphwnd = m_lpObj->m_lpDoc->GethDocWnd();
+
+ return ResultFromScode( S_OK );
+}
+
+//**********************************************************************
+//
+// COleInPlaceObject::ContextSensitiveHelp
+//
+// Purpose:
+//
+// Used in performing Context Sensitive Help
+//
+// Parameters:
+//
+// BOOL fEnterMode - Flag to determine if enter or exiting
+// Context Sensitive Help.
+//
+// Return Value:
+//
+// E_NOTIMPL
+//
+// Function Calls:
+// Function Location
+//
+// TestDebugOut Windows API
+//
+// Comments:
+//
+// This function is not implemented due to the fact that it is
+// beyond the scope of a simple object. All *real* applications
+// are going to want to implement this function, otherwise any
+// container that supports context sensitive help will not work
+// properly while the object is in place.
+//
+// See TECHNOTES.WRI include with the OLE SDK for details on
+// Implementing this method.
+//
+//********************************************************************
+
+STDMETHODIMP COleInPlaceObject::ContextSensitiveHelp ( BOOL fEnterMode)
+{
+ TestDebugOut(TEXT("In COleInPlaceObject::ContextSensitiveHelp\r\n"));
+ return ResultFromScode( E_NOTIMPL);
+}
+
+//**********************************************************************
+//
+// COleInPlaceObject::ReactivateAndUndo
+//
+// Purpose:
+//
+// Called when the container wants to undo the last edit made in
+// the object.
+//
+// Parameters:
+//
+// None
+//
+// Return Value:
+//
+// INPLACE_E_NOTUNDOABLE
+//
+// Function Calls:
+// Function Location
+//
+// TestDebugOut Windows API
+//
+// Comments:
+//
+// Since this server does not support undo, the value
+// INPLACE_E_NOTUNDOABLE is always returned.
+//
+//********************************************************************
+
+STDMETHODIMP COleInPlaceObject::ReactivateAndUndo ()
+{
+ TestDebugOut(TEXT("In COleInPlaceObject::ReactivateAndUndo\r\n"));
+ return ResultFromScode( INPLACE_E_NOTUNDOABLE );
+}
+