|
|
/*++
Copyright (C) 1993-1999 Microsoft Corporation
Module Name:
polyline.h
Abstract:
Definitions and function prototypes
--*/
#ifndef _POLYLINE_H_
#define _POLYLINE_H_
#define GUIDS_FROM_TYPELIB
#include "inole.h"
#include "isysmon.h" //From MKTYPLIB
// *** TodoMultiLogHandle: Temporary pdh.h include. Remove when trace file post-processing supports multiple
// open files.
#include <pdh.h>
#include <objsafe.h>
//Prevent duplicate definition of IPolylineAdviseSink10 in ipoly10.h
#define OMIT_POLYLINESINK
#include "ipoly10.h"
//Forward class references
class CImpIPolyline; typedef class CImpIPolyline *PCImpIPolyline;
class CPolyline; typedef class CPolyline *PCPolyline;
class CImpIObjectSafety; typedef class CImpIObjectSafety* PCImpIObjectSafety;
class CImpIPersistStorage; typedef class CImpIPersistStorage *PCImpIPersistStorage;
class CImpIPersistStreamInit; typedef class CImpIPersistStreamInit *PCImpIPersistStreamInit;
class CImpIPersistPropertyBag; typedef class CImpIPersistPropertyBag *PCImpIPersistPropertyBag;
class CImpIPerPropertyBrowsing; typedef class CImpIPerPropertyBrowsing *PCImpIPerPropertyBrowsing;
class CImpIDataObject; typedef class CImpIDataObject *PCImpIDataObject;
class CImpIOleObject; typedef class CImpIOleObject *PCImpIOleObject;
class CImpIViewObject; typedef class CImpIViewObject *PCImpIViewObject;
class CImpIRunnableObject; typedef class CImpIRunnableObject *PCImpIRunnableObject;
class CImpIExternalConnection; typedef class CImpIExternalConnection *PCImpIExternalConnection;
class CImpIOleInPlaceObject; typedef class CImpIOleInPlaceObject *PCImpIOleInPlaceObject;
class CImpIOleInPlaceActiveObject; typedef class CImpIOleInPlaceActiveObject *PCImpIOleInPlaceActiveObject;
class CImpISpecifyPP; typedef CImpISpecifyPP *PCImpISpecifyPP;
class CImpIProvideClassInfo; typedef CImpIProvideClassInfo *PCImpIProvideClassInfo;
class CImpIDispatch; typedef CImpIDispatch *PCImpIDispatch;
class CImpISystemMonitor; typedef CImpISystemMonitor *PCImpISystemMonitor;
class CImpIOleControl; typedef CImpIOleControl *PCImpIOleControl;
class CAdviseRouter; typedef CAdviseRouter *PCAdviseRouter;
class CGraphItem; typedef CGraphItem *PCGraphItem;
#include "resource.h"
#include "cntrtree.h"
#include "iconnpt.h"
#include "stepper.h"
#include "graph.h"
#include "scale.h"
#include "grphitem.h"
#include "report.h"
#include "grphdsp.h"
#include "legend.h"
#include "smonctrl.h"
#include "globals.h"
#include "winhelpr.h"
#include "utils.h"
#include "strids.h"
#include "hatchwnd.h"
#include "logfiles.h"
#include "counters.h"
#define LCID_SCRIPT 0x0409
//Stream Name that holds the data
#define SZSTREAM OLESTR("CONTENTS")
//Magic number to add to aspects returned from IViewObject::Freeze
#define FREEZE_KEY_OFFSET 0x0723
#define HIMETRIC_PER_INCH 2540
#define ID_HATCHWINDOW 2000
//DLLPOLY.CPP
INT PASCAL LibMain(HINSTANCE, WORD, WORD, LPSTR); //This class factory object creates Polyline objects.
class CPolylineClassFactory : public IClassFactory { protected: ULONG m_cRef;
public: CPolylineClassFactory(void); virtual ~CPolylineClassFactory(void);
//IUnknown members
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//IClassFactory members
STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID , PPVOID); STDMETHODIMP LockServer(BOOL); };
typedef CPolylineClassFactory *PCPolylineClassFactory;
//POLYWIN.CPP
LRESULT APIENTRY PolylineWndProc(HWND, UINT, WPARAM, LPARAM);
#ifdef WIN32
#define PROP_POINTER TEXT("Pointer")
#else
#define PROP_SELECTOR "Selector"
#define PROP_OFFSET "Offset"
#endif
// Polyline Class
class CPolyline : public IUnknown { // friend LRESULT APIENTRY PolylineWndProc(HWND, UINT, WPARAM, LPARAM);
// friend BOOL APIENTRY PolyDlgProc(HWND, UINT, WPARAM, LPARAM);
// friend LRESULT APIENTRY GraphDispWndProc (HWND, UINT, WPARAM, LPARAM );
friend LRESULT APIENTRY SysmonCtrlWndProc (HWND, UINT, WPARAM, LPARAM);
friend class CImpIObjectSafety; friend class CImpIPolyline; friend class CImpIConnPtCont; friend class CImpIConnectionPoint; friend class CImpIPersistStorage; friend class CImpIPersistStreamInit; friend class CImpIPersistPropertyBag; friend class CImpIPerPropertyBrowsing; friend class CImpIDataObject;
friend class CImpIOleObject; friend class CImpIViewObject; friend class CImpIRunnableObject; friend class CImpIExternalConnection; friend class CImpIOleInPlaceObject; friend class CImpIOleInPlaceActiveObject; friend class CSysmonControl; friend class CSysmonToolbar; friend class CGraphDisp; friend class CImpICounters; friend class CImpILogFiles; friend class CImpISpecifyPP; friend class CImpIProvideClassInfo; friend class CImpIDispatch; friend class CImpISystemMonitor; friend class CImpIOleControl; friend class CAdviseRouter;
protected: ULONG m_cRef; //Object reference count
LPUNKNOWN m_pUnkOuter; //Controlling Unknown
PFNDESTROYED m_pfnDestroy; //Function called on closure
BOOL m_fDirty; //Have we changed?
GRAPHDATA m_Graph; //Graph data
PSYSMONCTRL m_pCtrl; //Sysmon Control object
RECT m_RectExt; //Extent rectangle
//Contained interfaces
PCImpIPolyline m_pImpIPolyline; PCImpIConnPtCont m_pImpIConnPtCont; PCImpIPersistStorage m_pImpIPersistStorage; PCImpIPersistStreamInit m_pImpIPersistStreamInit; PCImpIPersistPropertyBag m_pImpIPersistPropertyBag; PCImpIPerPropertyBrowsing m_pImpIPerPropertyBrowsing; PCImpIDataObject m_pImpIDataObject;
// Connection point holders (direct & dispatch)
CImpIConnectionPoint m_ConnectionPoint[CONNECTION_POINT_CNT];
CLIPFORMAT m_cf; //Object clipboard format
CLSID m_clsID; //Current CLSID
//We have to hold these for IPersistStorage::Save
LPSTORAGE m_pIStorage; LPSTREAM m_pIStream;
LPDATAADVISEHOLDER m_pIDataAdviseHolder;
//These are default handler interfaces we use
LPUNKNOWN m_pDefIUnknown; LPVIEWOBJECT2 m_pDefIViewObject; LPPERSISTSTORAGE m_pDefIPersistStorage; LPDATAOBJECT m_pDefIDataObject;
//Implemented and used interfaces
PCImpIObjectSafety m_pImpIObjectSafety; PCImpIOleObject m_pImpIOleObject; //Implemented
LPOLEADVISEHOLDER m_pIOleAdviseHolder; //Used
LPOLECLIENTSITE m_pIOleClientSite; //Used
PCImpIViewObject m_pImpIViewObject; //Implemented
LPADVISESINK m_pIAdviseSink; //Used
DWORD m_dwFrozenAspects; //Freeze
DWORD m_dwAdviseAspects; //SetAdvise
DWORD m_dwAdviseFlags; //SetAdvise
PCImpIRunnableObject m_pImpIRunnableObject; //Implemented
BOOL m_bIsRunning; // Running?
HWND m_hDlg; //Editing window
PCImpIExternalConnection m_pImpIExternalConnection; //Implemented
BOOL m_fLockContainer; DWORD m_dwRegROT;
LPOLEINPLACESITE m_pIOleIPSite; LPOLEINPLACEFRAME m_pIOleIPFrame; LPOLEINPLACEUIWINDOW m_pIOleIPUIWindow;
PCImpIOleInPlaceObject m_pImpIOleIPObject; PCImpIOleInPlaceActiveObject m_pImpIOleIPActiveObject;
HMENU m_hMenuShared; HOLEMENU m_hOLEMenu;
PCHatchWin m_pHW; BOOL m_fAllowInPlace; BOOL m_fUIActive; BOOL m_fContainerKnowsInsideOut;
PCImpISpecifyPP m_pImpISpecifyPP; PCImpIProvideClassInfo m_pImpIProvideClassInfo; PCImpIDispatch m_pImpIDispatch; PCImpISystemMonitor m_pImpISystemMonitor; PCImpIOleControl m_pImpIOleControl; PCImpICounters m_pImpICounters; PCImpILogFiles m_pImpILogFiles;
//Our own type lib for the object
ITypeLib *m_pITypeLib;
//From the container;
IOleControlSite *m_pIOleControlSite; IDispatch *m_pIDispatchAmbients; BOOL m_fFreezeEvents; CONTROLINFO m_ctrlInfo;
//Other ambients
BOOL m_fHatch;
protected: void PointScale(LPRECT, LPPOINTS, BOOL); void Draw(HDC, HDC, BOOL, BOOL, LPRECT); void SendAdvise(UINT); void SendEvent(UINT, DWORD); void RectConvertMappings(LPRECT, BOOL);
/*
* These members pulled from IPolyline now serve as a * central store for this functionality to be used from * other interfaces like IPersistStorage and IDataObject. * Other interfaces later may also use them. */ STDMETHODIMP RenderBitmap(HBITMAP *, HDC hAttribDC); STDMETHODIMP RenderMetafilePict(HGLOBAL *, HDC hAttribDC);
public: static RegisterWndClass(HINSTANCE hInst);
CPolyline(LPUNKNOWN, PFNDESTROYED); virtual ~CPolyline(void);
BOOL Init(void);
//Non-delegating object IUnknown
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
HRESULT InPlaceActivate(LPOLECLIENTSITE, BOOL); void InPlaceDeactivate(void); HRESULT UIActivate(void); void UIDeactivate(void);
BOOL AmbientGet(DISPID, VARIANT *); void AmbientsInitialize(DWORD); };
typedef CPolyline *PCPolyline;
//Codes for CPolyline::SendAdvise
//......Code.....................Method called in CPolyline::SendAdvise
#define OBJECTCODE_SAVED 0 //IOleAdviseHolder::SendOnSave
#define OBJECTCODE_CLOSED 1 //IOleAdviseHolder::SendOnClose
#define OBJECTCODE_RENAMED 2 //IOleAdviseHolder::SendOnRename
#define OBJECTCODE_SAVEOBJECT 3 //IOleClientSite::SaveObject
#define OBJECTCODE_DATACHANGED 4 //IDataAdviseHolder::SendOnDataChange
#define OBJECTCODE_SHOWWINDOW 5 //IOleClientSite::OnShowWindow(TRUE)
#define OBJECTCODE_HIDEWINDOW 6 //IOleClientSite::OnShowWindow(FALSE)
#define OBJECTCODE_SHOWOBJECT 7 //IOleClientSite::ShowObject
//Flags for AmbientsInitialize
enum { INITAMBIENT_SHOWHATCHING = 0x00000001, INITAMBIENT_UIDEAD = 0x00000002, INITAMBIENT_BACKCOLOR = 0x00000004, INITAMBIENT_FORECOLOR = 0x00000008, INITAMBIENT_FONT = 0x00000010, INITAMBIENT_APPEARANCE = 0x00000020, INITAMBIENT_USERMODE = 0x00000040, INITAMBIENT_ALL = 0xFFFFFFFF };
//Interface implementation contained in the Polyline.
class CImpIPolyline : public IPolyline10 { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Back pointer to object
LPUNKNOWN m_pUnkOuter; //Controlling unknown
public: CImpIPolyline(PCPolyline, LPUNKNOWN); virtual ~CImpIPolyline(void);
//IUnknown members.
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//Manipulation members:
STDMETHODIMP Init(HWND, LPRECT, DWORD, UINT); STDMETHODIMP New(void); STDMETHODIMP Undo(void); STDMETHODIMP Window(HWND *);
STDMETHODIMP RectGet(LPRECT); STDMETHODIMP SizeGet(LPRECT); STDMETHODIMP RectSet(LPRECT, BOOL); STDMETHODIMP SizeSet(LPRECT, BOOL); };
class CImpIObjectSafety : public IObjectSafety { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Back pointer to object
LPUNKNOWN m_pUnkOuter; //Controlling unknown
private: BOOL m_fMessageDisplayed;
VOID SetupSecurityPolicy(); public: CImpIObjectSafety(PCPolyline, LPUNKNOWN); virtual ~CImpIObjectSafety(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetInterfaceSafetyOptions(REFIID riid, DWORD* pdwSupportedOptions, DWORD* pdwEnabledOptions); STDMETHODIMP SetInterfaceSafetyOptions(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions); };
class CImpIPersistStorage : public IPersistStorage { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Back pointer to object
LPUNKNOWN m_pUnkOuter; //Controlling unknown
PSSTATE m_psState; //Storage state
public: CImpIPersistStorage(PCPolyline, LPUNKNOWN); virtual ~CImpIPersistStorage(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetClassID(LPCLSID);
STDMETHODIMP IsDirty(void); STDMETHODIMP InitNew(LPSTORAGE); STDMETHODIMP Load(LPSTORAGE); STDMETHODIMP Save(LPSTORAGE, BOOL); STDMETHODIMP SaveCompleted(LPSTORAGE); STDMETHODIMP HandsOffStorage(void); };
//IPERSTMI.CPP
class CImpIPersistStreamInit : public IPersistStreamInit { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Back pointer to object
LPUNKNOWN m_pUnkOuter; //Controlling unknown
public: CImpIPersistStreamInit(PCPolyline, LPUNKNOWN); virtual ~CImpIPersistStreamInit(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetClassID(LPCLSID);
STDMETHODIMP IsDirty(void); STDMETHODIMP Load(LPSTREAM); STDMETHODIMP Save(LPSTREAM, BOOL); STDMETHODIMP GetSizeMax(ULARGE_INTEGER *); STDMETHODIMP InitNew(void); };
//IPERPBAG.CPP
class CImpIPersistPropertyBag : public IPersistPropertyBag { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Back pointer to object
LPUNKNOWN m_pUnkOuter; //Controlling unknown
public: CImpIPersistPropertyBag(PCPolyline, LPUNKNOWN); virtual ~CImpIPersistPropertyBag(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetClassID(LPCLSID);
STDMETHODIMP InitNew(void); STDMETHODIMP Load(IPropertyBag*, IErrorLog*); STDMETHODIMP Save(IPropertyBag*, BOOL, BOOL); };
//IPRPBRWS.CPP
class CImpIPerPropertyBrowsing : public IPerPropertyBrowsing { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Back pointer to object
LPUNKNOWN m_pUnkOuter; //Controlling unknown
public: CImpIPerPropertyBrowsing(PCPolyline, LPUNKNOWN); virtual ~CImpIPerPropertyBrowsing(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetClassID(LPCLSID);
STDMETHODIMP GetDisplayString( DISPID, BSTR* ); STDMETHODIMP GetPredefinedStrings( DISPID, CALPOLESTR*, CADWORD* ); STDMETHODIMP GetPredefinedValue( DISPID, DWORD, VARIANT* ); STDMETHODIMP MapPropertyToPage( DISPID, CLSID* ); };
//IDATAOBJ.CPP
class CImpIDataObject : public IDataObject { private: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Back pointer to object
LPUNKNOWN m_pUnkOuter; //Controlling unknown
public: CImpIDataObject(PCPolyline, LPUNKNOWN); virtual ~CImpIDataObject(void);
//IUnknown members that delegate to m_pUnkOuter.
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//IDataObject members
STDMETHODIMP GetData(LPFORMATETC, LPSTGMEDIUM); STDMETHODIMP GetDataHere(LPFORMATETC, LPSTGMEDIUM); STDMETHODIMP QueryGetData(LPFORMATETC); STDMETHODIMP GetCanonicalFormatEtc(LPFORMATETC,LPFORMATETC); STDMETHODIMP SetData(LPFORMATETC, LPSTGMEDIUM, BOOL); STDMETHODIMP EnumFormatEtc(DWORD, LPENUMFORMATETC *); STDMETHODIMP DAdvise(LPFORMATETC, DWORD, LPADVISESINK , DWORD *); STDMETHODIMP DUnadvise(DWORD); STDMETHODIMP EnumDAdvise(LPENUMSTATDATA *); };
//IENUMFE.CPP
class CEnumFormatEtc : public IEnumFORMATETC { private: ULONG m_cRef; LPUNKNOWN m_pUnkRef; ULONG m_iCur; ULONG m_cfe; LPFORMATETC m_prgfe;
public: CEnumFormatEtc(LPUNKNOWN, ULONG, LPFORMATETC); virtual ~CEnumFormatEtc(void);
//IUnknown members that delegate to m_pUnkRef.
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//IEnumFORMATETC members
STDMETHODIMP Next(ULONG, LPFORMATETC, ULONG *); STDMETHODIMP Skip(ULONG); STDMETHODIMP Reset(void); STDMETHODIMP Clone(IEnumFORMATETC **); };
typedef CEnumFormatEtc *PCEnumFormatEtc;
//Our own properties verb
#define POLYLINEVERB_PROPERTIES 1
class CImpIOleObject : public IOleObject { private: ULONG m_cRef; PCPolyline m_pObj; LPUNKNOWN m_pUnkOuter;
public: CImpIOleObject(PCPolyline, LPUNKNOWN); virtual ~CImpIOleObject(void);
//IUnknown members that delegate to m_pUnkOuter.
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//IOleObject members
STDMETHODIMP SetClientSite(LPOLECLIENTSITE); STDMETHODIMP GetClientSite(LPOLECLIENTSITE *); STDMETHODIMP SetHostNames(LPCOLESTR, LPCOLESTR); STDMETHODIMP Close(DWORD); STDMETHODIMP SetMoniker(DWORD, LPMONIKER); STDMETHODIMP GetMoniker(DWORD, DWORD, LPMONIKER *); STDMETHODIMP InitFromData(LPDATAOBJECT, BOOL, DWORD); STDMETHODIMP GetClipboardData(DWORD, LPDATAOBJECT *); STDMETHODIMP DoVerb(LONG, LPMSG, LPOLECLIENTSITE, LONG , HWND, LPCRECT); STDMETHODIMP EnumVerbs(LPENUMOLEVERB *); STDMETHODIMP Update(void); STDMETHODIMP IsUpToDate(void); STDMETHODIMP GetUserClassID(CLSID *); STDMETHODIMP GetUserType(DWORD, LPOLESTR *); STDMETHODIMP SetExtent(DWORD, LPSIZEL); STDMETHODIMP GetExtent(DWORD, LPSIZEL); STDMETHODIMP Advise(LPADVISESINK, DWORD *); STDMETHODIMP Unadvise(DWORD); STDMETHODIMP EnumAdvise(LPENUMSTATDATA *); STDMETHODIMP GetMiscStatus(DWORD, DWORD *); STDMETHODIMP SetColorScheme(LPLOGPALETTE); };
//IVIEWOBJ.CPP
class CImpIViewObject : public IViewObject2 { private: ULONG m_cRef; PCPolyline m_pObj; LPUNKNOWN m_pUnkOuter;
public: CImpIViewObject(PCPolyline, LPUNKNOWN); virtual ~CImpIViewObject(void);
//IUnknown members that delegate to m_pUnkOuter.
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//IViewObject members
STDMETHODIMP Draw( DWORD, LONG, LPVOID, DVTARGETDEVICE *, HDC, HDC, LPCRECTL, LPCRECTL, BOOL (CALLBACK *)(DWORD_PTR), DWORD_PTR );
STDMETHODIMP GetColorSet(DWORD, LONG, LPVOID , DVTARGETDEVICE *, HDC, LPLOGPALETTE *); STDMETHODIMP Freeze(DWORD, LONG, LPVOID, LPDWORD); STDMETHODIMP Unfreeze(DWORD); STDMETHODIMP SetAdvise(DWORD, DWORD, LPADVISESINK); STDMETHODIMP GetAdvise(LPDWORD, LPDWORD, LPADVISESINK *); STDMETHODIMP GetExtent(DWORD, LONG, DVTARGETDEVICE * , LPSIZEL); };
class CImpIRunnableObject : public IRunnableObject { protected: ULONG m_cRef; PCPolyline m_pObj; LPUNKNOWN m_pUnkOuter;
public: CImpIRunnableObject(PCPolyline, LPUNKNOWN); virtual ~CImpIRunnableObject(void);
STDMETHODIMP QueryInterface(REFIID, LPVOID *); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetRunningClass(LPCLSID); STDMETHODIMP Run(LPBINDCTX); STDMETHODIMP_(BOOL) IsRunning(void); STDMETHODIMP LockRunning(BOOL, BOOL); STDMETHODIMP SetContainedObject(BOOL); };
class CImpIExternalConnection : public IExternalConnection { protected: ULONG m_cRef; PCPolyline m_pObj; LPUNKNOWN m_pUnkOuter; DWORD m_cLockStrong;
public: CImpIExternalConnection(PCPolyline, LPUNKNOWN); virtual ~CImpIExternalConnection(void);
STDMETHODIMP QueryInterface(REFIID, LPVOID *); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP_(DWORD) AddConnection(DWORD, DWORD); STDMETHODIMP_(DWORD) ReleaseConnection(DWORD, DWORD, BOOL); };
class CImpIOleInPlaceObject : public IOleInPlaceObject { protected: ULONG m_cRef; PCPolyline m_pObj; LPUNKNOWN m_pUnkOuter;
public: CImpIOleInPlaceObject(PCPolyline, LPUNKNOWN); virtual ~CImpIOleInPlaceObject(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetWindow(HWND *); STDMETHODIMP ContextSensitiveHelp(BOOL); STDMETHODIMP InPlaceDeactivate(void); STDMETHODIMP UIDeactivate(void); STDMETHODIMP SetObjectRects(LPCRECT, LPCRECT); STDMETHODIMP ReactivateAndUndo(void); };
class CImpIOleInPlaceActiveObject : public IOleInPlaceActiveObject { protected: ULONG m_cRef; PCPolyline m_pObj; LPUNKNOWN m_pUnkOuter;
public: CImpIOleInPlaceActiveObject(PCPolyline, LPUNKNOWN); virtual ~CImpIOleInPlaceActiveObject(void);
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetWindow(HWND *); STDMETHODIMP ContextSensitiveHelp(BOOL); STDMETHODIMP TranslateAccelerator(LPMSG); STDMETHODIMP OnFrameWindowActivate(BOOL); STDMETHODIMP OnDocWindowActivate(BOOL); STDMETHODIMP ResizeBorder(LPCRECT, LPOLEINPLACEUIWINDOW , BOOL); STDMETHODIMP EnableModeless(BOOL); };
class CImpISpecifyPP : public ISpecifyPropertyPages { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Backpointer to the object
LPUNKNOWN m_pUnkOuter; //For delegation
public: CImpISpecifyPP(PCPolyline, LPUNKNOWN); virtual ~CImpISpecifyPP(void);
STDMETHODIMP QueryInterface(REFIID, LPVOID *); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetPages(CAUUID *); };
class CImpIProvideClassInfo : public IProvideClassInfo { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Backpointer to the object
LPUNKNOWN m_pUnkOuter; //For delegation
public: CImpIProvideClassInfo(PCPolyline, LPUNKNOWN); virtual ~CImpIProvideClassInfo(void);
STDMETHODIMP QueryInterface(REFIID, LPVOID *); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetClassInfo(LPTYPEINFO *); };
class CImpIDispatch : public IDispatch { public:
private: ULONG m_cRef; //For debugging
LPUNKNOWN m_pObj; LPUNKNOWN m_pUnkOuter; LPUNKNOWN m_pInterface; IID m_DIID; ITypeInfo *m_pITI; //Type information
public: CImpIDispatch(LPUNKNOWN, LPUNKNOWN); virtual ~CImpIDispatch(void);
void SetInterface(REFIID, LPUNKNOWN);
//IUnknown members that delegate to m_pUnkOuter.
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//IDispatch members
STDMETHODIMP GetTypeInfoCount(UINT *); STDMETHODIMP GetTypeInfo(UINT, LCID, ITypeInfo **); STDMETHODIMP GetIDsOfNames(REFIID, OLECHAR **, UINT, LCID , DISPID *); STDMETHODIMP Invoke(DISPID, REFIID, LCID, WORD , DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *); };
class CImpISystemMonitor : public ISystemMonitor { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Back pointer to object
LPUNKNOWN m_pUnkOuter; //Controlling unknown
public: CImpISystemMonitor(PCPolyline, LPUNKNOWN); virtual ~CImpISystemMonitor(void);
//IUnknown members.
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//Manipulation members:
STDMETHODIMP put_Appearance(INT); STDMETHODIMP get_Appearance(INT*);
STDMETHODIMP put_BackColor(OLE_COLOR); STDMETHODIMP get_BackColor(OLE_COLOR*);
STDMETHODIMP put_BorderStyle(INT); STDMETHODIMP get_BorderStyle(INT*);
STDMETHODIMP put_ForeColor(OLE_COLOR); STDMETHODIMP get_ForeColor(OLE_COLOR*);
STDMETHODIMP put_BackColorCtl(OLE_COLOR); STDMETHODIMP get_BackColorCtl(OLE_COLOR*);
STDMETHODIMP put_GridColor(OLE_COLOR); STDMETHODIMP get_GridColor(OLE_COLOR*);
STDMETHODIMP put_TimeBarColor(OLE_COLOR); STDMETHODIMP get_TimeBarColor(OLE_COLOR*);
STDMETHODIMP putref_Font(IFontDisp *pFont); STDMETHODIMP get_Font(IFontDisp **ppFont);
STDMETHODIMP put_ShowVerticalGrid(VARIANT_BOOL); STDMETHODIMP get_ShowVerticalGrid(VARIANT_BOOL*);
STDMETHODIMP put_ShowHorizontalGrid(VARIANT_BOOL); STDMETHODIMP get_ShowHorizontalGrid(VARIANT_BOOL*);
STDMETHODIMP put_ShowLegend(VARIANT_BOOL); STDMETHODIMP get_ShowLegend(VARIANT_BOOL*);
STDMETHODIMP put_ShowToolbar(VARIANT_BOOL); STDMETHODIMP get_ShowToolbar(VARIANT_BOOL*);
STDMETHODIMP put_ShowValueBar(VARIANT_BOOL); STDMETHODIMP get_ShowValueBar(VARIANT_BOOL*);
STDMETHODIMP put_ShowScaleLabels(VARIANT_BOOL); STDMETHODIMP get_ShowScaleLabels(VARIANT_BOOL*);
STDMETHODIMP put_MaximumScale(INT); STDMETHODIMP get_MaximumScale(INT*);
STDMETHODIMP put_MinimumScale(INT); STDMETHODIMP get_MinimumScale(INT*);
STDMETHODIMP put_UpdateInterval(FLOAT); STDMETHODIMP get_UpdateInterval(FLOAT*);
STDMETHODIMP put_DisplayFilter(INT); STDMETHODIMP get_DisplayFilter(INT*);
STDMETHODIMP put_DisplayType(DisplayTypeConstants); STDMETHODIMP get_DisplayType(DisplayTypeConstants*);
STDMETHODIMP put_ManualUpdate(VARIANT_BOOL); STDMETHODIMP get_ManualUpdate(VARIANT_BOOL*);
STDMETHODIMP put_YAxisLabel(BSTR); STDMETHODIMP get_YAxisLabel(BSTR*);
STDMETHODIMP put_GraphTitle(BSTR); STDMETHODIMP get_GraphTitle(BSTR*);
STDMETHODIMP put_SqlDsnName(BSTR); STDMETHODIMP get_SqlDsnName(BSTR*); STDMETHODIMP put_SqlLogSetName(BSTR); STDMETHODIMP get_SqlLogSetName(BSTR*);
STDMETHODIMP put_LogFileName(BSTR); STDMETHODIMP get_LogFileName(BSTR*);
STDMETHODIMP get_LogFiles(ILogFiles**);
STDMETHODIMP put_DataSourceType(DataSourceTypeConstants); STDMETHODIMP get_DataSourceType(DataSourceTypeConstants*);
STDMETHODIMP put_LogViewStart(DATE); STDMETHODIMP get_LogViewStart(DATE*);
STDMETHODIMP put_LogViewStop(DATE); STDMETHODIMP get_LogViewStop(DATE*); STDMETHODIMP put_Highlight(VARIANT_BOOL); STDMETHODIMP get_Highlight(VARIANT_BOOL*);
STDMETHODIMP put_ReadOnly(VARIANT_BOOL); STDMETHODIMP get_ReadOnly(VARIANT_BOOL*);
STDMETHODIMP put_ReportValueType(ReportValueTypeConstants); STDMETHODIMP get_ReportValueType(ReportValueTypeConstants*);
STDMETHODIMP put_MonitorDuplicateInstances(VARIANT_BOOL); STDMETHODIMP get_MonitorDuplicateInstances(VARIANT_BOOL*);
STDMETHODIMP get_Counters(ICounters**);
STDMETHODIMP CollectSample(void); STDMETHODIMP BrowseCounters(void); STDMETHODIMP DisplayProperties(void);
STDMETHODIMP Counter(INT iIndex, ICounterItem**); STDMETHODIMP AddCounter(BSTR bsPath, ICounterItem**); STDMETHODIMP DeleteCounter(ICounterItem *pItem);
STDMETHODIMP LogFile ( INT iIndex, ILogFileItem** ); STDMETHODIMP AddLogFile ( BSTR bsPath, ILogFileItem** ); STDMETHODIMP DeleteLogFile ( ILogFileItem *pItem );
STDMETHODIMP UpdateGraph(void); STDMETHODIMP Paste(void); STDMETHODIMP Copy(void); STDMETHODIMP Reset(void);
// methods not exposed by ISystemMonitor
void SetLogFileRange(LONGLONG llBegin, LONGLONG LLEnd); void GetLogFileRange(LONGLONG *pllBegin, LONGLONG *pLLEnd);
HRESULT SetLogViewTempRange(LONGLONG llStart, LONGLONG llStop); void GetVisuals( OLE_COLOR *prgbColor, INT *piColorIndex, INT *piWidthIndex, INT *piStyleIndex); void SetVisuals( OLE_COLOR rgbColor, INT iColorIndex, INT iWidthIndex, INT iStyleIndex);
STDMETHODIMP GetSelectedCounter(ICounterItem**);
HLOG GetDataSourceHandle ( void );
// *** TodoMultiLogHandle: Temporary private method. Remove when trace file
// post-processing supports multiple open files.
HQUERY GetQueryHandle ( void );
};
class CImpIOleControl : public IOleControl { protected: ULONG m_cRef; //Interface reference count
PCPolyline m_pObj; //Backpointer to the object
LPUNKNOWN m_pUnkOuter; //For delegation
public: CImpIOleControl(PCPolyline, LPUNKNOWN); virtual ~CImpIOleControl(void);
STDMETHODIMP QueryInterface(REFIID, LPVOID *); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP GetControlInfo(LPCONTROLINFO); STDMETHODIMP OnMnemonic(LPMSG); STDMETHODIMP OnAmbientPropertyChange(DISPID); STDMETHODIMP FreezeEvents(BOOL); };
/*****************************************
class CAdviseRouter : public ISystemMonitorEvents { private: ULONG m_cRef; PCPolyline m_pObj; IDispatch *m_pIDispatch;
public: CAdviseRouter(IDispatch *, PCPolyline); virtual ~CAdviseRouter(void);
void Invoke(DISPID dispId, INT iParam);
//IUnknown members
STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
//Advise members.
STDMETHODIMP_(void) OnCounterSelected(INT iIndex); STDMETHODIMP_(void) OnCounterAdded(INT iIndex); STDMETHODIMP_(void) OnCounterDeleted(INT iIndex); };
//These values match the ID's in smonctrl.odl
enum { EVENT_ONCOUNTERSELECTED=1, EVENT_ONCOUNTERADDED=2, EVENT_ONCOUNTERDELETED=3, }; ***************************************/
#endif //_POLYLINE_H_
|