/*++ 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 #include //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_