142 lines
5.4 KiB
C
142 lines
5.4 KiB
C
|
//**********************************************************************
|
|||
|
// File name: obj.h
|
|||
|
//
|
|||
|
// Definition of CSimpSvrObj
|
|||
|
//
|
|||
|
// Copyright (c) 1993 Microsoft Corporation. All rights reserved.
|
|||
|
//**********************************************************************
|
|||
|
|
|||
|
#if !defined( _OBJ_H_)
|
|||
|
#define _OBJ_H_
|
|||
|
|
|||
|
#include "ioipao.h"
|
|||
|
#include "ioipo.h"
|
|||
|
#include "ioo.h"
|
|||
|
#include "ips.h"
|
|||
|
#include "ido.h"
|
|||
|
#include "iec.h"
|
|||
|
|
|||
|
class CSimpSvrDoc;
|
|||
|
interface COleObject;
|
|||
|
interface CPersistStorage;
|
|||
|
interface CDataObject;
|
|||
|
interface COleInPlaceActiveObject;
|
|||
|
interface COleInPlaceObject;
|
|||
|
interface CExternalConnection;
|
|||
|
|
|||
|
class CSimpSvrObj : public IUnknown
|
|||
|
{
|
|||
|
private:
|
|||
|
CSimpSvrDoc FAR * m_lpDoc; // Back pointer
|
|||
|
int m_nCount; // reference count
|
|||
|
BOOL m_fInPlaceActive; // Used during InPlace Negotiation
|
|||
|
BOOL m_fInPlaceVisible; // " " " " " " " " "
|
|||
|
BOOL m_fUIActive; // " " " " " " " " "
|
|||
|
HMENU m_hmenuShared; // " " " " " " " " "
|
|||
|
HOLEMENU m_hOleMenu; // " " " " " " " " "
|
|||
|
RECT m_posRect; // " " " " " " " " "
|
|||
|
OLEINPLACEFRAMEINFO m_FrameInfo;
|
|||
|
BOOL m_fSaveWithSameAsLoad;
|
|||
|
BOOL m_fNoScribbleMode;
|
|||
|
|
|||
|
DWORD m_dwRegister; // Registered in ROT
|
|||
|
|
|||
|
int m_red, m_green, m_blue; // current color
|
|||
|
POINT m_size; // current size
|
|||
|
int m_xOffset;
|
|||
|
int m_yOffset;
|
|||
|
float m_scale;
|
|||
|
|
|||
|
HWND m_hWndParent; // parent window handle
|
|||
|
|
|||
|
// interfaces used
|
|||
|
LPSTORAGE m_lpStorage;
|
|||
|
LPSTREAM m_lpColorStm, m_lpSizeStm;
|
|||
|
LPOLECLIENTSITE m_lpOleClientSite; // IOleClientSite
|
|||
|
LPOLEADVISEHOLDER m_lpOleAdviseHolder; // IOleAdviseHolder
|
|||
|
LPDATAADVISEHOLDER m_lpDataAdviseHolder; // IDataAdviseHolder
|
|||
|
LPOLEINPLACEFRAME m_lpFrame; // IOleInPlaceFrame
|
|||
|
LPOLEINPLACEUIWINDOW m_lpCntrDoc; // IOleInPlaceUIWindow
|
|||
|
LPOLEINPLACESITE m_lpIPSite; // IOleInPlaceSite
|
|||
|
|
|||
|
// interface implemented
|
|||
|
COleObject m_OleObject; // IOleObject
|
|||
|
CPersistStorage m_PersistStorage; // IPersistStorage
|
|||
|
CDataObject m_DataObject; // IDataObject
|
|||
|
COleInPlaceActiveObject m_OleInPlaceActiveObject; // IOleInPlaceActiveObject
|
|||
|
COleInPlaceObject m_OleInPlaceObject; // IOleInPlaceObject
|
|||
|
CExternalConnection m_ExternalConnection;
|
|||
|
|
|||
|
public:
|
|||
|
STDMETHODIMP QueryInterface (REFIID riid, LPVOID FAR* ppvObj);
|
|||
|
STDMETHODIMP_(ULONG) AddRef ();
|
|||
|
STDMETHODIMP_(ULONG) Release ();
|
|||
|
|
|||
|
// construction/destruction
|
|||
|
CSimpSvrObj(CSimpSvrDoc FAR * lpSimpSvrDoc);
|
|||
|
~CSimpSvrObj();
|
|||
|
|
|||
|
// utility functions
|
|||
|
void Draw(HDC hDC, BOOL fMetaDC = TRUE);
|
|||
|
void PaintObj(HDC hDC);
|
|||
|
void lButtonDown(WPARAM wParam,LPARAM lParam);
|
|||
|
HANDLE GetMetaFilePict();
|
|||
|
void SaveToStorage (LPSTORAGE lpStg, BOOL fSameAsLoad);
|
|||
|
void LoadFromStorage ();
|
|||
|
|
|||
|
// visual editing helper functions
|
|||
|
BOOL DoInPlaceActivate (LONG lVerb);
|
|||
|
void AssembleMenus();
|
|||
|
void AddFrameLevelUI();
|
|||
|
void DoInPlaceHide();
|
|||
|
void DisassembleMenus();
|
|||
|
void SendOnDataChange();
|
|||
|
void DeactivateUI();
|
|||
|
|
|||
|
// member variable access
|
|||
|
inline BOOL IsInPlaceActive() { return m_fInPlaceActive; };
|
|||
|
inline BOOL IsInPlaceVisible() { return m_fInPlaceVisible; };
|
|||
|
inline BOOL IsUIActive() { return m_fUIActive; };
|
|||
|
inline HWND GetParent() { return m_hWndParent; };
|
|||
|
inline LPSTORAGE GetStorage() { return m_lpStorage; };
|
|||
|
inline LPOLECLIENTSITE GetOleClientSite() { return m_lpOleClientSite; };
|
|||
|
inline LPDATAADVISEHOLDER GetDataAdviseHolder() { return m_lpDataAdviseHolder; };
|
|||
|
inline LPOLEADVISEHOLDER GetOleAdviseHolder() { return m_lpOleAdviseHolder; };
|
|||
|
inline LPOLEINPLACEFRAME GetInPlaceFrame() { return m_lpFrame; };
|
|||
|
inline LPOLEINPLACEUIWINDOW GetUIWindow() { return m_lpCntrDoc; };
|
|||
|
inline LPOLEINPLACESITE GetInPlaceSite() { return m_lpIPSite; };
|
|||
|
inline COleObject FAR * GetOleObject() { return &m_OleObject; };
|
|||
|
inline CPersistStorage FAR * GetPersistStorage() { return &m_PersistStorage; };
|
|||
|
inline CDataObject FAR * GetDataObject() { return &m_DataObject; };
|
|||
|
inline COleInPlaceActiveObject FAR * GetOleInPlaceActiveObject() { return &m_OleInPlaceActiveObject; };
|
|||
|
inline COleInPlaceObject FAR * GetOleInPlaceObject() { return &m_OleInPlaceObject; };
|
|||
|
inline void ClearOleClientSite() { m_lpOleClientSite = NULL; };
|
|||
|
inline void ClearDataAdviseHolder() { m_lpDataAdviseHolder = NULL; };
|
|||
|
inline void ClearOleAdviseHolder() { m_lpOleAdviseHolder = NULL; };
|
|||
|
inline LPRECT GetPosRect() { return &m_posRect; };
|
|||
|
inline LPPOINT GetSize() { return &m_size; };
|
|||
|
inline LPOLEINPLACEFRAMEINFO GetFrameInfo() {return &m_FrameInfo;};
|
|||
|
inline DWORD GetRotRegister() { return m_dwRegister; };
|
|||
|
inline void ClearDoc() { m_lpDoc = NULL; };
|
|||
|
|
|||
|
// member manipulation
|
|||
|
inline void SetColor (int nRed, int nGreen, int nBlue)
|
|||
|
{ m_red = nRed; m_green = nGreen; m_blue = nBlue; };
|
|||
|
|
|||
|
inline void RotateColor()
|
|||
|
{ m_red+=10; m_green+=10; m_blue+=10;};
|
|||
|
|
|||
|
|
|||
|
// all of the interface implementations should be friends of this
|
|||
|
// class
|
|||
|
friend interface COleObject;
|
|||
|
friend interface CPersistStorage;
|
|||
|
friend interface CDataObject;
|
|||
|
friend interface COleInPlaceActiveObject;
|
|||
|
friend interface COleInPlaceObject;
|
|||
|
friend interface CExternalConnection;
|
|||
|
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
|