📄 tenant.h
字号:
/*
* TENANT.H
* Patron Chapter 24
*
* Definitions and function prototypes for the CTenant class
*
* Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
*
* Kraig Brockschmidt, Microsoft
* Internet : kraigb@microsoft.com
* Compuserve: >INTERNET:kraigb@microsoft.com
*/
#ifndef _TENANT_H_
#define _TENANT_H_
class CImpIOleClientSite : public IOleClientSite
{
protected:
ULONG m_cRef;
class CTenant *m_pTen;
LPUNKNOWN m_pUnkOuter;
public:
CImpIOleClientSite(class CTenant *, LPUNKNOWN);
~CImpIOleClientSite(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP SaveObject(void);
STDMETHODIMP GetMoniker(DWORD, DWORD, LPMONIKER *);
STDMETHODIMP GetContainer(LPOLECONTAINER *);
STDMETHODIMP ShowObject(void);
STDMETHODIMP OnShowWindow(BOOL);
STDMETHODIMP RequestNewObjectLayout(void);
};
typedef CImpIOleClientSite *PCImpIOleClientSite;
class CImpIAdviseSink : public IAdviseSink
{
protected:
ULONG m_cRef;
class CTenant *m_pTen;
LPUNKNOWN m_pUnkOuter;
public:
CImpIAdviseSink(class CTenant *, LPUNKNOWN);
~CImpIAdviseSink(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP_(void) OnDataChange(LPFORMATETC, LPSTGMEDIUM);
STDMETHODIMP_(void) OnViewChange(DWORD, LONG);
STDMETHODIMP_(void) OnRename(LPMONIKER);
STDMETHODIMP_(void) OnSave(void);
STDMETHODIMP_(void) OnClose(void);
};
typedef CImpIAdviseSink *PCImpIAdviseSink;
class CImpIOleInPlaceSite : public IOleInPlaceSite
{
protected:
ULONG m_cRef;
class CTenant *m_pTen;
LPUNKNOWN m_pUnkOuter;
public:
CImpIOleInPlaceSite(class CTenant *, LPUNKNOWN);
~CImpIOleInPlaceSite(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetWindow(HWND *);
STDMETHODIMP ContextSensitiveHelp(BOOL);
STDMETHODIMP CanInPlaceActivate(void);
STDMETHODIMP OnInPlaceActivate(void);
STDMETHODIMP OnUIActivate(void);
STDMETHODIMP GetWindowContext(LPOLEINPLACEFRAME *
, LPOLEINPLACEUIWINDOW *, LPRECT, LPRECT
, LPOLEINPLACEFRAMEINFO);
STDMETHODIMP Scroll(SIZE);
STDMETHODIMP OnUIDeactivate(BOOL);
STDMETHODIMP OnInPlaceDeactivate(void);
STDMETHODIMP DiscardUndoState(void);
STDMETHODIMP DeactivateAndUndo(void);
STDMETHODIMP OnPosRectChange(LPCRECT);
};
typedef CImpIOleInPlaceSite *PCImpIOleInPlaceSite;
//CHAPTER24MOD
class CImpIOleControlSite : public IOleControlSite
{
protected:
ULONG m_cRef;
class CTenant *m_pTen;
LPUNKNOWN m_pUnkOuter;
public:
CImpIOleControlSite(class CTenant *, LPUNKNOWN);
~CImpIOleControlSite(void);
STDMETHODIMP QueryInterface(REFIID, LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP OnControlInfoChanged(void);
STDMETHODIMP LockInPlaceActive(BOOL);
STDMETHODIMP GetExtendedControl(LPDISPATCH *);
STDMETHODIMP TransformCoords(POINTL *, POINTF *, DWORD);
STDMETHODIMP TranslateAccelerator(LPMSG, DWORD);
STDMETHODIMP OnFocus(BOOL);
STDMETHODIMP ShowPropertyFrame(void);
};
typedef class CImpIOleControlSite *PCImpIOleControlSite;
//This IDispatch implements Ambient properties
class CImpIDispatch : public IDispatch
{
protected:
ULONG m_cRef;
class CTenant *m_pTen;
LPUNKNOWN m_pUnkOuter;
public:
CImpIDispatch(class CTenant *, LPUNKNOWN);
~CImpIDispatch(void);
STDMETHODIMP QueryInterface(REFIID, LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetTypeInfoCount(UINT *);
STDMETHODIMP GetTypeInfo(UINT, LCID, ITypeInfo **);
STDMETHODIMP GetIDsOfNames(REFIID, OLECHAR **, UINT
, LCID, DISPID *);
STDMETHODIMP Invoke(DISPID, REFIID, LCID, USHORT
, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *);
};
typedef class CImpIDispatch *PCImpIDispatch;
//Events IDispatch created once for each outgoing event set.
class CDispatchEvents : public IDispatch
{
protected:
ULONG m_cRef;
class CTenant *m_pTen;
public:
CDispatchEvents(class CTenant *);
~CDispatchEvents(void);
STDMETHODIMP QueryInterface(REFIID, LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetTypeInfoCount(UINT *);
STDMETHODIMP GetTypeInfo(UINT, LCID, ITypeInfo **);
STDMETHODIMP GetIDsOfNames(REFIID, OLECHAR **, UINT
, LCID, DISPID *);
STDMETHODIMP Invoke(DISPID, REFIID, LCID, USHORT
, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *);
};
typedef class CDispatchEvents *PCDispatchEvents;
//End CHAPTER24MOD
/*
* Tenant class describing an individual piece of data in a page.
* It knows where it sits, what object is inside of it, and what
* its idenitifer is such that it can find it's storage within a
* page.
*/
//Patron Objects clipboard format
typedef struct tagPATRONOBJECT
{
POINTL ptl; //Location of object
POINTL ptlPick; //Pick point from drag-drop operation
SIZEL szl; //Extents of object (absolute)
FORMATETC fe; //Actual object format
} PATRONOBJECT, *PPATRONOBJECT;
//Values for hit-testing, drawing, and resize-tracking tenants
#define CXYHANDLE 5
//Tenant types (not persistent, but determined at load time)
typedef enum
{
TENANTTYPE_NULL=0,
TENANTTYPE_STATIC,
TENANTTYPE_EMBEDDEDOBJECT,
TENANTTYPE_EMBEDDEDFILE,
TENANTTYPE_EMBEDDEDOBJECTFROMDATA,
TENANTTYPE_LINKEDOBJECT,
TENANTTYPE_LINKEDFILE,
TENANTTYPE_LINKEDOBJECTFROMDATA
} TENANTTYPE, *PTENANTTYPE;
//State flags
//CHAPTER24MOD
//Switched #defines to an enum
enum
{
TENANTSTATE_DEFAULT =0x00000000,
TENANTSTATE_SELECTED=0x00000001,
TENANTSTATE_OPEN =0x00000002,
TENANTSTATE_SHOWTYPE=0x00000004,
//New ones for controls.
TENANTSTATE_CONTROL =0x00000100,
TENANTSTATE_EVENTS =0x00000200,
TENANTSTATE_BUTTON =0x00000400,
TENANTSTATE_LABEL =0x00000800,
TENANTSTATE_DEFBUTTON =0x00001000,
TENANTSTATE_CANCELBUTTON=0x00002000
};
//To mask off non-control flags
#define STATEMASK_CONTROLS 0xFFFFFF00
//End CHAPTER24MOD
/*
* Persistent information we need to save for each tenant, which is
* done in the tenant list instead of with each tenant. Since this
* is a small structure it's best not to blow another stream for it
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -