/* IVISPROX.H - Visio Automation Interface Declarations
 * Copyright (C) 1991-1994 Shapeware Corporation. All rights reserved.
 */


#ifndef _IVISPROX_H
#define _IVISPROX_H

typedef interface IVisioApplication FAR * LPVISIOAPPLICATION;
typedef interface IVisioCell FAR * LPVISIOCELL;
typedef interface IVisioChars FAR * LPVISIOCHARS;
typedef interface IVisioConnect FAR * LPVISIOCONNECT;
typedef interface IVisioConnects FAR * LPVISIOCONNECTS;
typedef interface IVisioDocument FAR * LPVISIODOCUMENT;
typedef interface IVisioDocuments FAR * LPVISIODOCUMENTS;
typedef interface IVisioMaster FAR * LPVISIOMASTER;
typedef interface IVisioMasters FAR * LPVISIOMASTERS;
typedef interface IVisioPage FAR * LPVISIOPAGE;
typedef interface IVisioPages FAR * LPVISIOPAGES;
typedef interface IVisioSelection FAR * LPVISIOSELECTION;
typedef interface IVisioShape FAR * LPVISIOSHAPE;
typedef interface IVisioShapes FAR * LPVISIOSHAPES;
typedef interface IVisioStyle FAR * LPVISIOSTYLE;
typedef interface IVisioStyles FAR * LPVISIOSTYLES;
typedef interface IVisioWindow FAR * LPVISIOWINDOW;
typedef interface IVisioWindows FAR * LPVISIOWINDOWS;

#undef  INTERFACE
#define INTERFACE   IVisioApplication

DECLARE_INTERFACE_(IVisioApplication , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioApplication methods ***
    STDMETHOD(ActiveDocument)       (THIS_ LPVISIODOCUMENT FAR * lpdispRet) PURE;
    STDMETHOD(ActivePage)           (THIS_ LPVISIOPAGE FAR * lpdispRet) PURE;
    STDMETHOD(ActiveWindow)         (THIS_ LPVISIOWINDOW FAR * lpdispRet) PURE;
	 STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Documents)            (THIS_ LPVISIODOCUMENTS FAR * lpdispRet) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(getOnDataChangeDelay) (THIS_ long FAR * lpi4Ret) PURE;
    STDMETHOD(putOnDataChangeDelay) (THIS_ long Delay) PURE;
    STDMETHOD(ProcessID)            (THIS_ long FAR * lpi4Ret) PURE;
    STDMETHOD(Quit)                 (THIS) PURE;
    STDMETHOD(Redo)                 (THIS) PURE;
    STDMETHOD(getScreenUpdating)    (THIS_ BOOL FAR * lpboolRet) PURE;
    STDMETHOD(putScreenUpdating)    (THIS_ short I2) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Undo)                 (THIS) PURE;
    STDMETHOD(Version)              (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(WindowHandle)         (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Windows)              (THIS_ LPVISIOWINDOWS FAR * lpdispRet) PURE;
    STDMETHOD(Language)             (THIS_ long FAR * lpi4Ret) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioCell

DECLARE_INTERFACE_(IVisioCell , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioCell methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Error)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(getFormula)           (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putFormula)           (THIS_ BSTR Formula) PURE;
    STDMETHOD(FormulaForce)         (THIS_ BSTR Formula) PURE;
    STDMETHOD(GlueTo)               (THIS_ LPVISIOCELL Cell) PURE;
    STDMETHOD(GlueToPos)            (THIS_ LPVISIOCELL Sheet, double xPercent, double yPercent) PURE;
    STDMETHOD(getResult)            (THIS_ VARIANT Units, double FAR * lpr8Ret) PURE;
    STDMETHOD(putResult)            (THIS_ VARIANT Units, double Value) PURE;
    STDMETHOD(ResultForce)          (THIS_ VARIANT Units, double Value) PURE;
    STDMETHOD(getResultIU)          (THIS_ double FAR * lpr8Ret) PURE;
    STDMETHOD(putResultIU)          (THIS_ double Value) PURE;
    STDMETHOD(ResultIUForce)        (THIS_ double Value) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Units)                (THIS_ short FAR * lpi2Ret) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioChars

