windows-nt/Source/XPSP1/NT/com/ole32/ole232/stdimpl/clthndlr.h

153 lines
4.7 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1995.
//
// File: clnthndlr.h
//
// Contents:
//
// Classes:
//
// Functions:
//
// History: 10-10-95 JohannP (Johann Posch) Created
//
//----------------------------------------------------------------------------
#ifndef _CLTHNDLR_H_DEFINED_
#define _CLTHNDLR_H_DEFINED_
//+---------------------------------------------------------------------------
//
// Class: CClientSiteHandler ()
//
// Purpose: Implement ClientSide of IOleClientSite handler
//
//
// History: 11-17-95 JohannP (Johann Posch) Created
//
// Notes:
//
//----------------------------------------------------------------------------
class CClientSiteHandler : public IClientSiteHandler
{
public:
CClientSiteHandler(IOleClientSite *pOCS);
~CClientSiteHandler();
STDMETHOD(QueryInterface) ( REFIID riid, LPVOID FAR* ppvObj);
STDMETHOD_(ULONG,AddRef) (void);
STDMETHOD_(ULONG,Release) (void);
// IOleClientSite methods
STDMETHOD (GetContainer)(IOleContainer **ppContainer);
STDMETHOD (OnShowWindow)(BOOL fShow);
STDMETHOD (GetMoniker)(DWORD dwAssign,DWORD dwWhichMoniker,IMoniker **ppmk);
STDMETHOD (RequestNewObjectLayout)();
STDMETHOD (SaveObject)();
STDMETHOD (ShowObject)();
// IOleWindow methods
STDMETHOD (GetWindow)(HWND *phwnd);
STDMETHOD (ContextSensitiveHelp)(BOOL fEnterMode);
// IOleInPlaceSite methods
STDMETHOD (CanInPlaceActivate)(void);
STDMETHOD (OnInPlaceActivate)(void);
STDMETHOD (OnUIActivate)(void);
STDMETHOD (GetWindowContext)(IOleInPlaceFrame **ppFrame,IOleInPlaceUIWindow **ppDoc,
LPRECT lprcPosRect,LPRECT lprcClipRect,LPOLEINPLACEFRAMEINFO lpFrameInfo);
STDMETHOD (Scroll)(SIZE scrollExtant);
STDMETHOD (OnUIDeactivate)(BOOL fUndoable);
STDMETHOD (OnInPlaceDeactivate)(void);
STDMETHOD (DiscardUndoState)(void);
STDMETHOD (DeactivateAndUndo)(void);
STDMETHOD (OnPosRectChange)(LPCRECT lprcPosRect);
// IClientSiteHandler methods
STDMETHOD (GoInPlaceActivate)(HWND *phwndOIPS);
public:
IOleClientSite *m_pOCS;
IOleInPlaceSite *m_pOIPS;
private:
ULONG m_cRefs;
};
// IOleClientSite Replacement implementation
// Implements ServerSide of ClientSiteHandler.
class CEmbServerClientSite : public IOleClientSite, public IOleInPlaceSite
{
public:
CEmbServerClientSite(IUnknown *pUnkOuter);
~CEmbServerClientSite();
STDMETHOD(Initialize) (OBJREF objref,BOOL fHasIPSite);
STDMETHOD(SetDoVerbState) (BOOL fDoVerbState);
// Controlling Unknown.
class CPrivUnknown : public IUnknown
{
public:
STDMETHOD(QueryInterface) ( REFIID riid, LPVOID FAR* ppvObj);
STDMETHOD_(ULONG,AddRef) (void);
STDMETHOD_(ULONG,Release) (void);
CEmbServerClientSite *m_EmbServerClientSite;
};
friend class CPrivUnknown;
CPrivUnknown m_Unknown;
// IUnknown Methods
STDMETHOD(QueryInterface) ( REFIID iid, LPVOID FAR* ppvObj);
STDMETHOD_(ULONG,AddRef) (void);
STDMETHOD_(ULONG,Release) (void);
// IOleClientSite Methods
STDMETHOD (SaveObject)( void);
STDMETHOD (GetMoniker)( DWORD dwAssign,DWORD dwWhichMoniker,IMoniker **ppmk);
STDMETHOD (GetContainer)(IOleContainer **ppContainer);
STDMETHOD (ShowObject)( void);
STDMETHOD (OnShowWindow)(BOOL fShow);
STDMETHOD (RequestNewObjectLayout)( void);
// IOleInPlaceSiteMethods.
STDMETHOD (GetWindow)(HWND *phwnd);
STDMETHOD (ContextSensitiveHelp)( BOOL fEnterMode);
STDMETHOD (CanInPlaceActivate)(void);
STDMETHOD (OnInPlaceActivate)( void);
STDMETHOD (OnUIActivate)( void);
STDMETHOD (GetWindowContext)(IOleInPlaceFrame **ppFrame,IOleInPlaceUIWindow **ppDoc,
LPRECT lprcPosRect,LPRECT lprcClipRect,LPOLEINPLACEFRAMEINFO lpFrameInfo);
STDMETHOD (Scroll)(SIZE scrollExtant);
STDMETHOD (OnUIDeactivate)(BOOL fUndoable);
STDMETHOD (OnInPlaceDeactivate)( void);
STDMETHOD (DiscardUndoState)( void);
STDMETHOD (DeactivateAndUndo)( void);
STDMETHOD (OnPosRectChange)(LPCRECT lprcPosRect);
private:
IClientSiteHandler *m_pClientSiteHandler; // Pointer to Real Containers ClientSite.
IUnknown *m_pUnkOuter; // Controlling Unknown
ULONG m_cRefs;
IUnknown *m_pUnkInternal; // used for QI on object.
BOOL m_fInDelete; // Set to True if RefCount has gone to Zero.
BOOL m_fInDoVerb;
BOOL m_fHasIPSite;
// Cache data while in doVerbState
HWND m_hwndOIPS;
};
HRESULT CreateClientSiteHandler(IOleClientSite *pOCS, CClientSiteHandler **ppClntHdlr,BOOL *pfHasIPSite);
#endif // _CLTHNDLR_H_DEFINED