diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/oleutest/simpdnd/iocs.cpp | |
download | NT4.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/simpdnd/iocs.cpp')
-rw-r--r-- | private/oleutest/simpdnd/iocs.cpp | 365 |
1 files changed, 365 insertions, 0 deletions
diff --git a/private/oleutest/simpdnd/iocs.cpp b/private/oleutest/simpdnd/iocs.cpp new file mode 100644 index 000000000..c17b08b5f --- /dev/null +++ b/private/oleutest/simpdnd/iocs.cpp @@ -0,0 +1,365 @@ +//********************************************************************** +// File name: IOCS.CPP +// +// Implementation file for COleClientSite +// +// Functions: +// +// See IOCS.H for class definition +// +// Copyright (c) 1992 - 1993 Microsoft Corporation. All rights reserved. +//********************************************************************** + +#include "pre.h" +#include "iocs.h" +#include "ias.h" +#include "app.h" +#include "site.h" +#include "doc.h" + + +//********************************************************************** +// +// COleClientSite::QueryInterface +// +// Purpose: +// +// Used for interface negotiation +// +// Parameters: +// +// REFIID riid - A reference to the interface that is +// being queried. +// +// LPVOID FAR* ppvObj - An out parameter to return a pointer to +// the interface. +// +// Return Value: +// +// S_OK - The interface is supported. +// E_NOINTERFACE - The interface is not supported +// +// Function Calls: +// Function Location +// +// TestDebugOut Windows API +// CSimpleSite::QueryInterface SITE.CPP +// +// +//******************************************************************** + +STDMETHODIMP COleClientSite::QueryInterface(REFIID riid, LPVOID FAR* ppvObj) +{ + TestDebugOut("In IOCS::QueryInterface\r\n"); + + // delegate to the container Site + return m_pSite->QueryInterface(riid, ppvObj); +} + +//********************************************************************** +// +// COleClientSite::AddRef +// +// Purpose: +// +// Increments the reference count to CSimpleSite. Since COleClientSite +// is a nested class of CSimpleSite, we don't need an extra reference +// count for COleClientSite. We can safely use the reference count of +// CSimpleSite. +// +// Parameters: +// +// None +// +// Return Value: +// +// ULONG - The new reference count of CSimpleSite +// +// Function Calls: +// Function Location +// +// TestDebugOut Windows API +// CSimpleSite::AddRef SITE.CPP +// +// +//******************************************************************** + +STDMETHODIMP_(ULONG) COleClientSite::AddRef() +{ + TestDebugOut("In IOCS::AddRef\r\n"); + + // delegate to the container Site + return m_pSite->AddRef(); +} + + +//********************************************************************** +// +// COleClientSite::Release +// +// Purpose: +// +// Decrements the reference count to CSimpleSite. Since COleClientSite +// is a nested class of CSimpleSite, we don't need an extra reference +// count for COleClientSite. We can safely use the reference count of +// CSimpleSite. +// +// Parameters: +// +// None +// +// Return Value: +// +// ULONG - The new reference count of the CSimpleSite +// +// Function Calls: +// Function Location +// +// TestDebugOut Windows API +// CSimpleSite::Release SITE.CPP +// +// +//******************************************************************** + +STDMETHODIMP_(ULONG) COleClientSite::Release() +{ + TestDebugOut("In IOCS::Release\r\n"); + + // delegate to the container Site + return m_pSite->Release(); +} + +//********************************************************************** +// +// COleClientSite::SaveObject +// +// Purpose: +// +// Called by the object when it wants to be saved to persistant +// storage +// +// Parameters: +// +// None +// +// Return Value: +// +// S_OK +// +// Function Calls: +// Function Location +// +// TestDebugOut Windows API +// IOleObject::QueryInterface Object +// IPersistStorage::SaveCompleted Object +// IPersistStorage::Release Object +// ResultFromScode OLE API +// +// +//******************************************************************** + +STDMETHODIMP COleClientSite::SaveObject() +{ + LPPERSISTSTORAGE lpPS; + SCODE sc = E_FAIL; + + TestDebugOut("In IOCS::SaveObject\r\n"); + + // get a pointer to IPersistStorage + HRESULT hErr = m_pSite->m_lpOleObject->QueryInterface( + IID_IPersistStorage,(LPVOID FAR *)&lpPS); + + // save the object + if (hErr == NOERROR) + { + sc = GetScode( OleSave(lpPS, m_pSite->m_lpObjStorage, TRUE) ); + lpPS->SaveCompleted(NULL); + lpPS->Release(); + } + + return ResultFromScode(sc); +} + +//********************************************************************** +// +// COleClientSite::GetMoniker +// +// Purpose: +// +// Not Implemented +// +// Parameters: +// +// DWORD dwAssign - the type of Moniker to be returned +// DWORD dwWhichMoniker - which Moniker to be returned in ppmk +// LPMONIKER ppmk - point to where to return the Moniker +// +// Return Value: +// +// E_NOTIMPL +// +// Function Calls: +// Function Location +// +// TestDebugOut Windows API +// +// Comments: +// +// This function is not implemented because we don't support +// linking. +// +//******************************************************************** + +STDMETHODIMP COleClientSite::GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, + LPMONIKER FAR* ppmk) +{ + TestDebugOut("In IOCS::GetMoniker\r\n"); + + // need to null the out pointer + *ppmk = NULL; + + return ResultFromScode(E_NOTIMPL); +} + +//********************************************************************** +// +// COleClientSite::GetContainer +// +// Purpose: +// +// Not Implemented +// +// Parameters: +// +// LPOLECONTAINER ppContainer - point to where the interface to be +// returned +// +// Return Value: +// +// E_NOTIMPL +// +// Function Calls: +// Function Location +// +// TestDebugOut Windows API +// +// +//******************************************************************** + +STDMETHODIMP COleClientSite::GetContainer(LPOLECONTAINER FAR* ppContainer) +{ + TestDebugOut("In IOCS::GetContainer\r\n"); + + // NULL the out pointer + *ppContainer = NULL; + + return ResultFromScode(E_NOTIMPL); +} + +//********************************************************************** +// +// COleClientSite::ShowObject +// +// Purpose: +// +// Not Implemented +// +// Parameters: +// +// None +// +// Return Value: +// +// NOERROR +// +// Function Calls: +// Function Location +// +// TestDebugOut Windows API +// +// Comments: +// +// This function is not implemented because we don't support +// linking. +// +//******************************************************************** + +STDMETHODIMP COleClientSite::ShowObject() +{ + TestDebugOut("In IOCS::ShowObject\r\n"); + return NOERROR; +} + +//********************************************************************** +// +// COleClientSite::OnShowWindow +// +// Purpose: +// +// Object calls this method when it is opening/closing non-InPlace +// Window +// +// Parameters: +// +// BOOL fShow - TRUE if Window is opening, FALSE if closing +// +// Return Value: +// +// S_OK +// +// Function Calls: +// Function Location +// +// TestDebugOut Windows API +// InvalidateRect Windows API +// BringWindowToTop Windows API +// SetFocus Windows API +// ResultFromScode OLE API +// +// +//******************************************************************** + +STDMETHODIMP COleClientSite::OnShowWindow(BOOL fShow) +{ + TestDebugOut("In IOCS::OnShowWindow\r\n"); + m_pSite->m_fObjectOpen = fShow; + InvalidateRect(m_pSite->m_lpDoc->m_hDocWnd, NULL, TRUE); + + // if object window is closing, then bring container window to top + if (! fShow) + { + BringWindowToTop(m_pSite->m_lpDoc->m_hDocWnd); + SetFocus(m_pSite->m_lpDoc->m_hDocWnd); + } + return ResultFromScode(S_OK); +} + +//********************************************************************** +// +// COleClientSite::RequestNewObjectLayout +// +// Purpose: +// +// Not Implemented +// +// Parameters: +// +// None +// +// Return Value: +// +// E_NOTIMPL +// +// Function Calls: +// Function Location +// +// TestDebugOut Windows API +// +// +//******************************************************************** + +STDMETHODIMP COleClientSite::RequestNewObjectLayout() +{ + TestDebugOut("In IOCS::RequestNewObjectLayout\r\n"); + return ResultFromScode(E_NOTIMPL); +} |