iup-stack/iup/srcole/tOleHandler.h

140 lines
3.9 KiB
C++
Executable File

// tOleHandler.h: interface for the tOleHandler class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_TOLEHANDLER_H__49B97C12_8DEB_11D3_A906_0004ACE655F9__INCLUDED_)
#define AFX_TOLEHANDLER_H__49B97C12_8DEB_11D3_A906_0004ACE655F9__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include <windows.h>
#include <olectl.h>
#include "tOleClientSite.h"
#include "tOleInPlaceSite.h"
#include "tOleControlSite.h"
#include "tDispatch.h"
#include "tAmbientProperties.h"
#include "tLegacy.h"
#ifndef LPOLEINPLACEOBJECT
typedef interface IOleInPlaceObject *LPOLEINPLACEOBJECT;
#endif
class tOleClientSite;
class tOleHandler : public IUnknown
{
public:
friend class tOleClientSite;
friend class tOleInPlaceSite;
friend class tOleControlSite;
friend class tDispatch;
tOleHandler();
virtual ~tOleHandler();
tAmbientProperties m_ambientProp;
HWND m_hWnd;
private:
DWORD m_cOpens; //Count calls to Open
BOOL m_fInitialized; //Something here?
LPUNKNOWN m_pObj; //The object here
LPSTORAGE m_pIStorage; //Sub-storage for tenant
FORMATETC m_fe; //Used to create the object
DWORD m_dwState; //State flags
RECTL m_rcl; //Space of this object
CLSID m_clsID; //Object class (for statics)
BOOL m_fSetExtent; //Call SetExtent on next run
ULONG m_cRef; //We're an object now
LPOLEOBJECT m_pIOleObject; //IOleObject on m_pObj
LPVIEWOBJECT2 m_pIViewObject2; //IViewObject2 on m_pObj
ULONG m_grfMisc; //OLEMISC flags
BOOL m_fRepaintEnabled; //No redundant paints
//Our interfaces
tOleClientSite *m_pImpIOleClientSite;
tOleInPlaceSite *m_pImpIOleIPSite; //Our interface
LPOLEINPLACEOBJECT m_pIOleIPObject; //The object
RECT m_rcPos; //Last object rect
BOOL m_fInRectSet; //Prevent reentrancy
//CHAPTER24MOD
tOleControlSite *m_pImpIOleControlSite; //Implemented
tDispatch *m_pImpIDispatch; //Implemented
//Control interfaces
LPOLECONTROL m_pIOleControl; //Used
//Other state information
BOOL m_fHaveControlInfo;
CONTROLINFO m_ctrlInfo;
ULONG m_cLockInPlace;
BOOL m_fPendingDeactivate;
//End CHAPTER24MOD
/*
* This flag is used exculsively by the implementation of
* IOleUILinkContainer on the page we're in for the Links
* Dialog. Since we never use it ourselves, public here
* is no big deal.
*/
public:
BOOL m_fLinkAvail;
protected:
void CalcNaturalSize(void);
long natural_height;
long natural_width;
BOOL ObjectInitialize(LPUNKNOWN);
//CHAPTER24MOD
BOOL ControlInitialize(void);
//End CHAPTER24MOD
public:
void setDesignMode(bool value, bool notify);
void GetNaturalSize(long *pWidth, long *pHeight);
void OnShow(void);
//Gotta have an IUnknown for delegation
STDMETHODIMP QueryInterface(REFIID, LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
UINT Create(LPVOID);
BOOL Open(LPSTORAGE);
void Close(BOOL);
BOOL Activate(LONG, LPMSG);
void EnableRepaint(BOOL);
void ObjectGet(LPUNKNOWN *);
void SizeGet(LPSIZEL, BOOL);
void SizeSet(LPSIZEL, BOOL, BOOL);
void RectGet(LPRECTL, BOOL);
void RectSet(LPRECTL, BOOL, BOOL);
void DeactivateInPlaceObject(BOOL);
void UpdateInPlaceObjectRects(LPCRECT, BOOL);
HWND ObjectWindow(void);
//CHAPTER24MOD
DWORD GetControlFlags();
BOOL TryMnemonic(LPMSG);
void AmbientChange(DISPID);
//End CHAPTER24MOD
};
#endif // !defined(AFX_TOLEHANDLER_H__49B97C12_8DEB_11D3_A906_0004ACE655F9__INCLUDED_)