DECLARE_INTERFACE_(IVisioChars , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioChars methods ***
    STDMETHOD(AddCustomField)       (THIS_ BSTR Formula, short Format) PURE;
    STDMETHOD(AddField)             (THIS_ short Category, short Code, short Format) PURE;
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(getBegin)             (THIS_ long FAR * lpi4Ret) PURE;
    STDMETHOD(putBegin)             (THIS_ long I4) PURE;
    STDMETHOD(CharCount)            (THIS_ long FAR * lpi4Ret) PURE;
    STDMETHOD(CharProps)            (THIS_ short Cell, short Value) PURE;
    STDMETHOD(CharPropsRow)         (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Copy)                 (THIS) PURE;
    STDMETHOD(Cut)                  (THIS) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(getEnd)               (THIS_ long FAR * lpi4Ret) PURE;
    STDMETHOD(putEnd)               (THIS_ long I4) PURE;
    STDMETHOD(FieldCategory)        (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(FieldCode)            (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(FieldFormat)          (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(FieldFormula)         (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(IsField)              (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(ParaProps)            (THIS_ short Cell, short Value) PURE;
    STDMETHOD(ParaPropsRow)         (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Paste)                (THIS) PURE;
    STDMETHOD(TabPropsRow)          (THIS_ short Bias, short FAR * lpi2Ret) PURE;
    STDMETHOD(RunBegin)             (THIS_ short RunType, long FAR * lpi4Ret) PURE;
    STDMETHOD(RunEnd)               (THIS_ short RunType, long FAR * lpi4Ret) PURE;
    STDMETHOD(Shape)                (THIS_ LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(getText)              (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putText)              (THIS_ VARIANT variant) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioConnect

DECLARE_INTERFACE_(IVisioConnect , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioConnect methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(FromSheet)            (THIS_ LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(ToSheet)              (THIS_ LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(FromCell)             (THIS_ LPVISIOCELL FAR * lpdispRet) PURE;
    STDMETHOD(ToCell)               (THIS_ LPVISIOCELL FAR * lpdispRet) PURE;
    STDMETHOD(FromPart)             (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(ToPart)               (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioConnects

DECLARE_INTERFACE_(IVisioConnects , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioConnects methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Item)                 (THIS_ short I2, LPVISIOCONNECT FAR * lpdispRet) PURE;
    STDMETHOD(Count)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(FromSheet)            (THIS_ LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioDocument

DECLARE_INTERFACE_(IVisioDocument , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioDocument methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(InPlace)              (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Masters)              (THIS_ LPVISIOMASTERS FAR * lpdispRet) PURE;
    STDMETHOD(Pages)                (THIS_ LPVISIOPAGES FAR * lpdispRet) PURE;
    STDMETHOD(Styles)               (THIS_ LPVISIOSTYLES FAR * lpdispRet) PURE;
    STDMETHOD(Name)                 (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(Path)                 (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(FullName)             (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(Drop)                 (THIS_ LPUNKNOWN DropObject, short xPos, short yPos, LPVISIOMASTER FAR * lpdispRet) PURE;
    STDMETHOD(Index)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(getSaved)             (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(putSaved)             (THIS_ short I2) PURE;
    STDMETHOD(ReadOnly)             (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Save)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(SaveAs)               (THIS_ BSTR FileName, short FAR * lpi2Ret) PURE;
    STDMETHOD(getVersion)           (THIS_ long FAR * lpi4Ret) PURE;
    STDMETHOD(putVersion)           (THIS_ long Version) PURE;
    STDMETHOD(getTitle)             (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putTitle)             (THIS_ BSTR Title) PURE;
    STDMETHOD(getSubject)           (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putSubject)           (THIS_ BSTR Subject) PURE;
    STDMETHOD(getCreator)           (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putCreator)           (THIS_ BSTR Creator) PURE;
    STDMETHOD(getKeywords)          (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putKeywords)          (THIS_ BSTR Keywords) PURE;
    STDMETHOD(getDescription)       (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putDescription)       (THIS_ BSTR Description) PURE;
    STDMETHOD(Print)                (THIS) PURE;
    STDMETHOD(Close)                (THIS) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioDocuments

DECLARE_INTERFACE_(IVisioDocuments , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioDocuments methods ***
    STDMETHOD(Add)                  (THIS_ BSTR FileName, LPVISIODOCUMENT FAR * lpdispRet) PURE;
    STDMETHOD(Open)                 (THIS_ BSTR FileName, LPVISIODOCUMENT FAR * lpdispRet) PURE;
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Item)                 (THIS_ VARIANT variant, LPVISIODOCUMENT FAR * lpdispRet) PURE;
    STDMETHOD(Count)                (THIS_ short FAR * lpi2Ret) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioMaster

DECLARE_INTERFACE_(IVisioMaster , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioMaster methods ***
    STDMETHOD(Document)             (THIS_ LPVISIODOCUMENT FAR * lpdispRet) PURE;
    STDMETHOD(getPrompt)            (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putPrompt)            (THIS_ BSTR PromptString) PURE;
    STDMETHOD(getAlignName)         (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(putAlignName)         (THIS_ short I2) PURE;
    STDMETHOD(getIconSize)          (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(putIconSize)          (THIS_ short I2) PURE;
    STDMETHOD(getIconUpdate)        (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(putIconUpdate)        (THIS_ short I2) PURE;
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(getName)              (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putName)              (THIS_ BSTR MasterName) PURE;
    STDMETHOD(Shapes)               (THIS_ LPVISIOSHAPES FAR * lpdispRet) PURE;
    STDMETHOD(Index)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(OneD)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Delete)               (THIS) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioMasters

DECLARE_INTERFACE_(IVisioMasters , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioMasters methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Item)                 (THIS_ VARIANT variant, LPVISIOMASTER FAR * lpdispRet) PURE;
    STDMETHOD(Count)                (THIS_ short FAR * lpi2Ret) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioPage

DECLARE_INTERFACE_(IVisioPage , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioPage methods ***
    STDMETHOD(Document)             (THIS_ LPVISIODOCUMENT FAR * lpdispRet) PURE;
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(getBackground)        (THIS_ BOOL FAR * lpboolRet) PURE;
    STDMETHOD(putBackground)        (THIS_ short I2) PURE;
    STDMETHOD(Paste)                (THIS) PURE;
    STDMETHOD(PasteSpecial)         (THIS_ short I2) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(DrawLine)             (THIS_ double xLeft, double yTop, double xRight, double yBottom, LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(DrawRectangle)        (THIS_ double xLeft, double yTop, double xRight, double yBottom, LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(DrawOval)             (THIS_ double xLeft, double yTop, double xRight, double yBottom, LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(Index)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(getName)              (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putName)              (THIS_ BSTR PageName) PURE;
    STDMETHOD(Shapes)               (THIS_ LPVISIOSHAPES FAR * lpdispRet) PURE;
    STDMETHOD(Drop)                 (THIS_ LPUNKNOWN DropObject, double xPos, double yPos, LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(AddGuide)             (THIS_ short Type, double xPos, double yPos, LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(getBackPage)          (THIS_ LPVISIOPAGE FAR * lpdispRet) PURE;
    STDMETHOD(putBackPage)          (THIS_ BSTR PageName) PURE;
    STDMETHOD(Print)                (THIS) PURE;
    STDMETHOD(Import)               (THIS_ BSTR FileName, LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(Export)               (THIS_ BSTR FileName) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioPages

DECLARE_INTERFACE_(IVisioPages , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioPages methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Item)                 (THIS_ VARIANT variant, LPVISIOPAGE FAR * lpdispRet) PURE;
    STDMETHOD(Count)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Add)                  (THIS_ LPVISIOPAGE FAR * lpdispRet) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioSelection

DECLARE_INTERFACE_(IVisioSelection , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioSelection methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Item)                 (THIS_ short I2, LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(Count)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Export)               (THIS_ BSTR FileName) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioShape

DECLARE_INTERFACE_(IVisioShape , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioShape methods ***
    STDMETHOD(Group)                (THIS) PURE;
    STDMETHOD(BringForward)         (THIS) PURE;
    STDMETHOD(BringToFront)         (THIS) PURE;
    STDMETHOD(ConvertToGroup)       (THIS) PURE;
    STDMETHOD(FlipHorizontal)       (THIS) PURE;
    STDMETHOD(FlipVertical)         (THIS) PURE;
    STDMETHOD(ReverseEnds)          (THIS) PURE;
    STDMETHOD(SendBackward)         (THIS) PURE;
    STDMETHOD(SendToBack)           (THIS) PURE;
    STDMETHOD(Rotate90)             (THIS) PURE;
    STDMETHOD(Ungroup)              (THIS) PURE;
    STDMETHOD(Document)             (THIS_ LPVISIODOCUMENT FAR * lpdispRet) PURE;
    STDMETHOD(Parent)               (THIS_ LPVISIOSHAPES FAR * lpdispRet) PURE;
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Master)               (THIS_ LPVISIOMASTER FAR * lpdispRet) PURE;
    STDMETHOD(Type)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Cells)                (THIS_ BSTR CellName, LPVISIOCELL FAR * lpdispRet) PURE;
    STDMETHOD(CellsSRC)             (THIS_ short Section, short Row, short Column, LPVISIOCELL FAR * lpdispRet) PURE;
    STDMETHOD(Shapes)               (THIS_ LPVISIOSHAPES FAR * lpdispRet) PURE;
    STDMETHOD(getData1)             (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putData1)             (THIS_ BSTR bstr) PURE;
    STDMETHOD(getData2)             (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putData2)             (THIS_ BSTR bstr) PURE;
    STDMETHOD(getData3)             (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putData3)             (THIS_ BSTR bstr) PURE;
    STDMETHOD(getHelp)              (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putHelp)              (THIS_ BSTR bstr) PURE;
    STDMETHOD(NameID)               (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(getName)              (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putName)              (THIS_ BSTR bstr) PURE;
    STDMETHOD(getText)              (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putText)              (THIS_ BSTR bstr) PURE;
    STDMETHOD(CharCount)            (THIS_ long FAR * lpi4Ret) PURE;
    STDMETHOD(Characters)           (THIS_ LPVISIOCHARS FAR * lpdispRet) PURE;
    STDMETHOD(Copy)                 (THIS) PURE;
    STDMETHOD(Cut)                  (THIS) PURE;
    STDMETHOD(Delete)               (THIS) PURE;
    STDMETHOD(Duplicate)            (THIS) PURE;
    STDMETHOD(Drop)                 (THIS_ LPUNKNOWN DropObject, double xPos, double yPos, LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(getOneD)              (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(putOneD)              (THIS_ short OneD) PURE;
    STDMETHOD(GeometryCount)        (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(RowCount)             (THIS_ short Section, short FAR * lpi2Ret) PURE;
    STDMETHOD(AddSection)           (THIS_ short Section, short FAR * lpi2Ret) PURE;
    STDMETHOD(DeleteSection)        (THIS_ short Section) PURE;
    STDMETHOD(AddRow)               (THIS_ short Section, short Row, short RowTag, short FAR * lpi2Ret) PURE;
    STDMETHOD(DeleteRow)            (THIS_ short Section, short Row) PURE;
    STDMETHOD(RowsCellCount)        (THIS_ short Section, short Row, short FAR * lpi2Ret) PURE;
    STDMETHOD(getRowType)           (THIS_ short Section, short Row, short FAR * lpi2Ret) PURE;
    STDMETHOD(putRowType)           (THIS_ short Section, short Row, short RowTag) PURE;
    STDMETHOD(SetCenter)            (THIS_ double x, double y) PURE;
    STDMETHOD(SetBegin)             (THIS_ double x, double y) PURE;
    STDMETHOD(SetEnd)               (THIS_ double x, double y) PURE;
    STDMETHOD(Connects)             (THIS_ LPVISIOCONNECTS FAR * lpdispRet) PURE;
    STDMETHOD(Index)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(getStyle)             (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putStyle)             (THIS_ BSTR StyleName) PURE;
    STDMETHOD(StyleKeepFmt)         (THIS_ BSTR StyleName) PURE;
    STDMETHOD(getLineStyle)         (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putLineStyle)         (THIS_ BSTR StyleName) PURE;
    STDMETHOD(LineStyleKeepFmt)     (THIS_ BSTR StyleName) PURE;
    STDMETHOD(getFillStyle)         (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putFillStyle)         (THIS_ BSTR StyleName) PURE;
    STDMETHOD(FillStyleKeepFmt)     (THIS_ BSTR StyleName) PURE;
    STDMETHOD(getTextStyle)         (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putTextStyle)         (THIS_ BSTR StyleName) PURE;
    STDMETHOD(TextStyleKeepFmt)     (THIS_ BSTR StyleName) PURE;
    STDMETHOD(Export)               (THIS_ BSTR bstr) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioShapes

DECLARE_INTERFACE_(IVisioShapes , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioShapes methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Item)                 (THIS_ VARIANT variant, LPVISIOSHAPE FAR * lpdispRet) PURE;
    STDMETHOD(Count)                (THIS_ short FAR * lpi2Ret) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioStyle

DECLARE_INTERFACE_(IVisioStyle , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioStyle methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(getName)              (THIS_ BSTR FAR * lpbstrRet) PURE;
    STDMETHOD(putName)              (THIS_ BSTR StyleName) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioStyles

DECLARE_INTERFACE_(IVisioStyles , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioStyles methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Item)                 (THIS_ VARIANT variant, LPVISIOSTYLE FAR * lpdispRet) PURE;
    STDMETHOD(Count)                (THIS_ short FAR * lpi2Ret) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioWindow

DECLARE_INTERFACE_(IVisioWindow , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioWindow methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Stat)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Activate)             (THIS) PURE;
    STDMETHOD(Type)                 (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Document)             (THIS_ LPVISIODOCUMENT FAR * lpdispRet) PURE;
    STDMETHOD(getPage)              (THIS_ LPVISIOPAGE FAR * lpdispRet) PURE;
    STDMETHOD(putPage)              (THIS_ BSTR PageName) PURE;
    STDMETHOD(getZoom)              (THIS_ double FAR * lpr8Ret) PURE;
    STDMETHOD(putZoom)              (THIS_ double Zoom) PURE;
    STDMETHOD(Close)                (THIS) PURE;
    STDMETHOD(SelectAll)            (THIS) PURE;
    STDMETHOD(DeselectAll)          (THIS) PURE;
    STDMETHOD(Selection)            (THIS_ LPVISIOSELECTION FAR * lpdispRet) PURE;
    STDMETHOD(Select)               (THIS_ LPVISIOSHAPE Object, short I2) PURE;
    STDMETHOD(Index)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Cut)                  (THIS) PURE;
    STDMETHOD(Copy)                 (THIS) PURE;
    STDMETHOD(Paste)                (THIS) PURE;
    STDMETHOD(Delete)               (THIS) PURE;
    STDMETHOD(Duplicate)            (THIS) PURE;
    STDMETHOD(Group)                (THIS) PURE;
    STDMETHOD(Union)                (THIS) PURE;
    STDMETHOD(Combine)              (THIS) PURE;
    STDMETHOD(Fragment)             (THIS) PURE;
    STDMETHOD(AddToGroup)           (THIS) PURE;
    STDMETHOD(RemoveFromGroup)      (THIS) PURE;
    };


#undef  INTERFACE
#define INTERFACE   IVisioWindows

DECLARE_INTERFACE_(IVisioWindows , IUnknown)
    {
    // *** IUnknown methods ***
    STDMETHOD(QueryInterface)       (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
    STDMETHOD_(ULONG,Release)       (THIS) PURE;

    // *** IVisioWindows methods ***
    STDMETHOD(Application)          (THIS_ LPVISIOAPPLICATION FAR * lpdispRet) PURE;
    STDMETHOD(Dump)                 (THIS_ short I2, short FAR * lpi2Ret) PURE;
    STDMETHOD(Item)                 (THIS_ short I2, LPVISIOWINDOW FAR * lpdispRet) PURE;
    STDMETHOD(Count)                (THIS_ short FAR * lpi2Ret) PURE;
    STDMETHOD(Arrange)              (THIS) PURE;
    };


#endif /* _IVISPROX_H */
