! DSAPP.f90

! This module contains the COM interfaces of the objects defined in 
! D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\devshl.dll
! Generated by the Fortran Module Wizard on xx/xx/xx

	MODULE DSAPP
		USE DFWINTY
		USE DFCOM
		IMPLICIT NONE
	

		! CLSIDs		
		TYPE (GUID), PARAMETER :: CLSID_Application = &
			GUID(#FB7FDAE2, #89B8, #11CF, &
			  CHAR('9B'X)//CHAR('E8'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('63'X)//CHAR('2C'X))

		! IIDs		
		TYPE (GUID), PARAMETER :: IID_IProjects = &
			GUID(#13BF7741, #A7E8, #11CF, &
			  CHAR('AD'X)//CHAR('07'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('03'X)//CHAR('49'X)//CHAR('65'X))
		TYPE (GUID), PARAMETER :: IID_IWindows = &
			GUID(#3928F551, #96E6, #11CF, &
			  CHAR('9C'X)//CHAR('00'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('63'X)//CHAR('2C'X))
		TYPE (GUID), PARAMETER :: IID_IGenericProject = &
			GUID(#8CA5A960, #FC7D, #11CF, &
			  CHAR('92'X)//CHAR('7D'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('13'X)//CHAR('8C'X)//CHAR('45'X))
		TYPE (GUID), PARAMETER :: IID_IApplicationEvents = &
			GUID(#8EA3F900, #4A9F, #11CF, &
			  CHAR('8E'X)//CHAR('4E'X)//CHAR('00'X)//CHAR('AA'X)// &
			  CHAR('00'X)//CHAR('42'X)//CHAR('54'X)//CHAR('C4'X))
		TYPE (GUID), PARAMETER :: IID_IDSAddIn = &
			GUID(#C0002F81, #AE2E, #11CF, &
			  CHAR('AD'X)//CHAR('07'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('03'X)//CHAR('49'X)//CHAR('65'X))
		TYPE (GUID), PARAMETER :: IID_IApplication = &
			GUID(#EC1D73A1, #8CC4, #11CF, &
			  CHAR('9B'X)//CHAR('E9'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('63'X)//CHAR('2C'X))
		TYPE (GUID), PARAMETER :: IID_IGenericDocument = &
			GUID(#FB7FDAE1, #89B8, #11CF, &
			  CHAR('9B'X)//CHAR('E8'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('63'X)//CHAR('2C'X))
		TYPE (GUID), PARAMETER :: IID_IDocuments = &
			GUID(#FB7FDAE3, #89B8, #11CF, &
			  CHAR('9B'X)//CHAR('E8'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('63'X)//CHAR('2C'X))
		TYPE (GUID), PARAMETER :: IID_IGenericWindow = &
			GUID(#FD20FC80, #A9D2, #11CF, &
			  CHAR('9C'X)//CHAR('13'X)//CHAR('00'X)//CHAR('A0'X)// &
			  CHAR('C9'X)//CHAR('0A'X)//CHAR('63'X)//CHAR('2C'X))

		! Enums		
		! DsArrangeStyle (Passed to Windows.Arrange to arrange the windows.)
			INTEGER, PARAMETER ::	dsMinimize = 1	! Minimized windows.
			INTEGER, PARAMETER ::	dsTileHorizontal = 2	! Tiles the windows horizontally.
			INTEGER, PARAMETER ::	dsTileVertical = 3	! Tiles the windows vertically.
			INTEGER, PARAMETER ::	dsCascade = 4	! Cascades the windows.
		! DsButtonType (Represents the button type.)
			INTEGER, PARAMETER ::	dsGlyph = 1	! Button only has an image.
			INTEGER, PARAMETER ::	dsText = 2	! Buton only has text.
		! DsSaveChanges (Indicates what to do with changes when closing a file.)
			INTEGER, PARAMETER ::	dsSaveChangesYes = 1	! Save changes before closing.
			INTEGER, PARAMETER ::	dsSaveChangesNo = 2	! Discard changes before closing.
			INTEGER, PARAMETER ::	dsSaveChangesPrompt = 3	! Ask user if they want to save changes.
		! DsSaveStatus (Represents the result of a save operation.)
			INTEGER, PARAMETER ::	dsSaveSucceeded = 1	! The save operation succeeded.
			INTEGER, PARAMETER ::	dsSaveCanceled = 2	! The save operation was canceled by the user.
		! DsWindowState (Represents the possible states of a window.)
			INTEGER, PARAMETER ::	dsWindowStateMaximized = 1	! Window is mazimized.
			INTEGER, PARAMETER ::	dsWindowStateMinimized = 2	! Window is minimized.
			INTEGER, PARAMETER ::	dsWindowStateNormal = 3	! Window is neither mazimized or minimized.

		! Interfaces
		INTERFACE
			!Adds a command defined by an Add-in to Developer Studio. Can only be called by AddIns.
  			INTEGER*4 FUNCTION IApplication_AddCommand($OBJECT, szCmdName, szMethodName, nBitmapOffset, dwCookie, pbResult)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szCmdName	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szCmdName
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szMethodName	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szMethodName
				INTEGER*4, INTENT(IN)	:: nBitmapOffset	
				!DEC$ ATTRIBUTES VALUE	:: nBitmapOffset
				INTEGER*4, INTENT(IN)	:: dwCookie	
				!DEC$ ATTRIBUTES VALUE	:: dwCookie
				LOGICAL*2, INTENT(OUT)	:: pbResult	
				!DEC$ ATTRIBUTES REFERENCE	:: pbResult
			!DEC$ ATTRIBUTES STDCALL :: IApplication_AddCommand
			END FUNCTION IApplication_AddCommand
		END INTERFACE
		POINTER(IApplication_AddCommand_PTR, IApplication_AddCommand)	! routine pointer
		INTERFACE
			!Creates a toolbar and toolbar buttons. Can only be called by AddIns.
  			INTEGER*4 FUNCTION IApplication_AddCommandBarButton($OBJECT, nButtonType, szCmdName, dwCookie)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: nButtonType	
				!DEC$ ATTRIBUTES VALUE	:: nButtonType
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szCmdName	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szCmdName
				INTEGER*4, INTENT(IN)	:: dwCookie	
				!DEC$ ATTRIBUTES VALUE	:: dwCookie
			!DEC$ ATTRIBUTES STDCALL :: IApplication_AddCommandBarButton
			END FUNCTION IApplication_AddCommandBarButton
		END INTERFACE
		POINTER(IApplication_AddCommandBarButton_PTR, IApplication_AddCommandBarButton)	! routine pointer
		INTERFACE
			!Binds keystrokes to a command or VBStript macro.
  			INTEGER*4 FUNCTION IApplication_AddKeyBinding($OBJECT, szKey, szCommandName, szEditor)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szKey	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szKey
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szCommandName	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szCommandName
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szEditor	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szEditor
			!DEC$ ATTRIBUTES STDCALL :: IApplication_AddKeyBinding
			END FUNCTION IApplication_AddKeyBinding
		END INTERFACE
		POINTER(IApplication_AddKeyBinding_PTR, IApplication_AddKeyBinding)	! routine pointer
		INTERFACE
			!Inserts a newly created project into the workspace.
  			INTEGER*4 FUNCTION IApplication_AddProject($OBJECT, szName, szPath, szType, bAddDefaultFolders)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szName	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szName
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szPath	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szPath
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szType	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szType
				TYPE (VARIANT), INTENT(IN)	:: bAddDefaultFolders	
				!DEC$ ATTRIBUTES VALUE	:: bAddDefaultFolders
			!DEC$ ATTRIBUTES STDCALL :: IApplication_AddProject
			END FUNCTION IApplication_AddProject
		END INTERFACE
		POINTER(IApplication_AddProject_PTR, IApplication_AddProject)	! routine pointer
		INTERFACE
			!Builds a specified configuration by processing only the files that have changed.
  			INTEGER*4 FUNCTION IApplication_Build($OBJECT, Configuration)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Configuration	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Configuration
			!DEC$ ATTRIBUTES STDCALL :: IApplication_Build
			END FUNCTION IApplication_Build
		END INTERFACE
		POINTER(IApplication_Build_PTR, IApplication_Build)	! routine pointer
		INTERFACE
			!Deletes all intermediate and output files for a configuration.
  			INTEGER*4 FUNCTION IApplication_Clean($OBJECT, Configuration)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Configuration	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Configuration
			!DEC$ ATTRIBUTES STDCALL :: IApplication_Clean
			END FUNCTION IApplication_Clean
		END INTERFACE
		POINTER(IApplication_Clean_PTR, IApplication_Clean)	! routine pointer
		INTERFACE
			!Enables or disables existing modeless windows in Developer Studio.
  			INTEGER*4 FUNCTION IApplication_EnableModeless($OBJECT, bEnable)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: bEnable	
				!DEC$ ATTRIBUTES VALUE	:: bEnable
			!DEC$ ATTRIBUTES STDCALL :: IApplication_EnableModeless
			END FUNCTION IApplication_EnableModeless
		END INTERFACE
		POINTER(IApplication_EnableModeless_PTR, IApplication_EnableModeless)	! routine pointer
		INTERFACE
			!Executes a command or VBScript macro.
  			INTEGER*4 FUNCTION IApplication_ExecuteCommand($OBJECT, szCommandName)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szCommandName	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szCommandName
			!DEC$ ATTRIBUTES STDCALL :: IApplication_ExecuteCommand
			END FUNCTION IApplication_ExecuteCommand
		END INTERFACE
		POINTER(IApplication_ExecuteCommand_PTR, IApplication_ExecuteCommand)	! routine pointer
		INTERFACE
			!Runs the program specified by the active configuration outside of the debugger.
  			INTEGER*4 FUNCTION IApplication_ExecuteConfiguration($OBJECT, Reserved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Reserved	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Reserved
			!DEC$ ATTRIBUTES STDCALL :: IApplication_ExecuteConfiguration
			END FUNCTION IApplication_ExecuteConfiguration
		END INTERFACE
		POINTER(IApplication_ExecuteConfiguration_PTR, IApplication_ExecuteConfiguration)	! routine pointer
		INTERFACE
			!Returns/Sets whether Developer Studio's main window is the foreground window.
  			INTEGER*4 FUNCTION IApplication_GetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetActive
			END FUNCTION IApplication_GetActive
		END INTERFACE
		POINTER(IApplication_GetActive_PTR, IApplication_GetActive)	! routine pointer
		INTERFACE
			!Returns/Sets the active Configuration object of the active project.
  			INTEGER*4 FUNCTION IApplication_GetActiveConfiguration($OBJECT, ActiveConfiguration)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ActiveConfiguration	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveConfiguration
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetActiveConfiguration
			END FUNCTION IApplication_GetActiveConfiguration
		END INTERFACE
		POINTER(IApplication_GetActiveConfiguration_PTR, IApplication_GetActiveConfiguration)	! routine pointer
		INTERFACE
			!Returns the active Document object.
  			INTEGER*4 FUNCTION IApplication_GetActiveDocument($OBJECT, ActiveDocument)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ActiveDocument	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveDocument
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetActiveDocument
			END FUNCTION IApplication_GetActiveDocument
		END INTERFACE
		POINTER(IApplication_GetActiveDocument_PTR, IApplication_GetActiveDocument)	! routine pointer
		INTERFACE
			!Returns/Sets the active Project object of the workspace.
  			INTEGER*4 FUNCTION IApplication_GetActiveProject($OBJECT, ActiveProject)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ActiveProject	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveProject
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetActiveProject
			END FUNCTION IApplication_GetActiveProject
		END INTERFACE
		POINTER(IApplication_GetActiveProject_PTR, IApplication_GetActiveProject)	! routine pointer
		INTERFACE
			!Returns the active MDI child window.
  			INTEGER*4 FUNCTION IApplication_GetActiveWindow($OBJECT, ActiveWindow)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ActiveWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveWindow
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetActiveWindow
			END FUNCTION IApplication_GetActiveWindow
		END INTERFACE
		POINTER(IApplication_GetActiveWindow_PTR, IApplication_GetActiveWindow)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IApplication_GetApplication($OBJECT, Application)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Application	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Application
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetApplication
			END FUNCTION IApplication_GetApplication
		END INTERFACE
		POINTER(IApplication_GetApplication_PTR, IApplication_GetApplication)	! routine pointer
		INTERFACE
			!Returns/sets the current directory used by File.Open.
  			INTEGER*4 FUNCTION IApplication_GetCurrentDirectory($OBJECT, CurrentDirectory)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: CurrentDirectory	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: CurrentDirectory
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetCurrentDirectory
			END FUNCTION IApplication_GetCurrentDirectory
		END INTERFACE
		POINTER(IApplication_GetCurrentDirectory_PTR, IApplication_GetCurrentDirectory)	! routine pointer
		INTERFACE
			!Returns the Debugger object.
  			INTEGER*4 FUNCTION IApplication_GetDebugger($OBJECT, ppDebugger)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDebugger	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDebugger
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetDebugger
			END FUNCTION IApplication_GetDebugger
		END INTERFACE
		POINTER(IApplication_GetDebugger_PTR, IApplication_GetDebugger)	! routine pointer
		INTERFACE
			!Returns the Documents object.
  			INTEGER*4 FUNCTION IApplication_GetDocuments($OBJECT, Documents)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Documents	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Documents
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetDocuments
			END FUNCTION IApplication_GetDocuments
		END INTERFACE
		POINTER(IApplication_GetDocuments_PTR, IApplication_GetDocuments)	! routine pointer
		INTERFACE
			!Returns the number of errors from the last invocation of build
  			INTEGER*4 FUNCTION IApplication_GetErrors($OBJECT, Errors)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Errors	
				!DEC$ ATTRIBUTES REFERENCE	:: Errors
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetErrors
			END FUNCTION IApplication_GetErrors
		END INTERFACE
		POINTER(IApplication_GetErrors_PTR, IApplication_GetErrors)	! routine pointer
		INTERFACE
			!Returns the filename and pathname to the Developer Studio executable.
  			INTEGER*4 FUNCTION IApplication_GetFullName($OBJECT, FullName)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: FullName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: FullName
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetFullName
			END FUNCTION IApplication_GetFullName
		END INTERFACE
		POINTER(IApplication_GetFullName_PTR, IApplication_GetFullName)	! routine pointer
		INTERFACE
			!Returns/sets the height of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_GetHeight($OBJECT, Height)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Height	
				!DEC$ ATTRIBUTES REFERENCE	:: Height
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetHeight
			END FUNCTION IApplication_GetHeight
		END INTERFACE
		POINTER(IApplication_GetHeight_PTR, IApplication_GetHeight)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate of the left edge of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_GetLeft($OBJECT, Left)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Left	
				!DEC$ ATTRIBUTES REFERENCE	:: Left
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetLeft
			END FUNCTION IApplication_GetLeft
		END INTERFACE
		POINTER(IApplication_GetLeft_PTR, IApplication_GetLeft)	! routine pointer
		INTERFACE
			!Returns the name of the application (Microsoft Developer Studio).
  			INTEGER*4 FUNCTION IApplication_GetName($OBJECT, Name)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetName
			END FUNCTION IApplication_GetName
		END INTERFACE
		POINTER(IApplication_GetName_PTR, IApplication_GetName)	! routine pointer
		INTERFACE
			!Provides access to objects provided by third parties which extend Developer Studio.
  			INTEGER*4 FUNCTION IApplication_GetPackageExtension($OBJECT, szExtensionName, pExt)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: szExtensionName	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: szExtensionName
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pExt	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: pExt
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetPackageExtension
			END FUNCTION IApplication_GetPackageExtension
		END INTERFACE
		POINTER(IApplication_GetPackageExtension_PTR, IApplication_GetPackageExtension)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IApplication_GetParent($OBJECT, Parent)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Parent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Parent
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetParent
			END FUNCTION IApplication_GetParent
		END INTERFACE
		POINTER(IApplication_GetParent_PTR, IApplication_GetParent)	! routine pointer
		INTERFACE
			!Returns the path of the executable for Developer Studio.
  			INTEGER*4 FUNCTION IApplication_GetPath($OBJECT, Path)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Path	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Path
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetPath
			END FUNCTION IApplication_GetPath
		END INTERFACE
		POINTER(IApplication_GetPath_PTR, IApplication_GetPath)	! routine pointer
		INTERFACE
			!Returns the Projects collection.
  			INTEGER*4 FUNCTION IApplication_GetProjects($OBJECT, Projects)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Projects	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Projects
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetProjects
			END FUNCTION IApplication_GetProjects
		END INTERFACE
		POINTER(IApplication_GetProjects_PTR, IApplication_GetProjects)	! routine pointer
		INTERFACE
			!Returns the TextEditor object.
  			INTEGER*4 FUNCTION IApplication_GetTextEditor($OBJECT, TextEditor)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: TextEditor	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: TextEditor
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetTextEditor
			END FUNCTION IApplication_GetTextEditor
		END INTERFACE
		POINTER(IApplication_GetTextEditor_PTR, IApplication_GetTextEditor)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate of the top edge of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_GetTop($OBJECT, Top)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Top	
				!DEC$ ATTRIBUTES REFERENCE	:: Top
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetTop
			END FUNCTION IApplication_GetTop
		END INTERFACE
		POINTER(IApplication_GetTop_PTR, IApplication_GetTop)	! routine pointer
		INTERFACE
			!Returns a string representing the version of Developer Studio.
  			INTEGER*4 FUNCTION IApplication_GetVersion($OBJECT, Version)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Version	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Version
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetVersion
			END FUNCTION IApplication_GetVersion
		END INTERFACE
		POINTER(IApplication_GetVersion_PTR, IApplication_GetVersion)	! routine pointer
		INTERFACE
			!Returns/sets whether the Developer Studio main window is visible.
  			INTEGER*4 FUNCTION IApplication_GetVisible($OBJECT, Visible)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: Visible	
				!DEC$ ATTRIBUTES REFERENCE	:: Visible
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetVisible
			END FUNCTION IApplication_GetVisible
		END INTERFACE
		POINTER(IApplication_GetVisible_PTR, IApplication_GetVisible)	! routine pointer
		INTERFACE
			!Returns the number of warnings from the last invocation of build
  			INTEGER*4 FUNCTION IApplication_GetWarnings($OBJECT, Warnings)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Warnings	
				!DEC$ ATTRIBUTES REFERENCE	:: Warnings
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetWarnings
			END FUNCTION IApplication_GetWarnings
		END INTERFACE
		POINTER(IApplication_GetWarnings_PTR, IApplication_GetWarnings)	! routine pointer
		INTERFACE
			!Returns/sets the width of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_GetWidth($OBJECT, Width)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Width	
				!DEC$ ATTRIBUTES REFERENCE	:: Width
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetWidth
			END FUNCTION IApplication_GetWidth
		END INTERFACE
		POINTER(IApplication_GetWidth_PTR, IApplication_GetWidth)	! routine pointer
		INTERFACE
			!Returns the Windows object filles with the MDI child windows.
  			INTEGER*4 FUNCTION IApplication_GetWindows($OBJECT, Windows)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Windows	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Windows
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetWindows
			END FUNCTION IApplication_GetWindows
		END INTERFACE
		POINTER(IApplication_GetWindows_PTR, IApplication_GetWindows)	! routine pointer
		INTERFACE
			!Returns/Sets the current state of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_GetWindowState($OBJECT, WindowState)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: WindowState	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: WindowState
			!DEC$ ATTRIBUTES STDCALL :: IApplication_GetWindowState
			END FUNCTION IApplication_GetWindowState
		END INTERFACE
		POINTER(IApplication_GetWindowState_PTR, IApplication_GetWindowState)	! routine pointer
		INTERFACE
			!Prints text to the output window.
  			INTEGER*4 FUNCTION IApplication_PrintToOutputWindow($OBJECT, Message)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: Message	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: Message
			!DEC$ ATTRIBUTES STDCALL :: IApplication_PrintToOutputWindow
			END FUNCTION IApplication_PrintToOutputWindow
		END INTERFACE
		POINTER(IApplication_PrintToOutputWindow_PTR, IApplication_PrintToOutputWindow)	! routine pointer
		INTERFACE
			!Quits Developer Studio.
  			INTEGER*4 FUNCTION IApplication_Quit($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IApplication_Quit
			END FUNCTION IApplication_Quit
		END INTERFACE
		POINTER(IApplication_Quit_PTR, IApplication_Quit)	! routine pointer
		INTERFACE
			!Rebuilds all files in a specified configuration.
  			INTEGER*4 FUNCTION IApplication_RebuildAll($OBJECT, Configuration)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Configuration	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: Configuration
			!DEC$ ATTRIBUTES STDCALL :: IApplication_RebuildAll
			END FUNCTION IApplication_RebuildAll
		END INTERFACE
		POINTER(IApplication_RebuildAll_PTR, IApplication_RebuildAll)	! routine pointer
		INTERFACE
			!Returns/Sets whether Developer Studio's main window is the foreground window.
  			INTEGER*4 FUNCTION IApplication_SetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES VALUE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetActive
			END FUNCTION IApplication_SetActive
		END INTERFACE
		POINTER(IApplication_SetActive_PTR, IApplication_SetActive)	! routine pointer
		INTERFACE
			!Returns/Sets the active Configuration object of the active project.
  			INTEGER*4 FUNCTION IApplication_SetActiveConfiguration($OBJECT, ActiveConfiguration)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: ActiveConfiguration	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: ActiveConfiguration
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetActiveConfiguration
			END FUNCTION IApplication_SetActiveConfiguration
		END INTERFACE
		POINTER(IApplication_SetActiveConfiguration_PTR, IApplication_SetActiveConfiguration)	! routine pointer
		INTERFACE
			!Returns/Sets the active Project object of the workspace.
  			INTEGER*4 FUNCTION IApplication_SetActiveProject($OBJECT, ActiveProject)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: ActiveProject	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: ActiveProject
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetActiveProject
			END FUNCTION IApplication_SetActiveProject
		END INTERFACE
		POINTER(IApplication_SetActiveProject_PTR, IApplication_SetActiveProject)	! routine pointer
		INTERFACE
			!Provides Developer Studio with information about AddIns. Can only be called by AddIns.
  			INTEGER*4 FUNCTION IApplication_SetAddInInfo($OBJECT, nInstanceHandle, pCmdDispatch, nIDBitmapResourceMedium, nIDBitmapResourceLarge, dwCookie)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: nInstanceHandle	
				!DEC$ ATTRIBUTES VALUE	:: nInstanceHandle
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: pCmdDispatch	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: pCmdDispatch
				INTEGER*4, INTENT(IN)	:: nIDBitmapResourceMedium	
				!DEC$ ATTRIBUTES VALUE	:: nIDBitmapResourceMedium
				INTEGER*4, INTENT(IN)	:: nIDBitmapResourceLarge	
				!DEC$ ATTRIBUTES VALUE	:: nIDBitmapResourceLarge
				INTEGER*4, INTENT(IN)	:: dwCookie	
				!DEC$ ATTRIBUTES VALUE	:: dwCookie
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetAddInInfo
			END FUNCTION IApplication_SetAddInInfo
		END INTERFACE
		POINTER(IApplication_SetAddInInfo_PTR, IApplication_SetAddInInfo)	! routine pointer
		INTERFACE
			!Returns/sets the current directory used by File.Open.
  			INTEGER*4 FUNCTION IApplication_SetCurrentDirectory($OBJECT, CurrentDirectory)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: CurrentDirectory	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: CurrentDirectory
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetCurrentDirectory
			END FUNCTION IApplication_SetCurrentDirectory
		END INTERFACE
		POINTER(IApplication_SetCurrentDirectory_PTR, IApplication_SetCurrentDirectory)	! routine pointer
		INTERFACE
			!Returns/sets the height of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_SetHeight($OBJECT, Height)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Height	
				!DEC$ ATTRIBUTES VALUE	:: Height
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetHeight
			END FUNCTION IApplication_SetHeight
		END INTERFACE
		POINTER(IApplication_SetHeight_PTR, IApplication_SetHeight)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate of the left edge of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_SetLeft($OBJECT, Left)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Left	
				!DEC$ ATTRIBUTES VALUE	:: Left
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetLeft
			END FUNCTION IApplication_SetLeft
		END INTERFACE
		POINTER(IApplication_SetLeft_PTR, IApplication_SetLeft)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate of the top edge of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_SetTop($OBJECT, Top)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Top	
				!DEC$ ATTRIBUTES VALUE	:: Top
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetTop
			END FUNCTION IApplication_SetTop
		END INTERFACE
		POINTER(IApplication_SetTop_PTR, IApplication_SetTop)	! routine pointer
		INTERFACE
			!Returns/sets whether the Developer Studio main window is visible.
  			INTEGER*4 FUNCTION IApplication_SetVisible($OBJECT, Visible)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: Visible	
				!DEC$ ATTRIBUTES VALUE	:: Visible
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetVisible
			END FUNCTION IApplication_SetVisible
		END INTERFACE
		POINTER(IApplication_SetVisible_PTR, IApplication_SetVisible)	! routine pointer
		INTERFACE
			!Returns/sets the width of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_SetWidth($OBJECT, Width)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Width	
				!DEC$ ATTRIBUTES VALUE	:: Width
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetWidth
			END FUNCTION IApplication_SetWidth
		END INTERFACE
		POINTER(IApplication_SetWidth_PTR, IApplication_SetWidth)	! routine pointer
		INTERFACE
			!Returns/Sets the current state of Developer Studio's main window.
  			INTEGER*4 FUNCTION IApplication_SetWindowState($OBJECT, WindowState)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: WindowState	! Void
				!DEC$ ATTRIBUTES VALUE	:: WindowState
			!DEC$ ATTRIBUTES STDCALL :: IApplication_SetWindowState
			END FUNCTION IApplication_SetWindowState
		END INTERFACE
		POINTER(IApplication_SetWindowState_PTR, IApplication_SetWindowState)	! routine pointer
		INTERFACE
			!Fired before the Developer Studio Applicaiton shuts down.
 			! MEMBERID = 3
 			INTEGER*4 FUNCTION IApplicationEvents_BeforeApplicationShutDown($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_BeforeApplicationShutDown
			END FUNCTION IApplicationEvents_BeforeApplicationShutDown
		END INTERFACE
		POINTER(IApplicationEvents_BeforeApplicationShutDown_PTR, IApplicationEvents_BeforeApplicationShutDown)	! routine pointer
		INTERFACE
			!Fired before a build starts.
 			! MEMBERID = 1
 			INTEGER*4 FUNCTION IApplicationEvents_BeforeBuildStart($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_BeforeBuildStart
			END FUNCTION IApplicationEvents_BeforeBuildStart
		END INTERFACE
		POINTER(IApplicationEvents_BeforeBuildStart_PTR, IApplicationEvents_BeforeBuildStart)	! routine pointer
		INTERFACE
			!Fired before a document is closed.
 			! MEMBERID = 5
 			INTEGER*4 FUNCTION IApplicationEvents_BeforeDocumentClose($OBJECT, theDocument)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: theDocument	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: theDocument
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_BeforeDocumentClose
			END FUNCTION IApplicationEvents_BeforeDocumentClose
		END INTERFACE
		POINTER(IApplicationEvents_BeforeDocumentClose_PTR, IApplicationEvents_BeforeDocumentClose)	! routine pointer
		INTERFACE
			!Fired when a build finished.
 			! MEMBERID = 2
 			INTEGER*4 FUNCTION IApplicationEvents_BuildFinish($OBJECT, nNumErrors, nNumWarnings)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: nNumErrors	
				!DEC$ ATTRIBUTES VALUE	:: nNumErrors
				INTEGER*4, INTENT(IN)	:: nNumWarnings	
				!DEC$ ATTRIBUTES VALUE	:: nNumWarnings
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_BuildFinish
			END FUNCTION IApplicationEvents_BuildFinish
		END INTERFACE
		POINTER(IApplicationEvents_BuildFinish_PTR, IApplicationEvents_BuildFinish)	! routine pointer
		INTERFACE
			!Fired after a docuement is opened.
 			! MEMBERID = 4
 			INTEGER*4 FUNCTION IApplicationEvents_DocumentOpen($OBJECT, theDocument)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: theDocument	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: theDocument
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_DocumentOpen
			END FUNCTION IApplicationEvents_DocumentOpen
		END INTERFACE
		POINTER(IApplicationEvents_DocumentOpen_PTR, IApplicationEvents_DocumentOpen)	! routine pointer
		INTERFACE
			!Fired after a document has been saved.
 			! MEMBERID = 6
 			INTEGER*4 FUNCTION IApplicationEvents_DocumentSave($OBJECT, theDocument)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: theDocument	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: theDocument
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_DocumentSave
			END FUNCTION IApplicationEvents_DocumentSave
		END INTERFACE
		POINTER(IApplicationEvents_DocumentSave_PTR, IApplicationEvents_DocumentSave)	! routine pointer
		INTERFACE
			!Fired after a new document has been created.
 			! MEMBERID = 7
 			INTEGER*4 FUNCTION IApplicationEvents_NewDocument($OBJECT, theDocument)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: theDocument	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: theDocument
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_NewDocument
			END FUNCTION IApplicationEvents_NewDocument
		END INTERFACE
		POINTER(IApplicationEvents_NewDocument_PTR, IApplicationEvents_NewDocument)	! routine pointer
		INTERFACE
			!Fired when a new Workspace is created.
 			! MEMBERID = 12
 			INTEGER*4 FUNCTION IApplicationEvents_NewWorkspace($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_NewWorkspace
			END FUNCTION IApplicationEvents_NewWorkspace
		END INTERFACE
		POINTER(IApplicationEvents_NewWorkspace_PTR, IApplicationEvents_NewWorkspace)	! routine pointer
		INTERFACE
			!Fired after a window is activated.
 			! MEMBERID = 8
 			INTEGER*4 FUNCTION IApplicationEvents_WindowActivate($OBJECT, theWindow)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: theWindow	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: theWindow
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_WindowActivate
			END FUNCTION IApplicationEvents_WindowActivate
		END INTERFACE
		POINTER(IApplicationEvents_WindowActivate_PTR, IApplicationEvents_WindowActivate)	! routine pointer
		INTERFACE
			!Fired after a window is deactivated.
 			! MEMBERID = 9
 			INTEGER*4 FUNCTION IApplicationEvents_WindowDeactivate($OBJECT, theWindow)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: theWindow	! IDispatch
				!DEC$ ATTRIBUTES VALUE	:: theWindow
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_WindowDeactivate
			END FUNCTION IApplicationEvents_WindowDeactivate
		END INTERFACE
		POINTER(IApplicationEvents_WindowDeactivate_PTR, IApplicationEvents_WindowDeactivate)	! routine pointer
		INTERFACE
			!Fired when a Workspace is closed.
 			! MEMBERID = 11
 			INTEGER*4 FUNCTION IApplicationEvents_WorkspaceClose($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_WorkspaceClose
			END FUNCTION IApplicationEvents_WorkspaceClose
		END INTERFACE
		POINTER(IApplicationEvents_WorkspaceClose_PTR, IApplicationEvents_WorkspaceClose)	! routine pointer
		INTERFACE
			!Fired when a Workspace is opened.
 			! MEMBERID = 10
 			INTEGER*4 FUNCTION IApplicationEvents_WorkspaceOpen($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IApplicationEvents_WorkspaceOpen
			END FUNCTION IApplicationEvents_WorkspaceOpen
		END INTERFACE
		POINTER(IApplicationEvents_WorkspaceOpen_PTR, IApplicationEvents_WorkspaceOpen)	! routine pointer
		INTERFACE
			!Creates a new document.
  			INTEGER*4 FUNCTION IDocuments_Add($OBJECT, docType, vtReserved, ppDocument)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: docType	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: docType
				TYPE (VARIANT), INTENT(IN)	:: vtReserved	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vtReserved
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDocument	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDocument
			!DEC$ ATTRIBUTES STDCALL :: IDocuments_Add
			END FUNCTION IDocuments_Add
		END INTERFACE
		POINTER(IDocuments_Add_PTR, IDocuments_Add)	! routine pointer
		INTERFACE
			!Closes all documents
  			INTEGER*4 FUNCTION IDocuments_CloseAll($OBJECT, vtSaveChanges, pSaved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vtSaveChanges	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vtSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IDocuments_CloseAll
			END FUNCTION IDocuments_CloseAll
		END INTERFACE
		POINTER(IDocuments_CloseAll_PTR, IDocuments_CloseAll)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IDocuments_Get_NewEnum($OBJECT, $NewEnum)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: $NewEnum	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: $NewEnum
			!DEC$ ATTRIBUTES STDCALL :: IDocuments_Get_NewEnum
			END FUNCTION IDocuments_Get_NewEnum
		END INTERFACE
		POINTER(IDocuments_Get_NewEnum_PTR, IDocuments_Get_NewEnum)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IDocuments_GetApplication($OBJECT, ppApplication)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApplication	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApplication
			!DEC$ ATTRIBUTES STDCALL :: IDocuments_GetApplication
			END FUNCTION IDocuments_GetApplication
		END INTERFACE
		POINTER(IDocuments_GetApplication_PTR, IDocuments_GetApplication)	! routine pointer
		INTERFACE
			!Returns the number of documents in the collection.
  			INTEGER*4 FUNCTION IDocuments_GetCount($OBJECT, Count)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: IDocuments_GetCount
			END FUNCTION IDocuments_GetCount
		END INTERFACE
		POINTER(IDocuments_GetCount_PTR, IDocuments_GetCount)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IDocuments_GetParent($OBJECT, ppParent)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
			!DEC$ ATTRIBUTES STDCALL :: IDocuments_GetParent
			END FUNCTION IDocuments_GetParent
		END INTERFACE
		POINTER(IDocuments_GetParent_PTR, IDocuments_GetParent)	! routine pointer
		INTERFACE
			!Returns a Document object from the collection by its index or filename.
  			INTEGER*4 FUNCTION IDocuments_Item($OBJECT, Index, Item)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Index	
				!DEC$ ATTRIBUTES VALUE	:: Index
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Item	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Item
			!DEC$ ATTRIBUTES STDCALL :: IDocuments_Item
			END FUNCTION IDocuments_Item
		END INTERFACE
		POINTER(IDocuments_Item_PTR, IDocuments_Item)	! routine pointer
		INTERFACE
			!Opens an existing document.
  			INTEGER*4 FUNCTION IDocuments_Open($OBJECT, filename, vtDocType, vtBoolReadOnly, ppDocument)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: filename	! BSTR
				!DEC$ ATTRIBUTES VALUE	:: filename
				TYPE (VARIANT), INTENT(IN)	:: vtDocType	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vtDocType
				TYPE (VARIANT), INTENT(IN)	:: vtBoolReadOnly	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vtBoolReadOnly
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDocument	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDocument
			!DEC$ ATTRIBUTES STDCALL :: IDocuments_Open
			END FUNCTION IDocuments_Open
		END INTERFACE
		POINTER(IDocuments_Open_PTR, IDocuments_Open)	! routine pointer
		INTERFACE
			!Saves all open documents.
  			INTEGER*4 FUNCTION IDocuments_SaveAll($OBJECT, vtBoolPrompt, pSaved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vtBoolPrompt	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vtBoolPrompt
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IDocuments_SaveAll
			END FUNCTION IDocuments_SaveAll
		END INTERFACE
		POINTER(IDocuments_SaveAll_PTR, IDocuments_SaveAll)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IDSAddIn_OnConnection($OBJECT, pApp, bFirstTime, dwCookie, OnConnection)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: pApp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: pApp
				LOGICAL*2, INTENT(IN)	:: bFirstTime	
				!DEC$ ATTRIBUTES VALUE	:: bFirstTime
				INTEGER*4, INTENT(IN)	:: dwCookie	
				!DEC$ ATTRIBUTES VALUE	:: dwCookie
				LOGICAL*2, INTENT(OUT)	:: OnConnection	
				!DEC$ ATTRIBUTES REFERENCE	:: OnConnection
			!DEC$ ATTRIBUTES STDCALL :: IDSAddIn_OnConnection
			END FUNCTION IDSAddIn_OnConnection
		END INTERFACE
		POINTER(IDSAddIn_OnConnection_PTR, IDSAddIn_OnConnection)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IDSAddIn_OnDisconnection($OBJECT, bLastTime)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: bLastTime	
				!DEC$ ATTRIBUTES VALUE	:: bLastTime
			!DEC$ ATTRIBUTES STDCALL :: IDSAddIn_OnDisconnection
			END FUNCTION IDSAddIn_OnDisconnection
		END INTERFACE
		POINTER(IDSAddIn_OnDisconnection_PTR, IDSAddIn_OnDisconnection)	! routine pointer
		INTERFACE
			!Closes the document.
  			INTEGER*4 FUNCTION IGenericDocument_Close($OBJECT, vSaveChanges, pSaved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vSaveChanges	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Close
			END FUNCTION IGenericDocument_Close
		END INTERFACE
		POINTER(IGenericDocument_Close_PTR, IGenericDocument_Close)	! routine pointer
		INTERFACE
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION IGenericDocument_GetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetActive
			END FUNCTION IGenericDocument_GetActive
		END INTERFACE
		POINTER(IGenericDocument_GetActive_PTR, IGenericDocument_GetActive)	! routine pointer
		INTERFACE
			!Returns the active window for this document.
  			INTEGER*4 FUNCTION IGenericDocument_GetActiveWindow($OBJECT, ppWindow)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindow
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetActiveWindow
			END FUNCTION IGenericDocument_GetActiveWindow
		END INTERFACE
		POINTER(IGenericDocument_GetActiveWindow_PTR, IGenericDocument_GetActiveWindow)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericDocument_GetApplication($OBJECT, ppApplication)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApplication	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApplication
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetApplication
			END FUNCTION IGenericDocument_GetApplication
		END INTERFACE
		POINTER(IGenericDocument_GetApplication_PTR, IGenericDocument_GetApplication)	! routine pointer
		INTERFACE
			!Returns the name of the document including the path.
  			INTEGER*4 FUNCTION IGenericDocument_GetFullName($OBJECT, pName)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pName
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetFullName
			END FUNCTION IGenericDocument_GetFullName
		END INTERFACE
		POINTER(IGenericDocument_GetFullName_PTR, IGenericDocument_GetFullName)	! routine pointer
		INTERFACE
			!Returns the name of the document.
  			INTEGER*4 FUNCTION IGenericDocument_GetName($OBJECT, pName)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pName
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetName
			END FUNCTION IGenericDocument_GetName
		END INTERFACE
		POINTER(IGenericDocument_GetName_PTR, IGenericDocument_GetName)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericDocument_GetParent($OBJECT, ppParent)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetParent
			END FUNCTION IGenericDocument_GetParent
		END INTERFACE
		POINTER(IGenericDocument_GetParent_PTR, IGenericDocument_GetParent)	! routine pointer
		INTERFACE
			!Returns the pathname of the document. Never has a trailing backslash.
  			INTEGER*4 FUNCTION IGenericDocument_GetPath($OBJECT, pPath)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pPath	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pPath
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetPath
			END FUNCTION IGenericDocument_GetPath
		END INTERFACE
		POINTER(IGenericDocument_GetPath_PTR, IGenericDocument_GetPath)	! routine pointer
		INTERFACE
			!Returns/sets whether a document can be changed inside Developer Studio.
  			INTEGER*4 FUNCTION IGenericDocument_GetReadOnly($OBJECT, pReadOnly)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pReadOnly	
				!DEC$ ATTRIBUTES REFERENCE	:: pReadOnly
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetReadOnly
			END FUNCTION IGenericDocument_GetReadOnly
		END INTERFACE
		POINTER(IGenericDocument_GetReadOnly_PTR, IGenericDocument_GetReadOnly)	! routine pointer
		INTERFACE
			!Returns False if document has changed since it was last saved.
  			INTEGER*4 FUNCTION IGenericDocument_GetSaved($OBJECT, pSaved)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSaved	
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetSaved
			END FUNCTION IGenericDocument_GetSaved
		END INTERFACE
		POINTER(IGenericDocument_GetSaved_PTR, IGenericDocument_GetSaved)	! routine pointer
		INTERFACE
			!Returns a string describing the type of the document. Most documents return 'Generic'.
  			INTEGER*4 FUNCTION IGenericDocument_GetType($OBJECT, pType)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pType
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetType
			END FUNCTION IGenericDocument_GetType
		END INTERFACE
		POINTER(IGenericDocument_GetType_PTR, IGenericDocument_GetType)	! routine pointer
		INTERFACE
			!Returns a Windows collection containing the windows associated with this document.
  			INTEGER*4 FUNCTION IGenericDocument_GetWindows($OBJECT, ppWindows)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindows	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindows
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_GetWindows
			END FUNCTION IGenericDocument_GetWindows
		END INTERFACE
		POINTER(IGenericDocument_GetWindows_PTR, IGenericDocument_GetWindows)	! routine pointer
		INTERFACE
			!Creates a new window for this document.
  			INTEGER*4 FUNCTION IGenericDocument_NewWindow($OBJECT, ppWindow)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindow
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_NewWindow
			END FUNCTION IGenericDocument_NewWindow
		END INTERFACE
		POINTER(IGenericDocument_NewWindow_PTR, IGenericDocument_NewWindow)	! routine pointer
		INTERFACE
			!Sends the document to the current printer. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION IGenericDocument_PrintOut($OBJECT, pSuccess)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_PrintOut
			END FUNCTION IGenericDocument_PrintOut
		END INTERFACE
		POINTER(IGenericDocument_PrintOut_PTR, IGenericDocument_PrintOut)	! routine pointer
		INTERFACE
			!Reapplies previous editing actions. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION IGenericDocument_Redo($OBJECT, pSuccess)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Redo
			END FUNCTION IGenericDocument_Redo
		END INTERFACE
		POINTER(IGenericDocument_Redo_PTR, IGenericDocument_Redo)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved1($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved1
			END FUNCTION IGenericDocument_Reserved1
		END INTERFACE
		POINTER(IGenericDocument_Reserved1_PTR, IGenericDocument_Reserved1)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved10($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved10
			END FUNCTION IGenericDocument_Reserved10
		END INTERFACE
		POINTER(IGenericDocument_Reserved10_PTR, IGenericDocument_Reserved10)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved2($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved2
			END FUNCTION IGenericDocument_Reserved2
		END INTERFACE
		POINTER(IGenericDocument_Reserved2_PTR, IGenericDocument_Reserved2)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved3($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved3
			END FUNCTION IGenericDocument_Reserved3
		END INTERFACE
		POINTER(IGenericDocument_Reserved3_PTR, IGenericDocument_Reserved3)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved4($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved4
			END FUNCTION IGenericDocument_Reserved4
		END INTERFACE
		POINTER(IGenericDocument_Reserved4_PTR, IGenericDocument_Reserved4)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved5($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved5
			END FUNCTION IGenericDocument_Reserved5
		END INTERFACE
		POINTER(IGenericDocument_Reserved5_PTR, IGenericDocument_Reserved5)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved6($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved6
			END FUNCTION IGenericDocument_Reserved6
		END INTERFACE
		POINTER(IGenericDocument_Reserved6_PTR, IGenericDocument_Reserved6)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved7($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved7
			END FUNCTION IGenericDocument_Reserved7
		END INTERFACE
		POINTER(IGenericDocument_Reserved7_PTR, IGenericDocument_Reserved7)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved8($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved8
			END FUNCTION IGenericDocument_Reserved8
		END INTERFACE
		POINTER(IGenericDocument_Reserved8_PTR, IGenericDocument_Reserved8)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericDocument_Reserved9($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Reserved9
			END FUNCTION IGenericDocument_Reserved9
		END INTERFACE
		POINTER(IGenericDocument_Reserved9_PTR, IGenericDocument_Reserved9)	! routine pointer
		INTERFACE
			!Saves the document to disk.
  			INTEGER*4 FUNCTION IGenericDocument_Save($OBJECT, vFilename, vBoolPrompt, pSaved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vFilename	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vFilename
				TYPE (VARIANT), INTENT(IN)	:: vBoolPrompt	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vBoolPrompt
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Save
			END FUNCTION IGenericDocument_Save
		END INTERFACE
		POINTER(IGenericDocument_Save_PTR, IGenericDocument_Save)	! routine pointer
		INTERFACE
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION IGenericDocument_SetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES VALUE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_SetActive
			END FUNCTION IGenericDocument_SetActive
		END INTERFACE
		POINTER(IGenericDocument_SetActive_PTR, IGenericDocument_SetActive)	! routine pointer
		INTERFACE
			!Returns/sets whether a document can be changed inside Developer Studio.
  			INTEGER*4 FUNCTION IGenericDocument_SetReadOnly($OBJECT, pReadOnly)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pReadOnly	
				!DEC$ ATTRIBUTES VALUE	:: pReadOnly
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_SetReadOnly
			END FUNCTION IGenericDocument_SetReadOnly
		END INTERFACE
		POINTER(IGenericDocument_SetReadOnly_PTR, IGenericDocument_SetReadOnly)	! routine pointer
		INTERFACE
			!Reverses previous editing actions. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION IGenericDocument_Undo($OBJECT, pSuccess)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
			!DEC$ ATTRIBUTES STDCALL :: IGenericDocument_Undo
			END FUNCTION IGenericDocument_Undo
		END INTERFACE
		POINTER(IGenericDocument_Undo_PTR, IGenericDocument_Undo)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericProject_GetApplication($OBJECT, Application)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Application	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Application
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetApplication
			END FUNCTION IGenericProject_GetApplication
		END INTERFACE
		POINTER(IGenericProject_GetApplication_PTR, IGenericProject_GetApplication)	! routine pointer
		INTERFACE
			!Returns the name of the project including its path.
  			INTEGER*4 FUNCTION IGenericProject_GetFullName($OBJECT, Name)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetFullName
			END FUNCTION IGenericProject_GetFullName
		END INTERFACE
		POINTER(IGenericProject_GetFullName_PTR, IGenericProject_GetFullName)	! routine pointer
		INTERFACE
			!Returns the name of the project.
  			INTEGER*4 FUNCTION IGenericProject_GetName($OBJECT, Name)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetName
			END FUNCTION IGenericProject_GetName
		END INTERFACE
		POINTER(IGenericProject_GetName_PTR, IGenericProject_GetName)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericProject_GetParent($OBJECT, Parent)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Parent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Parent
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetParent
			END FUNCTION IGenericProject_GetParent
		END INTERFACE
		POINTER(IGenericProject_GetParent_PTR, IGenericProject_GetParent)	! routine pointer
		INTERFACE
			!Returns a string representing the type of the project.
  			INTEGER*4 FUNCTION IGenericProject_GetType($OBJECT, pType)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pType
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_GetType
			END FUNCTION IGenericProject_GetType
		END INTERFACE
		POINTER(IGenericProject_GetType_PTR, IGenericProject_GetType)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved1($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved1
			END FUNCTION IGenericProject_Reserved1
		END INTERFACE
		POINTER(IGenericProject_Reserved1_PTR, IGenericProject_Reserved1)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved10($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved10
			END FUNCTION IGenericProject_Reserved10
		END INTERFACE
		POINTER(IGenericProject_Reserved10_PTR, IGenericProject_Reserved10)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved2($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved2
			END FUNCTION IGenericProject_Reserved2
		END INTERFACE
		POINTER(IGenericProject_Reserved2_PTR, IGenericProject_Reserved2)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved3($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved3
			END FUNCTION IGenericProject_Reserved3
		END INTERFACE
		POINTER(IGenericProject_Reserved3_PTR, IGenericProject_Reserved3)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved4($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved4
			END FUNCTION IGenericProject_Reserved4
		END INTERFACE
		POINTER(IGenericProject_Reserved4_PTR, IGenericProject_Reserved4)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved5($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved5
			END FUNCTION IGenericProject_Reserved5
		END INTERFACE
		POINTER(IGenericProject_Reserved5_PTR, IGenericProject_Reserved5)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved6($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved6
			END FUNCTION IGenericProject_Reserved6
		END INTERFACE
		POINTER(IGenericProject_Reserved6_PTR, IGenericProject_Reserved6)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved7($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved7
			END FUNCTION IGenericProject_Reserved7
		END INTERFACE
		POINTER(IGenericProject_Reserved7_PTR, IGenericProject_Reserved7)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved8($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved8
			END FUNCTION IGenericProject_Reserved8
		END INTERFACE
		POINTER(IGenericProject_Reserved8_PTR, IGenericProject_Reserved8)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericProject_Reserved9($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericProject_Reserved9
			END FUNCTION IGenericProject_Reserved9
		END INTERFACE
		POINTER(IGenericProject_Reserved9_PTR, IGenericProject_Reserved9)	! routine pointer
		INTERFACE
			!Close the window.
  			INTEGER*4 FUNCTION IGenericWindow_Close($OBJECT, boolSaveChanges, pSaved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: boolSaveChanges	
				!DEC$ ATTRIBUTES VALUE	:: boolSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Close
			END FUNCTION IGenericWindow_Close
		END INTERFACE
		POINTER(IGenericWindow_Close_PTR, IGenericWindow_Close)	! routine pointer
		INTERFACE
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetActive
			END FUNCTION IGenericWindow_GetActive
		END INTERFACE
		POINTER(IGenericWindow_GetActive_PTR, IGenericWindow_GetActive)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IGenericWindow_GetApplication($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetApplication
			END FUNCTION IGenericWindow_GetApplication
		END INTERFACE
		POINTER(IGenericWindow_GetApplication_PTR, IGenericWindow_GetApplication)	! routine pointer
		INTERFACE
			!Returns the caption of a window.
  			INTEGER*4 FUNCTION IGenericWindow_GetCaption($OBJECT, pbstrCaption)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pbstrCaption	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbstrCaption
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetCaption
			END FUNCTION IGenericWindow_GetCaption
		END INTERFACE
		POINTER(IGenericWindow_GetCaption_PTR, IGenericWindow_GetCaption)	! routine pointer
		INTERFACE
			!Returns/sets the height of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetHeight($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetHeight
			END FUNCTION IGenericWindow_GetHeight
		END INTERFACE
		POINTER(IGenericWindow_GetHeight_PTR, IGenericWindow_GetHeight)	! routine pointer
		INTERFACE
			!Returns the one-based ordinal of a window in the Windows collection.
  			INTEGER*4 FUNCTION IGenericWindow_GetIndex($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetIndex
			END FUNCTION IGenericWindow_GetIndex
		END INTERFACE
		POINTER(IGenericWindow_GetIndex_PTR, IGenericWindow_GetIndex)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate for the left edge of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetLeft($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetLeft
			END FUNCTION IGenericWindow_GetLeft
		END INTERFACE
		POINTER(IGenericWindow_GetLeft_PTR, IGenericWindow_GetLeft)	! routine pointer
		INTERFACE
			!Returns the next window in the tab sequence.
  			INTEGER*4 FUNCTION IGenericWindow_GetNext($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetNext
			END FUNCTION IGenericWindow_GetNext
		END INTERFACE
		POINTER(IGenericWindow_GetNext_PTR, IGenericWindow_GetNext)	! routine pointer
		INTERFACE
			!Returns the document associated with this window.
  			INTEGER*4 FUNCTION IGenericWindow_GetParent($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetParent
			END FUNCTION IGenericWindow_GetParent
		END INTERFACE
		POINTER(IGenericWindow_GetParent_PTR, IGenericWindow_GetParent)	! routine pointer
		INTERFACE
			!Returns the previous window in the shift-tab sequence.
  			INTEGER*4 FUNCTION IGenericWindow_GetPrevious($OBJECT, ppDispatch)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetPrevious
			END FUNCTION IGenericWindow_GetPrevious
		END INTERFACE
		POINTER(IGenericWindow_GetPrevious_PTR, IGenericWindow_GetPrevious)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate for the top of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetTop($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetTop
			END FUNCTION IGenericWindow_GetTop
		END INTERFACE
		POINTER(IGenericWindow_GetTop_PTR, IGenericWindow_GetTop)	! routine pointer
		INTERFACE
			!Returns a string describing the type of the window. Most windows return 'Generic'.
  			INTEGER*4 FUNCTION IGenericWindow_GetType($OBJECT, pbstrCaption)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pbstrCaption	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbstrCaption
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetType
			END FUNCTION IGenericWindow_GetType
		END INTERFACE
		POINTER(IGenericWindow_GetType_PTR, IGenericWindow_GetType)	! routine pointer
		INTERFACE
			!Returns/sets the width of the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetWidth($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetWidth
			END FUNCTION IGenericWindow_GetWidth
		END INTERFACE
		POINTER(IGenericWindow_GetWidth_PTR, IGenericWindow_GetWidth)	! routine pointer
		INTERFACE
			!Returns the state of the window or maximize, minimize, or restore the window.
  			INTEGER*4 FUNCTION IGenericWindow_GetWindowState($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: plVal	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_GetWindowState
			END FUNCTION IGenericWindow_GetWindowState
		END INTERFACE
		POINTER(IGenericWindow_GetWindowState_PTR, IGenericWindow_GetWindowState)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved1($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved1
			END FUNCTION IGenericWindow_Reserved1
		END INTERFACE
		POINTER(IGenericWindow_Reserved1_PTR, IGenericWindow_Reserved1)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved10($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved10
			END FUNCTION IGenericWindow_Reserved10
		END INTERFACE
		POINTER(IGenericWindow_Reserved10_PTR, IGenericWindow_Reserved10)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved2($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved2
			END FUNCTION IGenericWindow_Reserved2
		END INTERFACE
		POINTER(IGenericWindow_Reserved2_PTR, IGenericWindow_Reserved2)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved3($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved3
			END FUNCTION IGenericWindow_Reserved3
		END INTERFACE
		POINTER(IGenericWindow_Reserved3_PTR, IGenericWindow_Reserved3)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved4($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved4
			END FUNCTION IGenericWindow_Reserved4
		END INTERFACE
		POINTER(IGenericWindow_Reserved4_PTR, IGenericWindow_Reserved4)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved5($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved5
			END FUNCTION IGenericWindow_Reserved5
		END INTERFACE
		POINTER(IGenericWindow_Reserved5_PTR, IGenericWindow_Reserved5)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved6($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved6
			END FUNCTION IGenericWindow_Reserved6
		END INTERFACE
		POINTER(IGenericWindow_Reserved6_PTR, IGenericWindow_Reserved6)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved7($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved7
			END FUNCTION IGenericWindow_Reserved7
		END INTERFACE
		POINTER(IGenericWindow_Reserved7_PTR, IGenericWindow_Reserved7)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved8($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved8
			END FUNCTION IGenericWindow_Reserved8
		END INTERFACE
		POINTER(IGenericWindow_Reserved8_PTR, IGenericWindow_Reserved8)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IGenericWindow_Reserved9($OBJECT)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_Reserved9
			END FUNCTION IGenericWindow_Reserved9
		END INTERFACE
		POINTER(IGenericWindow_Reserved9_PTR, IGenericWindow_Reserved9)	! routine pointer
		INTERFACE
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetActive($OBJECT, pbActive)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES VALUE	:: pbActive
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetActive
			END FUNCTION IGenericWindow_SetActive
		END INTERFACE
		POINTER(IGenericWindow_SetActive_PTR, IGenericWindow_SetActive)	! routine pointer
		INTERFACE
			!Returns/sets the height of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetHeight($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetHeight
			END FUNCTION IGenericWindow_SetHeight
		END INTERFACE
		POINTER(IGenericWindow_SetHeight_PTR, IGenericWindow_SetHeight)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate for the left edge of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetLeft($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetLeft
			END FUNCTION IGenericWindow_SetLeft
		END INTERFACE
		POINTER(IGenericWindow_SetLeft_PTR, IGenericWindow_SetLeft)	! routine pointer
		INTERFACE
			!Returns/sets the coordinate for the top of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetTop($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetTop
			END FUNCTION IGenericWindow_SetTop
		END INTERFACE
		POINTER(IGenericWindow_SetTop_PTR, IGenericWindow_SetTop)	! routine pointer
		INTERFACE
			!Returns/sets the width of the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetWidth($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetWidth
			END FUNCTION IGenericWindow_SetWidth
		END INTERFACE
		POINTER(IGenericWindow_SetWidth_PTR, IGenericWindow_SetWidth)	! routine pointer
		INTERFACE
			!Returns the state of the window or maximize, minimize, or restore the window.
  			INTEGER*4 FUNCTION IGenericWindow_SetWindowState($OBJECT, plVal)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: plVal	! Void
				!DEC$ ATTRIBUTES VALUE	:: plVal
			!DEC$ ATTRIBUTES STDCALL :: IGenericWindow_SetWindowState
			END FUNCTION IGenericWindow_SetWindowState
		END INTERFACE
		POINTER(IGenericWindow_SetWindowState_PTR, IGenericWindow_SetWindowState)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IProjects_Get_NewEnum($OBJECT, $NewEnum)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: $NewEnum	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: $NewEnum
			!DEC$ ATTRIBUTES STDCALL :: IProjects_Get_NewEnum
			END FUNCTION IProjects_Get_NewEnum
		END INTERFACE
		POINTER(IProjects_Get_NewEnum_PTR, IProjects_Get_NewEnum)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IProjects_GetApplication($OBJECT, Application)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Application	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Application
			!DEC$ ATTRIBUTES STDCALL :: IProjects_GetApplication
			END FUNCTION IProjects_GetApplication
		END INTERFACE
		POINTER(IProjects_GetApplication_PTR, IProjects_GetApplication)	! routine pointer
		INTERFACE
			!Returns the number of Project objects in the collections.
  			INTEGER*4 FUNCTION IProjects_GetCount($OBJECT, Count)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: IProjects_GetCount
			END FUNCTION IProjects_GetCount
		END INTERFACE
		POINTER(IProjects_GetCount_PTR, IProjects_GetCount)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IProjects_GetParent($OBJECT, Parent)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Parent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Parent
			!DEC$ ATTRIBUTES STDCALL :: IProjects_GetParent
			END FUNCTION IProjects_GetParent
		END INTERFACE
		POINTER(IProjects_GetParent_PTR, IProjects_GetParent)	! routine pointer
		INTERFACE
			!Returns a Project object from the collection by index or Name.
  			INTEGER*4 FUNCTION IProjects_Item($OBJECT, Index, Item)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Index	
				!DEC$ ATTRIBUTES VALUE	:: Index
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Item	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Item
			!DEC$ ATTRIBUTES STDCALL :: IProjects_Item
			END FUNCTION IProjects_Item
		END INTERFACE
		POINTER(IProjects_Item_PTR, IProjects_Item)	! routine pointer
		INTERFACE
			!Arranges the windows in the collection.
  			INTEGER*4 FUNCTION IWindows_Arrange($OBJECT, vtArrangeStyle)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vtArrangeStyle	
				!DEC$ ATTRIBUTES VALUE	:: vtArrangeStyle
			!DEC$ ATTRIBUTES STDCALL :: IWindows_Arrange
			END FUNCTION IWindows_Arrange
		END INTERFACE
		POINTER(IWindows_Arrange_PTR, IWindows_Arrange)	! routine pointer
		INTERFACE
			!Closes the windows in the collection.
  			INTEGER*4 FUNCTION IWindows_CloseAll($OBJECT, vtSaveChanges, pSaved)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vtSaveChanges	!  (Optional Arg)
				!DEC$ ATTRIBUTES VALUE	:: vtSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
			!DEC$ ATTRIBUTES STDCALL :: IWindows_CloseAll
			END FUNCTION IWindows_CloseAll
		END INTERFACE
		POINTER(IWindows_CloseAll_PTR, IWindows_CloseAll)	! routine pointer
		INTERFACE
  			INTEGER*4 FUNCTION IWindows_Get_NewEnum($OBJECT, $NewEnum)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: $NewEnum	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: $NewEnum
			!DEC$ ATTRIBUTES STDCALL :: IWindows_Get_NewEnum
			END FUNCTION IWindows_Get_NewEnum
		END INTERFACE
		POINTER(IWindows_Get_NewEnum_PTR, IWindows_Get_NewEnum)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IWindows_GetApplication($OBJECT, ppApplication)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApplication	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApplication
			!DEC$ ATTRIBUTES STDCALL :: IWindows_GetApplication
			END FUNCTION IWindows_GetApplication
		END INTERFACE
		POINTER(IWindows_GetApplication_PTR, IWindows_GetApplication)	! routine pointer
		INTERFACE
			!Returns number of Window objects in the collection.
  			INTEGER*4 FUNCTION IWindows_GetCount($OBJECT, Count)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
			!DEC$ ATTRIBUTES STDCALL :: IWindows_GetCount
			END FUNCTION IWindows_GetCount
		END INTERFACE
		POINTER(IWindows_GetCount_PTR, IWindows_GetCount)	! routine pointer
		INTERFACE
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION IWindows_GetParent($OBJECT, ppParent)
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
			!DEC$ ATTRIBUTES STDCALL :: IWindows_GetParent
			END FUNCTION IWindows_GetParent
		END INTERFACE
		POINTER(IWindows_GetParent_PTR, IWindows_GetParent)	! routine pointer
		INTERFACE
			!Returns a Window object from the collection by its index or its caption.
  			INTEGER*4 FUNCTION IWindows_Item($OBJECT, Index, Item)
				USE DFWINTY
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Index	
				!DEC$ ATTRIBUTES VALUE	:: Index
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Item	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Item
			!DEC$ ATTRIBUTES STDCALL :: IWindows_Item
			END FUNCTION IWindows_Item
		END INTERFACE
		POINTER(IWindows_Item_PTR, IWindows_Item)	! routine pointer


		! Module Procedures
		CONTAINS
			!Adds a command defined by an Add-in to Developer Studio. Can only be called by AddIns.
  			INTEGER*4 FUNCTION $IApplication_AddCommand($OBJECT, szCmdName, szMethodName, nBitmapOffset, dwCookie, pbResult)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_AddCommand
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: szCmdName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szCmdName
				CHARACTER*(*), INTENT(IN)	:: szMethodName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szMethodName
				INTEGER*4, INTENT(IN)	:: nBitmapOffset	
				!DEC$ ATTRIBUTES REFERENCE	:: nBitmapOffset
				INTEGER*4, INTENT(IN)	:: dwCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: dwCookie
				LOGICAL*2, INTENT(OUT)	:: pbResult	
				!DEC$ ATTRIBUTES REFERENCE	:: pbResult
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_szCmdName    ! BSTR
				INTEGER(INT_PTR_KIND()) $BSTR_szMethodName    ! BSTR
				$BSTR_szCmdName = ConvertStringToBSTR(szCmdName)
				$BSTR_szMethodName = ConvertStringToBSTR(szMethodName)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 200	! Add routine table offset
				IApplication_AddCommand_PTR = $VTBL
				$RETURN = IApplication_AddCommand($OBJECT, $BSTR_szCmdName, $BSTR_szMethodName, nBitmapOffset, dwCookie, pbResult)
				CALL SysFreeString($BSTR_szCmdName)
				CALL SysFreeString($BSTR_szMethodName)
				$IApplication_AddCommand = $RETURN
			END FUNCTION $IApplication_AddCommand
			!Creates a toolbar and toolbar buttons. Can only be called by AddIns.
  			INTEGER*4 FUNCTION $IApplication_AddCommandBarButton($OBJECT, nButtonType, szCmdName, dwCookie)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_AddCommandBarButton
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: nButtonType	
				!DEC$ ATTRIBUTES REFERENCE	:: nButtonType
				CHARACTER*(*), INTENT(IN)	:: szCmdName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szCmdName
				INTEGER*4, INTENT(IN)	:: dwCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: dwCookie
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_szCmdName    ! BSTR
				$BSTR_szCmdName = ConvertStringToBSTR(szCmdName)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 176	! Add routine table offset
				IApplication_AddCommandBarButton_PTR = $VTBL
				$RETURN = IApplication_AddCommandBarButton($OBJECT, nButtonType, $BSTR_szCmdName, dwCookie)
				CALL SysFreeString($BSTR_szCmdName)
				$IApplication_AddCommandBarButton = $RETURN
			END FUNCTION $IApplication_AddCommandBarButton
			!Binds keystrokes to a command or VBStript macro.
  			INTEGER*4 FUNCTION $IApplication_AddKeyBinding($OBJECT, szKey, szCommandName, szEditor)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_AddKeyBinding
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: szKey	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szKey
				CHARACTER*(*), INTENT(IN)	:: szCommandName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szCommandName
				CHARACTER*(*), INTENT(IN)	:: szEditor	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szEditor
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_szKey    ! BSTR
				INTEGER(INT_PTR_KIND()) $BSTR_szCommandName    ! BSTR
				INTEGER(INT_PTR_KIND()) $BSTR_szEditor    ! BSTR
				$BSTR_szKey = ConvertStringToBSTR(szKey)
				$BSTR_szCommandName = ConvertStringToBSTR(szCommandName)
				$BSTR_szEditor = ConvertStringToBSTR(szEditor)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 180	! Add routine table offset
				IApplication_AddKeyBinding_PTR = $VTBL
				$RETURN = IApplication_AddKeyBinding($OBJECT, $BSTR_szKey, $BSTR_szCommandName, $BSTR_szEditor)
				CALL SysFreeString($BSTR_szKey)
				CALL SysFreeString($BSTR_szCommandName)
				CALL SysFreeString($BSTR_szEditor)
				$IApplication_AddKeyBinding = $RETURN
			END FUNCTION $IApplication_AddKeyBinding
			!Inserts a newly created project into the workspace.
  			INTEGER*4 FUNCTION $IApplication_AddProject($OBJECT, szName, szPath, szType, bAddDefaultFolders)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_AddProject
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: szName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szName
				CHARACTER*(*), INTENT(IN)	:: szPath	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szPath
				CHARACTER*(*), INTENT(IN)	:: szType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szType
				TYPE (VARIANT), INTENT(IN)	:: bAddDefaultFolders	
				!DEC$ ATTRIBUTES REFERENCE	:: bAddDefaultFolders
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_szName    ! BSTR
				INTEGER(INT_PTR_KIND()) $BSTR_szPath    ! BSTR
				INTEGER(INT_PTR_KIND()) $BSTR_szType    ! BSTR
				$BSTR_szName = ConvertStringToBSTR(szName)
				$BSTR_szPath = ConvertStringToBSTR(szPath)
				$BSTR_szType = ConvertStringToBSTR(szType)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 220	! Add routine table offset
				IApplication_AddProject_PTR = $VTBL
				$RETURN = IApplication_AddProject($OBJECT, $BSTR_szName, $BSTR_szPath, $BSTR_szType, bAddDefaultFolders)
				CALL SysFreeString($BSTR_szName)
				CALL SysFreeString($BSTR_szPath)
				CALL SysFreeString($BSTR_szType)
				$IApplication_AddProject = $RETURN
			END FUNCTION $IApplication_AddProject
			!Builds a specified configuration by processing only the files that have changed.
  			INTEGER*4 FUNCTION $IApplication_Build($OBJECT, Configuration)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_Build
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Configuration	
				!DEC$ ATTRIBUTES REFERENCE	:: Configuration
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Configuration
				IF (PRESENT(Configuration)) THEN 
					$VAR_Configuration = Configuration
				ELSE
					$VAR_Configuration = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 184	! Add routine table offset
				IApplication_Build_PTR = $VTBL
				$RETURN = IApplication_Build($OBJECT, $VAR_Configuration)
				$IApplication_Build = $RETURN
			END FUNCTION $IApplication_Build
			!Deletes all intermediate and output files for a configuration.
  			INTEGER*4 FUNCTION $IApplication_Clean($OBJECT, Configuration)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_Clean
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Configuration	
				!DEC$ ATTRIBUTES REFERENCE	:: Configuration
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Configuration
				IF (PRESENT(Configuration)) THEN 
					$VAR_Configuration = Configuration
				ELSE
					$VAR_Configuration = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 208	! Add routine table offset
				IApplication_Clean_PTR = $VTBL
				$RETURN = IApplication_Clean($OBJECT, $VAR_Configuration)
				$IApplication_Clean = $RETURN
			END FUNCTION $IApplication_Clean
			!Enables or disables existing modeless windows in Developer Studio.
  			INTEGER*4 FUNCTION $IApplication_EnableModeless($OBJECT, bEnable)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_EnableModeless
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: bEnable	
				!DEC$ ATTRIBUTES REFERENCE	:: bEnable
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 204	! Add routine table offset
				IApplication_EnableModeless_PTR = $VTBL
				$RETURN = IApplication_EnableModeless($OBJECT, bEnable)
				$IApplication_EnableModeless = $RETURN
			END FUNCTION $IApplication_EnableModeless
			!Executes a command or VBScript macro.
  			INTEGER*4 FUNCTION $IApplication_ExecuteCommand($OBJECT, szCommandName)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_ExecuteCommand
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: szCommandName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szCommandName
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_szCommandName    ! BSTR
				$BSTR_szCommandName = ConvertStringToBSTR(szCommandName)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 172	! Add routine table offset
				IApplication_ExecuteCommand_PTR = $VTBL
				$RETURN = IApplication_ExecuteCommand($OBJECT, $BSTR_szCommandName)
				CALL SysFreeString($BSTR_szCommandName)
				$IApplication_ExecuteCommand = $RETURN
			END FUNCTION $IApplication_ExecuteCommand
			!Runs the program specified by the active configuration outside of the debugger.
  			INTEGER*4 FUNCTION $IApplication_ExecuteConfiguration($OBJECT, Reserved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_ExecuteConfiguration
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Reserved	
				!DEC$ ATTRIBUTES REFERENCE	:: Reserved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Reserved
				IF (PRESENT(Reserved)) THEN 
					$VAR_Reserved = Reserved
				ELSE
					$VAR_Reserved = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 192	! Add routine table offset
				IApplication_ExecuteConfiguration_PTR = $VTBL
				$RETURN = IApplication_ExecuteConfiguration($OBJECT, $VAR_Reserved)
				$IApplication_ExecuteConfiguration = $RETURN
			END FUNCTION $IApplication_ExecuteConfiguration
			!Returns/Sets whether Developer Studio's main window is the foreground window.
  			INTEGER*4 FUNCTION $IApplication_GetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 156	! Add routine table offset
				IApplication_GetActive_PTR = $VTBL
				$RETURN = IApplication_GetActive($OBJECT, pbActive)
				$IApplication_GetActive = $RETURN
			END FUNCTION $IApplication_GetActive
			!Returns/Sets the active Configuration object of the active project.
  			INTEGER*4 FUNCTION $IApplication_GetActiveConfiguration($OBJECT, ActiveConfiguration)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetActiveConfiguration
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ActiveConfiguration	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveConfiguration
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 128	! Add routine table offset
				IApplication_GetActiveConfiguration_PTR = $VTBL
				$RETURN = IApplication_GetActiveConfiguration($OBJECT, ActiveConfiguration)
				$IApplication_GetActiveConfiguration = $RETURN
			END FUNCTION $IApplication_GetActiveConfiguration
			!Returns the active Document object.
  			INTEGER*4 FUNCTION $IApplication_GetActiveDocument($OBJECT, ActiveDocument)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetActiveDocument
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ActiveDocument	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveDocument
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 96	! Add routine table offset
				IApplication_GetActiveDocument_PTR = $VTBL
				$RETURN = IApplication_GetActiveDocument($OBJECT, ActiveDocument)
				$IApplication_GetActiveDocument = $RETURN
			END FUNCTION $IApplication_GetActiveDocument
			!Returns/Sets the active Project object of the workspace.
  			INTEGER*4 FUNCTION $IApplication_GetActiveProject($OBJECT, ActiveProject)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetActiveProject
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ActiveProject	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveProject
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 144	! Add routine table offset
				IApplication_GetActiveProject_PTR = $VTBL
				$RETURN = IApplication_GetActiveProject($OBJECT, ActiveProject)
				$IApplication_GetActiveProject = $RETURN
			END FUNCTION $IApplication_GetActiveProject
			!Returns the active MDI child window.
  			INTEGER*4 FUNCTION $IApplication_GetActiveWindow($OBJECT, ActiveWindow)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetActiveWindow
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ActiveWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveWindow
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 108	! Add routine table offset
				IApplication_GetActiveWindow_PTR = $VTBL
				$RETURN = IApplication_GetActiveWindow($OBJECT, ActiveWindow)
				$IApplication_GetActiveWindow = $RETURN
			END FUNCTION $IApplication_GetActiveWindow
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IApplication_GetApplication($OBJECT, Application)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Application	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Application
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				IApplication_GetApplication_PTR = $VTBL
				$RETURN = IApplication_GetApplication($OBJECT, Application)
				$IApplication_GetApplication = $RETURN
			END FUNCTION $IApplication_GetApplication
			!Returns/sets the current directory used by File.Open.
  			INTEGER*4 FUNCTION $IApplication_GetCurrentDirectory($OBJECT, CurrentDirectory)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetCurrentDirectory
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: CurrentDirectory	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: CurrentDirectory
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_CurrentDirectory    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IApplication_GetCurrentDirectory_PTR = $VTBL
				$RETURN = IApplication_GetCurrentDirectory($OBJECT, $BSTR_CurrentDirectory)
				$STATUS = ConvertBSTRToString($BSTR_CurrentDirectory, CurrentDirectory)
				CALL SysFreeString($BSTR_CurrentDirectory)
				$IApplication_GetCurrentDirectory = $RETURN
			END FUNCTION $IApplication_GetCurrentDirectory
			!Returns the Debugger object.
  			INTEGER*4 FUNCTION $IApplication_GetDebugger($OBJECT, ppDebugger)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetDebugger
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDebugger	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDebugger
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 120	! Add routine table offset
				IApplication_GetDebugger_PTR = $VTBL
				$RETURN = IApplication_GetDebugger($OBJECT, ppDebugger)
				$IApplication_GetDebugger = $RETURN
			END FUNCTION $IApplication_GetDebugger
			!Returns the Documents object.
  			INTEGER*4 FUNCTION $IApplication_GetDocuments($OBJECT, Documents)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetDocuments
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Documents	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Documents
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 104	! Add routine table offset
				IApplication_GetDocuments_PTR = $VTBL
				$RETURN = IApplication_GetDocuments($OBJECT, Documents)
				$IApplication_GetDocuments = $RETURN
			END FUNCTION $IApplication_GetDocuments
			!Returns the number of errors from the last invocation of build
  			INTEGER*4 FUNCTION $IApplication_GetErrors($OBJECT, Errors)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetErrors
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Errors	
				!DEC$ ATTRIBUTES REFERENCE	:: Errors
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 212	! Add routine table offset
				IApplication_GetErrors_PTR = $VTBL
				$RETURN = IApplication_GetErrors($OBJECT, Errors)
				$IApplication_GetErrors = $RETURN
			END FUNCTION $IApplication_GetErrors
			!Returns the filename and pathname to the Developer Studio executable.
  			INTEGER*4 FUNCTION $IApplication_GetFullName($OBJECT, FullName)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetFullName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: FullName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: FullName
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_FullName    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IApplication_GetFullName_PTR = $VTBL
				$RETURN = IApplication_GetFullName($OBJECT, $BSTR_FullName)
				$STATUS = ConvertBSTRToString($BSTR_FullName, FullName)
				CALL SysFreeString($BSTR_FullName)
				$IApplication_GetFullName = $RETURN
			END FUNCTION $IApplication_GetFullName
			!Returns/sets the height of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_GetHeight($OBJECT, Height)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetHeight
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Height	
				!DEC$ ATTRIBUTES REFERENCE	:: Height
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IApplication_GetHeight_PTR = $VTBL
				$RETURN = IApplication_GetHeight($OBJECT, Height)
				$IApplication_GetHeight = $RETURN
			END FUNCTION $IApplication_GetHeight
			!Returns/sets the coordinate of the left edge of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_GetLeft($OBJECT, Left)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetLeft
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Left	
				!DEC$ ATTRIBUTES REFERENCE	:: Left
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IApplication_GetLeft_PTR = $VTBL
				$RETURN = IApplication_GetLeft($OBJECT, Left)
				$IApplication_GetLeft = $RETURN
			END FUNCTION $IApplication_GetLeft
			!Returns the name of the application (Microsoft Developer Studio).
  			INTEGER*4 FUNCTION $IApplication_GetName($OBJECT, Name)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_Name    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IApplication_GetName_PTR = $VTBL
				$RETURN = IApplication_GetName($OBJECT, $BSTR_Name)
				$STATUS = ConvertBSTRToString($BSTR_Name, Name)
				CALL SysFreeString($BSTR_Name)
				$IApplication_GetName = $RETURN
			END FUNCTION $IApplication_GetName
			!Provides access to objects provided by third parties which extend Developer Studio.
  			INTEGER*4 FUNCTION $IApplication_GetPackageExtension($OBJECT, szExtensionName, pExt)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetPackageExtension
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: szExtensionName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: szExtensionName
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pExt	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: pExt
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_szExtensionName    ! BSTR
				$BSTR_szExtensionName = ConvertStringToBSTR(szExtensionName)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 160	! Add routine table offset
				IApplication_GetPackageExtension_PTR = $VTBL
				$RETURN = IApplication_GetPackageExtension($OBJECT, $BSTR_szExtensionName, pExt)
				CALL SysFreeString($BSTR_szExtensionName)
				$IApplication_GetPackageExtension = $RETURN
			END FUNCTION $IApplication_GetPackageExtension
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IApplication_GetParent($OBJECT, Parent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Parent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Parent
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 92	! Add routine table offset
				IApplication_GetParent_PTR = $VTBL
				$RETURN = IApplication_GetParent($OBJECT, Parent)
				$IApplication_GetParent = $RETURN
			END FUNCTION $IApplication_GetParent
			!Returns the path of the executable for Developer Studio.
  			INTEGER*4 FUNCTION $IApplication_GetPath($OBJECT, Path)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetPath
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Path	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Path
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_Path    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IApplication_GetPath_PTR = $VTBL
				$RETURN = IApplication_GetPath($OBJECT, $BSTR_Path)
				$STATUS = ConvertBSTRToString($BSTR_Path, Path)
				CALL SysFreeString($BSTR_Path)
				$IApplication_GetPath = $RETURN
			END FUNCTION $IApplication_GetPath
			!Returns the Projects collection.
  			INTEGER*4 FUNCTION $IApplication_GetProjects($OBJECT, Projects)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetProjects
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Projects	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Projects
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 124	! Add routine table offset
				IApplication_GetProjects_PTR = $VTBL
				$RETURN = IApplication_GetProjects($OBJECT, Projects)
				$IApplication_GetProjects = $RETURN
			END FUNCTION $IApplication_GetProjects
			!Returns the TextEditor object.
  			INTEGER*4 FUNCTION $IApplication_GetTextEditor($OBJECT, TextEditor)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetTextEditor
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: TextEditor	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: TextEditor
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IApplication_GetTextEditor_PTR = $VTBL
				$RETURN = IApplication_GetTextEditor($OBJECT, TextEditor)
				$IApplication_GetTextEditor = $RETURN
			END FUNCTION $IApplication_GetTextEditor
			!Returns/sets the coordinate of the top edge of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_GetTop($OBJECT, Top)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetTop
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Top	
				!DEC$ ATTRIBUTES REFERENCE	:: Top
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IApplication_GetTop_PTR = $VTBL
				$RETURN = IApplication_GetTop($OBJECT, Top)
				$IApplication_GetTop = $RETURN
			END FUNCTION $IApplication_GetTop
			!Returns a string representing the version of Developer Studio.
  			INTEGER*4 FUNCTION $IApplication_GetVersion($OBJECT, Version)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetVersion
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Version	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Version
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_Version    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IApplication_GetVersion_PTR = $VTBL
				$RETURN = IApplication_GetVersion($OBJECT, $BSTR_Version)
				$STATUS = ConvertBSTRToString($BSTR_Version, Version)
				CALL SysFreeString($BSTR_Version)
				$IApplication_GetVersion = $RETURN
			END FUNCTION $IApplication_GetVersion
			!Returns/sets whether the Developer Studio main window is visible.
  			INTEGER*4 FUNCTION $IApplication_GetVisible($OBJECT, Visible)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetVisible
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: Visible	
				!DEC$ ATTRIBUTES REFERENCE	:: Visible
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 136	! Add routine table offset
				IApplication_GetVisible_PTR = $VTBL
				$RETURN = IApplication_GetVisible($OBJECT, Visible)
				$IApplication_GetVisible = $RETURN
			END FUNCTION $IApplication_GetVisible
			!Returns the number of warnings from the last invocation of build
  			INTEGER*4 FUNCTION $IApplication_GetWarnings($OBJECT, Warnings)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetWarnings
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Warnings	
				!DEC$ ATTRIBUTES REFERENCE	:: Warnings
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 216	! Add routine table offset
				IApplication_GetWarnings_PTR = $VTBL
				$RETURN = IApplication_GetWarnings($OBJECT, Warnings)
				$IApplication_GetWarnings = $RETURN
			END FUNCTION $IApplication_GetWarnings
			!Returns/sets the width of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_GetWidth($OBJECT, Width)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetWidth
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Width	
				!DEC$ ATTRIBUTES REFERENCE	:: Width
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IApplication_GetWidth_PTR = $VTBL
				$RETURN = IApplication_GetWidth($OBJECT, Width)
				$IApplication_GetWidth = $RETURN
			END FUNCTION $IApplication_GetWidth
			!Returns the Windows object filles with the MDI child windows.
  			INTEGER*4 FUNCTION $IApplication_GetWindows($OBJECT, Windows)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetWindows
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Windows	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Windows
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 100	! Add routine table offset
				IApplication_GetWindows_PTR = $VTBL
				$RETURN = IApplication_GetWindows($OBJECT, Windows)
				$IApplication_GetWindows = $RETURN
			END FUNCTION $IApplication_GetWindows
			!Returns/Sets the current state of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_GetWindowState($OBJECT, WindowState)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_GetWindowState
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: WindowState	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: WindowState
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 112	! Add routine table offset
				IApplication_GetWindowState_PTR = $VTBL
				$RETURN = IApplication_GetWindowState($OBJECT, WindowState)
				$IApplication_GetWindowState = $RETURN
			END FUNCTION $IApplication_GetWindowState
			!Prints text to the output window.
  			INTEGER*4 FUNCTION $IApplication_PrintToOutputWindow($OBJECT, Message)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_PrintToOutputWindow
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: Message	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Message
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_Message    ! BSTR
				$BSTR_Message = ConvertStringToBSTR(Message)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 168	! Add routine table offset
				IApplication_PrintToOutputWindow_PTR = $VTBL
				$RETURN = IApplication_PrintToOutputWindow($OBJECT, $BSTR_Message)
				CALL SysFreeString($BSTR_Message)
				$IApplication_PrintToOutputWindow = $RETURN
			END FUNCTION $IApplication_PrintToOutputWindow
			!Quits Developer Studio.
  			INTEGER*4 FUNCTION $IApplication_Quit($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_Quit
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 164	! Add routine table offset
				IApplication_Quit_PTR = $VTBL
				$RETURN = IApplication_Quit($OBJECT)
				$IApplication_Quit = $RETURN
			END FUNCTION $IApplication_Quit
			!Rebuilds all files in a specified configuration.
  			INTEGER*4 FUNCTION $IApplication_RebuildAll($OBJECT, Configuration)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_RebuildAll
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: Configuration	
				!DEC$ ATTRIBUTES REFERENCE	:: Configuration
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_Configuration
				IF (PRESENT(Configuration)) THEN 
					$VAR_Configuration = Configuration
				ELSE
					$VAR_Configuration = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 188	! Add routine table offset
				IApplication_RebuildAll_PTR = $VTBL
				$RETURN = IApplication_RebuildAll($OBJECT, $VAR_Configuration)
				$IApplication_RebuildAll = $RETURN
			END FUNCTION $IApplication_RebuildAll
			!Returns/Sets whether Developer Studio's main window is the foreground window.
  			INTEGER*4 FUNCTION $IApplication_SetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 152	! Add routine table offset
				IApplication_SetActive_PTR = $VTBL
				$RETURN = IApplication_SetActive($OBJECT, pbActive)
				$IApplication_SetActive = $RETURN
			END FUNCTION $IApplication_SetActive
			!Returns/Sets the active Configuration object of the active project.
  			INTEGER*4 FUNCTION $IApplication_SetActiveConfiguration($OBJECT, ActiveConfiguration)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetActiveConfiguration
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: ActiveConfiguration	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveConfiguration
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 132	! Add routine table offset
				IApplication_SetActiveConfiguration_PTR = $VTBL
				$RETURN = IApplication_SetActiveConfiguration($OBJECT, ActiveConfiguration)
				$IApplication_SetActiveConfiguration = $RETURN
			END FUNCTION $IApplication_SetActiveConfiguration
			!Returns/Sets the active Project object of the workspace.
  			INTEGER*4 FUNCTION $IApplication_SetActiveProject($OBJECT, ActiveProject)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetActiveProject
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: ActiveProject	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ActiveProject
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 148	! Add routine table offset
				IApplication_SetActiveProject_PTR = $VTBL
				$RETURN = IApplication_SetActiveProject($OBJECT, ActiveProject)
				$IApplication_SetActiveProject = $RETURN
			END FUNCTION $IApplication_SetActiveProject
			!Provides Developer Studio with information about AddIns. Can only be called by AddIns.
  			INTEGER*4 FUNCTION $IApplication_SetAddInInfo($OBJECT, nInstanceHandle, pCmdDispatch, nIDBitmapResourceMedium, nIDBitmapResourceLarge, dwCookie)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetAddInInfo
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: nInstanceHandle	
				!DEC$ ATTRIBUTES REFERENCE	:: nInstanceHandle
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: pCmdDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: pCmdDispatch
				INTEGER*4, INTENT(IN)	:: nIDBitmapResourceMedium	
				!DEC$ ATTRIBUTES REFERENCE	:: nIDBitmapResourceMedium
				INTEGER*4, INTENT(IN)	:: nIDBitmapResourceLarge	
				!DEC$ ATTRIBUTES REFERENCE	:: nIDBitmapResourceLarge
				INTEGER*4, INTENT(IN)	:: dwCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: dwCookie
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 196	! Add routine table offset
				IApplication_SetAddInInfo_PTR = $VTBL
				$RETURN = IApplication_SetAddInInfo($OBJECT, nInstanceHandle, pCmdDispatch, nIDBitmapResourceMedium, nIDBitmapResourceLarge, dwCookie)
				$IApplication_SetAddInInfo = $RETURN
			END FUNCTION $IApplication_SetAddInInfo
			!Returns/sets the current directory used by File.Open.
  			INTEGER*4 FUNCTION $IApplication_SetCurrentDirectory($OBJECT, CurrentDirectory)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetCurrentDirectory
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: CurrentDirectory	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: CurrentDirectory
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_CurrentDirectory    ! BSTR
				$BSTR_CurrentDirectory = ConvertStringToBSTR(CurrentDirectory)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IApplication_SetCurrentDirectory_PTR = $VTBL
				$RETURN = IApplication_SetCurrentDirectory($OBJECT, $BSTR_CurrentDirectory)
				CALL SysFreeString($BSTR_CurrentDirectory)
				$IApplication_SetCurrentDirectory = $RETURN
			END FUNCTION $IApplication_SetCurrentDirectory
			!Returns/sets the height of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_SetHeight($OBJECT, Height)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetHeight
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Height	
				!DEC$ ATTRIBUTES REFERENCE	:: Height
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IApplication_SetHeight_PTR = $VTBL
				$RETURN = IApplication_SetHeight($OBJECT, Height)
				$IApplication_SetHeight = $RETURN
			END FUNCTION $IApplication_SetHeight
			!Returns/sets the coordinate of the left edge of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_SetLeft($OBJECT, Left)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetLeft
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Left	
				!DEC$ ATTRIBUTES REFERENCE	:: Left
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IApplication_SetLeft_PTR = $VTBL
				$RETURN = IApplication_SetLeft($OBJECT, Left)
				$IApplication_SetLeft = $RETURN
			END FUNCTION $IApplication_SetLeft
			!Returns/sets the coordinate of the top edge of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_SetTop($OBJECT, Top)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetTop
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Top	
				!DEC$ ATTRIBUTES REFERENCE	:: Top
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IApplication_SetTop_PTR = $VTBL
				$RETURN = IApplication_SetTop($OBJECT, Top)
				$IApplication_SetTop = $RETURN
			END FUNCTION $IApplication_SetTop
			!Returns/sets whether the Developer Studio main window is visible.
  			INTEGER*4 FUNCTION $IApplication_SetVisible($OBJECT, Visible)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetVisible
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: Visible	
				!DEC$ ATTRIBUTES REFERENCE	:: Visible
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 140	! Add routine table offset
				IApplication_SetVisible_PTR = $VTBL
				$RETURN = IApplication_SetVisible($OBJECT, Visible)
				$IApplication_SetVisible = $RETURN
			END FUNCTION $IApplication_SetVisible
			!Returns/sets the width of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_SetWidth($OBJECT, Width)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetWidth
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: Width	
				!DEC$ ATTRIBUTES REFERENCE	:: Width
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IApplication_SetWidth_PTR = $VTBL
				$RETURN = IApplication_SetWidth($OBJECT, Width)
				$IApplication_SetWidth = $RETURN
			END FUNCTION $IApplication_SetWidth
			!Returns/Sets the current state of Developer Studio's main window.
  			INTEGER*4 FUNCTION $IApplication_SetWindowState($OBJECT, WindowState)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IApplication_SetWindowState
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: WindowState	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: WindowState
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 116	! Add routine table offset
				IApplication_SetWindowState_PTR = $VTBL
				$RETURN = IApplication_SetWindowState($OBJECT, WindowState)
				$IApplication_SetWindowState = $RETURN
			END FUNCTION $IApplication_SetWindowState
			!Creates a new document.
  			INTEGER*4 FUNCTION $IDocuments_Add($OBJECT, docType, vtReserved, ppDocument)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDocuments_Add
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: docType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: docType
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vtReserved	
				!DEC$ ATTRIBUTES REFERENCE	:: vtReserved
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDocument	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDocument
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_docType    ! BSTR
				TYPE (VARIANT) :: $VAR_vtReserved
				$BSTR_docType = ConvertStringToBSTR(docType)
				IF (PRESENT(vtReserved)) THEN 
					$VAR_vtReserved = vtReserved
				ELSE
					$VAR_vtReserved = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IDocuments_Add_PTR = $VTBL
				$RETURN = IDocuments_Add($OBJECT, $BSTR_docType, $VAR_vtReserved, ppDocument)
				CALL SysFreeString($BSTR_docType)
				$IDocuments_Add = $RETURN
			END FUNCTION $IDocuments_Add
			!Closes all documents
  			INTEGER*4 FUNCTION $IDocuments_CloseAll($OBJECT, vtSaveChanges, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDocuments_CloseAll
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vtSaveChanges	
				!DEC$ ATTRIBUTES REFERENCE	:: vtSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vtSaveChanges
				IF (PRESENT(vtSaveChanges)) THEN 
					$VAR_vtSaveChanges = vtSaveChanges
				ELSE
					$VAR_vtSaveChanges = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IDocuments_CloseAll_PTR = $VTBL
				$RETURN = IDocuments_CloseAll($OBJECT, $VAR_vtSaveChanges, pSaved)
				$IDocuments_CloseAll = $RETURN
			END FUNCTION $IDocuments_CloseAll
  			INTEGER*4 FUNCTION $IDocuments_Get_NewEnum($OBJECT, $NewEnum)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDocuments_Get_NewEnum
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: $NewEnum	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: $NewEnum
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IDocuments_Get_NewEnum_PTR = $VTBL
				$RETURN = IDocuments_Get_NewEnum($OBJECT, $NewEnum)
				$IDocuments_Get_NewEnum = $RETURN
			END FUNCTION $IDocuments_Get_NewEnum
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IDocuments_GetApplication($OBJECT, ppApplication)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDocuments_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApplication	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApplication
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IDocuments_GetApplication_PTR = $VTBL
				$RETURN = IDocuments_GetApplication($OBJECT, ppApplication)
				$IDocuments_GetApplication = $RETURN
			END FUNCTION $IDocuments_GetApplication
			!Returns the number of documents in the collection.
  			INTEGER*4 FUNCTION $IDocuments_GetCount($OBJECT, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDocuments_GetCount
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IDocuments_GetCount_PTR = $VTBL
				$RETURN = IDocuments_GetCount($OBJECT, Count)
				$IDocuments_GetCount = $RETURN
			END FUNCTION $IDocuments_GetCount
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IDocuments_GetParent($OBJECT, ppParent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDocuments_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IDocuments_GetParent_PTR = $VTBL
				$RETURN = IDocuments_GetParent($OBJECT, ppParent)
				$IDocuments_GetParent = $RETURN
			END FUNCTION $IDocuments_GetParent
			!Returns a Document object from the collection by its index or filename.
  			INTEGER*4 FUNCTION $IDocuments_Item($OBJECT, Index, Item)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDocuments_Item
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Index	
				!DEC$ ATTRIBUTES REFERENCE	:: Index
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Item	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Item
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IDocuments_Item_PTR = $VTBL
				$RETURN = IDocuments_Item($OBJECT, Index, Item)
				$IDocuments_Item = $RETURN
			END FUNCTION $IDocuments_Item
			!Opens an existing document.
  			INTEGER*4 FUNCTION $IDocuments_Open($OBJECT, filename, vtDocType, vtBoolReadOnly, ppDocument)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDocuments_Open
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(IN)	:: filename	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: filename
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vtDocType	
				!DEC$ ATTRIBUTES REFERENCE	:: vtDocType
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vtBoolReadOnly	
				!DEC$ ATTRIBUTES REFERENCE	:: vtBoolReadOnly
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDocument	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDocument
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_filename    ! BSTR
				TYPE (VARIANT) :: $VAR_vtDocType
				TYPE (VARIANT) :: $VAR_vtBoolReadOnly
				$BSTR_filename = ConvertStringToBSTR(filename)
				IF (PRESENT(vtDocType)) THEN 
					$VAR_vtDocType = vtDocType
				ELSE
					$VAR_vtDocType = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(vtBoolReadOnly)) THEN 
					$VAR_vtBoolReadOnly = vtBoolReadOnly
				ELSE
					$VAR_vtBoolReadOnly = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IDocuments_Open_PTR = $VTBL
				$RETURN = IDocuments_Open($OBJECT, $BSTR_filename, $VAR_vtDocType, $VAR_vtBoolReadOnly, ppDocument)
				CALL SysFreeString($BSTR_filename)
				$IDocuments_Open = $RETURN
			END FUNCTION $IDocuments_Open
			!Saves all open documents.
  			INTEGER*4 FUNCTION $IDocuments_SaveAll($OBJECT, vtBoolPrompt, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDocuments_SaveAll
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vtBoolPrompt	
				!DEC$ ATTRIBUTES REFERENCE	:: vtBoolPrompt
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vtBoolPrompt
				IF (PRESENT(vtBoolPrompt)) THEN 
					$VAR_vtBoolPrompt = vtBoolPrompt
				ELSE
					$VAR_vtBoolPrompt = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IDocuments_SaveAll_PTR = $VTBL
				$RETURN = IDocuments_SaveAll($OBJECT, $VAR_vtBoolPrompt, pSaved)
				$IDocuments_SaveAll = $RETURN
			END FUNCTION $IDocuments_SaveAll
  			INTEGER*4 FUNCTION $IDSAddIn_OnConnection($OBJECT, pApp, bFirstTime, dwCookie, OnConnection)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDSAddIn_OnConnection
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: pApp	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: pApp
				LOGICAL*2, INTENT(IN)	:: bFirstTime	
				!DEC$ ATTRIBUTES REFERENCE	:: bFirstTime
				INTEGER*4, INTENT(IN)	:: dwCookie	
				!DEC$ ATTRIBUTES REFERENCE	:: dwCookie
				LOGICAL*2, INTENT(OUT)	:: OnConnection	
				!DEC$ ATTRIBUTES REFERENCE	:: OnConnection
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 12	! Add routine table offset
				IDSAddIn_OnConnection_PTR = $VTBL
				$RETURN = IDSAddIn_OnConnection($OBJECT, pApp, bFirstTime, dwCookie, OnConnection)
				$IDSAddIn_OnConnection = $RETURN
			END FUNCTION $IDSAddIn_OnConnection
  			INTEGER*4 FUNCTION $IDSAddIn_OnDisconnection($OBJECT, bLastTime)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IDSAddIn_OnDisconnection
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: bLastTime	
				!DEC$ ATTRIBUTES REFERENCE	:: bLastTime
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 16	! Add routine table offset
				IDSAddIn_OnDisconnection_PTR = $VTBL
				$RETURN = IDSAddIn_OnDisconnection($OBJECT, bLastTime)
				$IDSAddIn_OnDisconnection = $RETURN
			END FUNCTION $IDSAddIn_OnDisconnection
			!Closes the document.
  			INTEGER*4 FUNCTION $IGenericDocument_Close($OBJECT, vSaveChanges, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Close
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vSaveChanges	
				!DEC$ ATTRIBUTES REFERENCE	:: vSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vSaveChanges
				IF (PRESENT(vSaveChanges)) THEN 
					$VAR_vSaveChanges = vSaveChanges
				ELSE
					$VAR_vSaveChanges = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 100	! Add routine table offset
				IGenericDocument_Close_PTR = $VTBL
				$RETURN = IGenericDocument_Close($OBJECT, $VAR_vSaveChanges, pSaved)
				$IGenericDocument_Close = $RETURN
			END FUNCTION $IGenericDocument_Close
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION $IGenericDocument_GetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IGenericDocument_GetActive_PTR = $VTBL
				$RETURN = IGenericDocument_GetActive($OBJECT, pbActive)
				$IGenericDocument_GetActive = $RETURN
			END FUNCTION $IGenericDocument_GetActive
			!Returns the active window for this document.
  			INTEGER*4 FUNCTION $IGenericDocument_GetActiveWindow($OBJECT, ppWindow)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetActiveWindow
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindow
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IGenericDocument_GetActiveWindow_PTR = $VTBL
				$RETURN = IGenericDocument_GetActiveWindow($OBJECT, ppWindow)
				$IGenericDocument_GetActiveWindow = $RETURN
			END FUNCTION $IGenericDocument_GetActiveWindow
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericDocument_GetApplication($OBJECT, ppApplication)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApplication	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApplication
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IGenericDocument_GetApplication_PTR = $VTBL
				$RETURN = IGenericDocument_GetApplication($OBJECT, ppApplication)
				$IGenericDocument_GetApplication = $RETURN
			END FUNCTION $IGenericDocument_GetApplication
			!Returns the name of the document including the path.
  			INTEGER*4 FUNCTION $IGenericDocument_GetFullName($OBJECT, pName)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetFullName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pName
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pName    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IGenericDocument_GetFullName_PTR = $VTBL
				$RETURN = IGenericDocument_GetFullName($OBJECT, $BSTR_pName)
				$STATUS = ConvertBSTRToString($BSTR_pName, pName)
				CALL SysFreeString($BSTR_pName)
				$IGenericDocument_GetFullName = $RETURN
			END FUNCTION $IGenericDocument_GetFullName
			!Returns the name of the document.
  			INTEGER*4 FUNCTION $IGenericDocument_GetName($OBJECT, pName)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pName	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pName
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pName    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IGenericDocument_GetName_PTR = $VTBL
				$RETURN = IGenericDocument_GetName($OBJECT, $BSTR_pName)
				$STATUS = ConvertBSTRToString($BSTR_pName, pName)
				CALL SysFreeString($BSTR_pName)
				$IGenericDocument_GetName = $RETURN
			END FUNCTION $IGenericDocument_GetName
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericDocument_GetParent($OBJECT, ppParent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IGenericDocument_GetParent_PTR = $VTBL
				$RETURN = IGenericDocument_GetParent($OBJECT, ppParent)
				$IGenericDocument_GetParent = $RETURN
			END FUNCTION $IGenericDocument_GetParent
			!Returns the pathname of the document. Never has a trailing backslash.
  			INTEGER*4 FUNCTION $IGenericDocument_GetPath($OBJECT, pPath)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetPath
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pPath	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pPath
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pPath    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IGenericDocument_GetPath_PTR = $VTBL
				$RETURN = IGenericDocument_GetPath($OBJECT, $BSTR_pPath)
				$STATUS = ConvertBSTRToString($BSTR_pPath, pPath)
				CALL SysFreeString($BSTR_pPath)
				$IGenericDocument_GetPath = $RETURN
			END FUNCTION $IGenericDocument_GetPath
			!Returns/sets whether a document can be changed inside Developer Studio.
  			INTEGER*4 FUNCTION $IGenericDocument_GetReadOnly($OBJECT, pReadOnly)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetReadOnly
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pReadOnly	
				!DEC$ ATTRIBUTES REFERENCE	:: pReadOnly
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IGenericDocument_GetReadOnly_PTR = $VTBL
				$RETURN = IGenericDocument_GetReadOnly($OBJECT, pReadOnly)
				$IGenericDocument_GetReadOnly = $RETURN
			END FUNCTION $IGenericDocument_GetReadOnly
			!Returns False if document has changed since it was last saved.
  			INTEGER*4 FUNCTION $IGenericDocument_GetSaved($OBJECT, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetSaved
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSaved	
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IGenericDocument_GetSaved_PTR = $VTBL
				$RETURN = IGenericDocument_GetSaved($OBJECT, pSaved)
				$IGenericDocument_GetSaved = $RETURN
			END FUNCTION $IGenericDocument_GetSaved
			!Returns a string describing the type of the document. Most documents return 'Generic'.
  			INTEGER*4 FUNCTION $IGenericDocument_GetType($OBJECT, pType)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetType
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pType
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pType    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IGenericDocument_GetType_PTR = $VTBL
				$RETURN = IGenericDocument_GetType($OBJECT, $BSTR_pType)
				$STATUS = ConvertBSTRToString($BSTR_pType, pType)
				CALL SysFreeString($BSTR_pType)
				$IGenericDocument_GetType = $RETURN
			END FUNCTION $IGenericDocument_GetType
			!Returns a Windows collection containing the windows associated with this document.
  			INTEGER*4 FUNCTION $IGenericDocument_GetWindows($OBJECT, ppWindows)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_GetWindows
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindows	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindows
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IGenericDocument_GetWindows_PTR = $VTBL
				$RETURN = IGenericDocument_GetWindows($OBJECT, ppWindows)
				$IGenericDocument_GetWindows = $RETURN
			END FUNCTION $IGenericDocument_GetWindows
			!Creates a new window for this document.
  			INTEGER*4 FUNCTION $IGenericDocument_NewWindow($OBJECT, ppWindow)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_NewWindow
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppWindow	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppWindow
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IGenericDocument_NewWindow_PTR = $VTBL
				$RETURN = IGenericDocument_NewWindow($OBJECT, ppWindow)
				$IGenericDocument_NewWindow = $RETURN
			END FUNCTION $IGenericDocument_NewWindow
			!Sends the document to the current printer. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION $IGenericDocument_PrintOut($OBJECT, pSuccess)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_PrintOut
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 96	! Add routine table offset
				IGenericDocument_PrintOut_PTR = $VTBL
				$RETURN = IGenericDocument_PrintOut($OBJECT, pSuccess)
				$IGenericDocument_PrintOut = $RETURN
			END FUNCTION $IGenericDocument_PrintOut
			!Reapplies previous editing actions. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION $IGenericDocument_Redo($OBJECT, pSuccess)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Redo
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 92	! Add routine table offset
				IGenericDocument_Redo_PTR = $VTBL
				$RETURN = IGenericDocument_Redo($OBJECT, pSuccess)
				$IGenericDocument_Redo = $RETURN
			END FUNCTION $IGenericDocument_Redo
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved1($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved1
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 104	! Add routine table offset
				IGenericDocument_Reserved1_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved1($OBJECT)
				$IGenericDocument_Reserved1 = $RETURN
			END FUNCTION $IGenericDocument_Reserved1
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved10($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved10
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 140	! Add routine table offset
				IGenericDocument_Reserved10_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved10($OBJECT)
				$IGenericDocument_Reserved10 = $RETURN
			END FUNCTION $IGenericDocument_Reserved10
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved2($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved2
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 108	! Add routine table offset
				IGenericDocument_Reserved2_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved2($OBJECT)
				$IGenericDocument_Reserved2 = $RETURN
			END FUNCTION $IGenericDocument_Reserved2
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved3($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved3
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 112	! Add routine table offset
				IGenericDocument_Reserved3_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved3($OBJECT)
				$IGenericDocument_Reserved3 = $RETURN
			END FUNCTION $IGenericDocument_Reserved3
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved4($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved4
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 116	! Add routine table offset
				IGenericDocument_Reserved4_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved4($OBJECT)
				$IGenericDocument_Reserved4 = $RETURN
			END FUNCTION $IGenericDocument_Reserved4
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved5($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved5
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 120	! Add routine table offset
				IGenericDocument_Reserved5_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved5($OBJECT)
				$IGenericDocument_Reserved5 = $RETURN
			END FUNCTION $IGenericDocument_Reserved5
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved6($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved6
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 124	! Add routine table offset
				IGenericDocument_Reserved6_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved6($OBJECT)
				$IGenericDocument_Reserved6 = $RETURN
			END FUNCTION $IGenericDocument_Reserved6
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved7($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved7
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 128	! Add routine table offset
				IGenericDocument_Reserved7_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved7($OBJECT)
				$IGenericDocument_Reserved7 = $RETURN
			END FUNCTION $IGenericDocument_Reserved7
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved8($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved8
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 132	! Add routine table offset
				IGenericDocument_Reserved8_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved8($OBJECT)
				$IGenericDocument_Reserved8 = $RETURN
			END FUNCTION $IGenericDocument_Reserved8
  			INTEGER*4 FUNCTION $IGenericDocument_Reserved9($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Reserved9
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 136	! Add routine table offset
				IGenericDocument_Reserved9_PTR = $VTBL
				$RETURN = IGenericDocument_Reserved9($OBJECT)
				$IGenericDocument_Reserved9 = $RETURN
			END FUNCTION $IGenericDocument_Reserved9
			!Saves the document to disk.
  			INTEGER*4 FUNCTION $IGenericDocument_Save($OBJECT, vFilename, vBoolPrompt, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Save
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vFilename	
				!DEC$ ATTRIBUTES REFERENCE	:: vFilename
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vBoolPrompt	
				!DEC$ ATTRIBUTES REFERENCE	:: vBoolPrompt
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vFilename
				TYPE (VARIANT) :: $VAR_vBoolPrompt
				IF (PRESENT(vFilename)) THEN 
					$VAR_vFilename = vFilename
				ELSE
					$VAR_vFilename = OPTIONAL_VARIANT
				END IF
				IF (PRESENT(vBoolPrompt)) THEN 
					$VAR_vBoolPrompt = vBoolPrompt
				ELSE
					$VAR_vBoolPrompt = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IGenericDocument_Save_PTR = $VTBL
				$RETURN = IGenericDocument_Save($OBJECT, $VAR_vFilename, $VAR_vBoolPrompt, pSaved)
				$IGenericDocument_Save = $RETURN
			END FUNCTION $IGenericDocument_Save
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION $IGenericDocument_SetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_SetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IGenericDocument_SetActive_PTR = $VTBL
				$RETURN = IGenericDocument_SetActive($OBJECT, pbActive)
				$IGenericDocument_SetActive = $RETURN
			END FUNCTION $IGenericDocument_SetActive
			!Returns/sets whether a document can be changed inside Developer Studio.
  			INTEGER*4 FUNCTION $IGenericDocument_SetReadOnly($OBJECT, pReadOnly)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_SetReadOnly
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pReadOnly	
				!DEC$ ATTRIBUTES REFERENCE	:: pReadOnly
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IGenericDocument_SetReadOnly_PTR = $VTBL
				$RETURN = IGenericDocument_SetReadOnly($OBJECT, pReadOnly)
				$IGenericDocument_SetReadOnly = $RETURN
			END FUNCTION $IGenericDocument_SetReadOnly
			!Reverses previous editing actions. Has no effect on 'Generic' documents.
  			INTEGER*4 FUNCTION $IGenericDocument_Undo($OBJECT, pSuccess)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericDocument_Undo
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pSuccess	
				!DEC$ ATTRIBUTES REFERENCE	:: pSuccess
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				IGenericDocument_Undo_PTR = $VTBL
				$RETURN = IGenericDocument_Undo($OBJECT, pSuccess)
				$IGenericDocument_Undo = $RETURN
			END FUNCTION $IGenericDocument_Undo
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericProject_GetApplication($OBJECT, Application)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Application	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Application
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IGenericProject_GetApplication_PTR = $VTBL
				$RETURN = IGenericProject_GetApplication($OBJECT, Application)
				$IGenericProject_GetApplication = $RETURN
			END FUNCTION $IGenericProject_GetApplication
			!Returns the name of the project including its path.
  			INTEGER*4 FUNCTION $IGenericProject_GetFullName($OBJECT, Name)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetFullName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_Name    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IGenericProject_GetFullName_PTR = $VTBL
				$RETURN = IGenericProject_GetFullName($OBJECT, $BSTR_Name)
				$STATUS = ConvertBSTRToString($BSTR_Name, Name)
				CALL SysFreeString($BSTR_Name)
				$IGenericProject_GetFullName = $RETURN
			END FUNCTION $IGenericProject_GetFullName
			!Returns the name of the project.
  			INTEGER*4 FUNCTION $IGenericProject_GetName($OBJECT, Name)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetName
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: Name	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: Name
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_Name    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IGenericProject_GetName_PTR = $VTBL
				$RETURN = IGenericProject_GetName($OBJECT, $BSTR_Name)
				$STATUS = ConvertBSTRToString($BSTR_Name, Name)
				CALL SysFreeString($BSTR_Name)
				$IGenericProject_GetName = $RETURN
			END FUNCTION $IGenericProject_GetName
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericProject_GetParent($OBJECT, Parent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Parent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Parent
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IGenericProject_GetParent_PTR = $VTBL
				$RETURN = IGenericProject_GetParent($OBJECT, Parent)
				$IGenericProject_GetParent = $RETURN
			END FUNCTION $IGenericProject_GetParent
			!Returns a string representing the type of the project.
  			INTEGER*4 FUNCTION $IGenericProject_GetType($OBJECT, pType)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_GetType
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pType	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pType
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pType    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IGenericProject_GetType_PTR = $VTBL
				$RETURN = IGenericProject_GetType($OBJECT, $BSTR_pType)
				$STATUS = ConvertBSTRToString($BSTR_pType, pType)
				CALL SysFreeString($BSTR_pType)
				$IGenericProject_GetType = $RETURN
			END FUNCTION $IGenericProject_GetType
  			INTEGER*4 FUNCTION $IGenericProject_Reserved1($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved1
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IGenericProject_Reserved1_PTR = $VTBL
				$RETURN = IGenericProject_Reserved1($OBJECT)
				$IGenericProject_Reserved1 = $RETURN
			END FUNCTION $IGenericProject_Reserved1
  			INTEGER*4 FUNCTION $IGenericProject_Reserved10($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved10
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IGenericProject_Reserved10_PTR = $VTBL
				$RETURN = IGenericProject_Reserved10($OBJECT)
				$IGenericProject_Reserved10 = $RETURN
			END FUNCTION $IGenericProject_Reserved10
  			INTEGER*4 FUNCTION $IGenericProject_Reserved2($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved2
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IGenericProject_Reserved2_PTR = $VTBL
				$RETURN = IGenericProject_Reserved2($OBJECT)
				$IGenericProject_Reserved2 = $RETURN
			END FUNCTION $IGenericProject_Reserved2
  			INTEGER*4 FUNCTION $IGenericProject_Reserved3($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved3
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IGenericProject_Reserved3_PTR = $VTBL
				$RETURN = IGenericProject_Reserved3($OBJECT)
				$IGenericProject_Reserved3 = $RETURN
			END FUNCTION $IGenericProject_Reserved3
  			INTEGER*4 FUNCTION $IGenericProject_Reserved4($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved4
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IGenericProject_Reserved4_PTR = $VTBL
				$RETURN = IGenericProject_Reserved4($OBJECT)
				$IGenericProject_Reserved4 = $RETURN
			END FUNCTION $IGenericProject_Reserved4
  			INTEGER*4 FUNCTION $IGenericProject_Reserved5($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved5
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IGenericProject_Reserved5_PTR = $VTBL
				$RETURN = IGenericProject_Reserved5($OBJECT)
				$IGenericProject_Reserved5 = $RETURN
			END FUNCTION $IGenericProject_Reserved5
  			INTEGER*4 FUNCTION $IGenericProject_Reserved6($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved6
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IGenericProject_Reserved6_PTR = $VTBL
				$RETURN = IGenericProject_Reserved6($OBJECT)
				$IGenericProject_Reserved6 = $RETURN
			END FUNCTION $IGenericProject_Reserved6
  			INTEGER*4 FUNCTION $IGenericProject_Reserved7($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved7
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IGenericProject_Reserved7_PTR = $VTBL
				$RETURN = IGenericProject_Reserved7($OBJECT)
				$IGenericProject_Reserved7 = $RETURN
			END FUNCTION $IGenericProject_Reserved7
  			INTEGER*4 FUNCTION $IGenericProject_Reserved8($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved8
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IGenericProject_Reserved8_PTR = $VTBL
				$RETURN = IGenericProject_Reserved8($OBJECT)
				$IGenericProject_Reserved8 = $RETURN
			END FUNCTION $IGenericProject_Reserved8
  			INTEGER*4 FUNCTION $IGenericProject_Reserved9($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericProject_Reserved9
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IGenericProject_Reserved9_PTR = $VTBL
				$RETURN = IGenericProject_Reserved9($OBJECT)
				$IGenericProject_Reserved9 = $RETURN
			END FUNCTION $IGenericProject_Reserved9
			!Close the window.
  			INTEGER*4 FUNCTION $IGenericWindow_Close($OBJECT, boolSaveChanges, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Close
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: boolSaveChanges	
				!DEC$ ATTRIBUTES REFERENCE	:: boolSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 104	! Add routine table offset
				IGenericWindow_Close_PTR = $VTBL
				$RETURN = IGenericWindow_Close($OBJECT, boolSaveChanges, pSaved)
				$IGenericWindow_Close = $RETURN
			END FUNCTION $IGenericWindow_Close
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(OUT)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IGenericWindow_GetActive_PTR = $VTBL
				$RETURN = IGenericWindow_GetActive($OBJECT, pbActive)
				$IGenericWindow_GetActive = $RETURN
			END FUNCTION $IGenericWindow_GetActive
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IGenericWindow_GetApplication($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 96	! Add routine table offset
				IGenericWindow_GetApplication_PTR = $VTBL
				$RETURN = IGenericWindow_GetApplication($OBJECT, ppDispatch)
				$IGenericWindow_GetApplication = $RETURN
			END FUNCTION $IGenericWindow_GetApplication
			!Returns the caption of a window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetCaption($OBJECT, pbstrCaption)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetCaption
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbstrCaption	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbstrCaption
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pbstrCaption    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IGenericWindow_GetCaption_PTR = $VTBL
				$RETURN = IGenericWindow_GetCaption($OBJECT, $BSTR_pbstrCaption)
				$STATUS = ConvertBSTRToString($BSTR_pbstrCaption, pbstrCaption)
				CALL SysFreeString($BSTR_pbstrCaption)
				$IGenericWindow_GetCaption = $RETURN
			END FUNCTION $IGenericWindow_GetCaption
			!Returns/sets the height of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetHeight($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetHeight
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 64	! Add routine table offset
				IGenericWindow_GetHeight_PTR = $VTBL
				$RETURN = IGenericWindow_GetHeight($OBJECT, plVal)
				$IGenericWindow_GetHeight = $RETURN
			END FUNCTION $IGenericWindow_GetHeight
			!Returns the one-based ordinal of a window in the Windows collection.
  			INTEGER*4 FUNCTION $IGenericWindow_GetIndex($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetIndex
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 76	! Add routine table offset
				IGenericWindow_GetIndex_PTR = $VTBL
				$RETURN = IGenericWindow_GetIndex($OBJECT, plVal)
				$IGenericWindow_GetIndex = $RETURN
			END FUNCTION $IGenericWindow_GetIndex
			!Returns/sets the coordinate for the left edge of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetLeft($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetLeft
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IGenericWindow_GetLeft_PTR = $VTBL
				$RETURN = IGenericWindow_GetLeft($OBJECT, plVal)
				$IGenericWindow_GetLeft = $RETURN
			END FUNCTION $IGenericWindow_GetLeft
			!Returns the next window in the tab sequence.
  			INTEGER*4 FUNCTION $IGenericWindow_GetNext($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetNext
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 80	! Add routine table offset
				IGenericWindow_GetNext_PTR = $VTBL
				$RETURN = IGenericWindow_GetNext($OBJECT, ppDispatch)
				$IGenericWindow_GetNext = $RETURN
			END FUNCTION $IGenericWindow_GetNext
			!Returns the document associated with this window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetParent($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 100	! Add routine table offset
				IGenericWindow_GetParent_PTR = $VTBL
				$RETURN = IGenericWindow_GetParent($OBJECT, ppDispatch)
				$IGenericWindow_GetParent = $RETURN
			END FUNCTION $IGenericWindow_GetParent
			!Returns the previous window in the shift-tab sequence.
  			INTEGER*4 FUNCTION $IGenericWindow_GetPrevious($OBJECT, ppDispatch)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetPrevious
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppDispatch	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppDispatch
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 84	! Add routine table offset
				IGenericWindow_GetPrevious_PTR = $VTBL
				$RETURN = IGenericWindow_GetPrevious($OBJECT, ppDispatch)
				$IGenericWindow_GetPrevious = $RETURN
			END FUNCTION $IGenericWindow_GetPrevious
			!Returns/sets the coordinate for the top of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetTop($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetTop
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 56	! Add routine table offset
				IGenericWindow_GetTop_PTR = $VTBL
				$RETURN = IGenericWindow_GetTop($OBJECT, plVal)
				$IGenericWindow_GetTop = $RETURN
			END FUNCTION $IGenericWindow_GetTop
			!Returns a string describing the type of the window. Most windows return 'Generic'.
  			INTEGER*4 FUNCTION $IGenericWindow_GetType($OBJECT, pbstrCaption)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetType
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				CHARACTER*(*), INTENT(OUT)	:: pbstrCaption	! BSTR
				!DEC$ ATTRIBUTES REFERENCE	:: pbstrCaption
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				INTEGER(INT_PTR_KIND()) $BSTR_pbstrCaption    ! BSTR
				INTEGER*4 $STATUS
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IGenericWindow_GetType_PTR = $VTBL
				$RETURN = IGenericWindow_GetType($OBJECT, $BSTR_pbstrCaption)
				$STATUS = ConvertBSTRToString($BSTR_pbstrCaption, pbstrCaption)
				CALL SysFreeString($BSTR_pbstrCaption)
				$IGenericWindow_GetType = $RETURN
			END FUNCTION $IGenericWindow_GetType
			!Returns/sets the width of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetWidth($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetWidth
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 72	! Add routine table offset
				IGenericWindow_GetWidth_PTR = $VTBL
				$RETURN = IGenericWindow_GetWidth($OBJECT, plVal)
				$IGenericWindow_GetWidth = $RETURN
			END FUNCTION $IGenericWindow_GetWidth
			!Returns the state of the window or maximize, minimize, or restore the window.
  			INTEGER*4 FUNCTION $IGenericWindow_GetWindowState($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_GetWindowState
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: plVal	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 92	! Add routine table offset
				IGenericWindow_GetWindowState_PTR = $VTBL
				$RETURN = IGenericWindow_GetWindowState($OBJECT, plVal)
				$IGenericWindow_GetWindowState = $RETURN
			END FUNCTION $IGenericWindow_GetWindowState
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved1($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved1
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 108	! Add routine table offset
				IGenericWindow_Reserved1_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved1($OBJECT)
				$IGenericWindow_Reserved1 = $RETURN
			END FUNCTION $IGenericWindow_Reserved1
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved10($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved10
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 144	! Add routine table offset
				IGenericWindow_Reserved10_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved10($OBJECT)
				$IGenericWindow_Reserved10 = $RETURN
			END FUNCTION $IGenericWindow_Reserved10
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved2($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved2
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 112	! Add routine table offset
				IGenericWindow_Reserved2_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved2($OBJECT)
				$IGenericWindow_Reserved2 = $RETURN
			END FUNCTION $IGenericWindow_Reserved2
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved3($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved3
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 116	! Add routine table offset
				IGenericWindow_Reserved3_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved3($OBJECT)
				$IGenericWindow_Reserved3 = $RETURN
			END FUNCTION $IGenericWindow_Reserved3
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved4($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved4
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 120	! Add routine table offset
				IGenericWindow_Reserved4_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved4($OBJECT)
				$IGenericWindow_Reserved4 = $RETURN
			END FUNCTION $IGenericWindow_Reserved4
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved5($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved5
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 124	! Add routine table offset
				IGenericWindow_Reserved5_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved5($OBJECT)
				$IGenericWindow_Reserved5 = $RETURN
			END FUNCTION $IGenericWindow_Reserved5
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved6($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved6
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 128	! Add routine table offset
				IGenericWindow_Reserved6_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved6($OBJECT)
				$IGenericWindow_Reserved6 = $RETURN
			END FUNCTION $IGenericWindow_Reserved6
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved7($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved7
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 132	! Add routine table offset
				IGenericWindow_Reserved7_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved7($OBJECT)
				$IGenericWindow_Reserved7 = $RETURN
			END FUNCTION $IGenericWindow_Reserved7
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved8($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved8
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 136	! Add routine table offset
				IGenericWindow_Reserved8_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved8($OBJECT)
				$IGenericWindow_Reserved8 = $RETURN
			END FUNCTION $IGenericWindow_Reserved8
  			INTEGER*4 FUNCTION $IGenericWindow_Reserved9($OBJECT)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_Reserved9
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 140	! Add routine table offset
				IGenericWindow_Reserved9_PTR = $VTBL
				$RETURN = IGenericWindow_Reserved9($OBJECT)
				$IGenericWindow_Reserved9 = $RETURN
			END FUNCTION $IGenericWindow_Reserved9
			!Returns/sets the active state of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetActive($OBJECT, pbActive)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetActive
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				LOGICAL*2, INTENT(IN)	:: pbActive	
				!DEC$ ATTRIBUTES REFERENCE	:: pbActive
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IGenericWindow_SetActive_PTR = $VTBL
				$RETURN = IGenericWindow_SetActive($OBJECT, pbActive)
				$IGenericWindow_SetActive = $RETURN
			END FUNCTION $IGenericWindow_SetActive
			!Returns/sets the height of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetHeight($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetHeight
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 60	! Add routine table offset
				IGenericWindow_SetHeight_PTR = $VTBL
				$RETURN = IGenericWindow_SetHeight($OBJECT, plVal)
				$IGenericWindow_SetHeight = $RETURN
			END FUNCTION $IGenericWindow_SetHeight
			!Returns/sets the coordinate for the left edge of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetLeft($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetLeft
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IGenericWindow_SetLeft_PTR = $VTBL
				$RETURN = IGenericWindow_SetLeft($OBJECT, plVal)
				$IGenericWindow_SetLeft = $RETURN
			END FUNCTION $IGenericWindow_SetLeft
			!Returns/sets the coordinate for the top of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetTop($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetTop
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IGenericWindow_SetTop_PTR = $VTBL
				$RETURN = IGenericWindow_SetTop($OBJECT, plVal)
				$IGenericWindow_SetTop = $RETURN
			END FUNCTION $IGenericWindow_SetTop
			!Returns/sets the width of the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetWidth($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetWidth
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(IN)	:: plVal	
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 68	! Add routine table offset
				IGenericWindow_SetWidth_PTR = $VTBL
				$RETURN = IGenericWindow_SetWidth($OBJECT, plVal)
				$IGenericWindow_SetWidth = $RETURN
			END FUNCTION $IGenericWindow_SetWidth
			!Returns the state of the window or maximize, minimize, or restore the window.
  			INTEGER*4 FUNCTION $IGenericWindow_SetWindowState($OBJECT, plVal)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IGenericWindow_SetWindowState
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: plVal	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: plVal
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 88	! Add routine table offset
				IGenericWindow_SetWindowState_PTR = $VTBL
				$RETURN = IGenericWindow_SetWindowState($OBJECT, plVal)
				$IGenericWindow_SetWindowState = $RETURN
			END FUNCTION $IGenericWindow_SetWindowState
  			INTEGER*4 FUNCTION $IProjects_Get_NewEnum($OBJECT, $NewEnum)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IProjects_Get_NewEnum
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: $NewEnum	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: $NewEnum
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IProjects_Get_NewEnum_PTR = $VTBL
				$RETURN = IProjects_Get_NewEnum($OBJECT, $NewEnum)
				$IProjects_Get_NewEnum = $RETURN
			END FUNCTION $IProjects_Get_NewEnum
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IProjects_GetApplication($OBJECT, Application)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IProjects_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Application	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Application
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IProjects_GetApplication_PTR = $VTBL
				$RETURN = IProjects_GetApplication($OBJECT, Application)
				$IProjects_GetApplication = $RETURN
			END FUNCTION $IProjects_GetApplication
			!Returns the number of Project objects in the collections.
  			INTEGER*4 FUNCTION $IProjects_GetCount($OBJECT, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IProjects_GetCount
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IProjects_GetCount_PTR = $VTBL
				$RETURN = IProjects_GetCount($OBJECT, Count)
				$IProjects_GetCount = $RETURN
			END FUNCTION $IProjects_GetCount
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IProjects_GetParent($OBJECT, Parent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IProjects_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Parent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Parent
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IProjects_GetParent_PTR = $VTBL
				$RETURN = IProjects_GetParent($OBJECT, Parent)
				$IProjects_GetParent = $RETURN
			END FUNCTION $IProjects_GetParent
			!Returns a Project object from the collection by index or Name.
  			INTEGER*4 FUNCTION $IProjects_Item($OBJECT, Index, Item)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IProjects_Item
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Index	
				!DEC$ ATTRIBUTES REFERENCE	:: Index
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Item	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Item
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IProjects_Item_PTR = $VTBL
				$RETURN = IProjects_Item($OBJECT, Index, Item)
				$IProjects_Item = $RETURN
			END FUNCTION $IProjects_Item
			!Arranges the windows in the collection.
  			INTEGER*4 FUNCTION $IWindows_Arrange($OBJECT, vtArrangeStyle)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWindows_Arrange
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: vtArrangeStyle	
				!DEC$ ATTRIBUTES REFERENCE	:: vtArrangeStyle
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 48	! Add routine table offset
				IWindows_Arrange_PTR = $VTBL
				$RETURN = IWindows_Arrange($OBJECT, vtArrangeStyle)
				$IWindows_Arrange = $RETURN
			END FUNCTION $IWindows_Arrange
			!Closes the windows in the collection.
  			INTEGER*4 FUNCTION $IWindows_CloseAll($OBJECT, vtSaveChanges, pSaved)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWindows_CloseAll
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN), OPTIONAL	:: vtSaveChanges	
				!DEC$ ATTRIBUTES REFERENCE	:: vtSaveChanges
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: pSaved	! Void
				!DEC$ ATTRIBUTES REFERENCE	:: pSaved
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				TYPE (VARIANT) :: $VAR_vtSaveChanges
				IF (PRESENT(vtSaveChanges)) THEN 
					$VAR_vtSaveChanges = vtSaveChanges
				ELSE
					$VAR_vtSaveChanges = OPTIONAL_VARIANT
				END IF
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 52	! Add routine table offset
				IWindows_CloseAll_PTR = $VTBL
				$RETURN = IWindows_CloseAll($OBJECT, $VAR_vtSaveChanges, pSaved)
				$IWindows_CloseAll = $RETURN
			END FUNCTION $IWindows_CloseAll
  			INTEGER*4 FUNCTION $IWindows_Get_NewEnum($OBJECT, $NewEnum)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWindows_Get_NewEnum
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: $NewEnum	! IUnknown
				!DEC$ ATTRIBUTES REFERENCE	:: $NewEnum
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 40	! Add routine table offset
				IWindows_Get_NewEnum_PTR = $VTBL
				$RETURN = IWindows_Get_NewEnum($OBJECT, $NewEnum)
				$IWindows_Get_NewEnum = $RETURN
			END FUNCTION $IWindows_Get_NewEnum
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IWindows_GetApplication($OBJECT, ppApplication)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWindows_GetApplication
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppApplication	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppApplication
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 32	! Add routine table offset
				IWindows_GetApplication_PTR = $VTBL
				$RETURN = IWindows_GetApplication($OBJECT, ppApplication)
				$IWindows_GetApplication = $RETURN
			END FUNCTION $IWindows_GetApplication
			!Returns number of Window objects in the collection.
  			INTEGER*4 FUNCTION $IWindows_GetCount($OBJECT, Count)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWindows_GetCount
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER*4, INTENT(OUT)	:: Count	
				!DEC$ ATTRIBUTES REFERENCE	:: Count
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 28	! Add routine table offset
				IWindows_GetCount_PTR = $VTBL
				$RETURN = IWindows_GetCount($OBJECT, Count)
				$IWindows_GetCount = $RETURN
			END FUNCTION $IWindows_GetCount
			!Returns the Developer Studio Application object
  			INTEGER*4 FUNCTION $IWindows_GetParent($OBJECT, ppParent)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWindows_GetParent
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: ppParent	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: ppParent
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 36	! Add routine table offset
				IWindows_GetParent_PTR = $VTBL
				$RETURN = IWindows_GetParent($OBJECT, ppParent)
				$IWindows_GetParent = $RETURN
			END FUNCTION $IWindows_GetParent
			!Returns a Window object from the collection by its index or its caption.
  			INTEGER*4 FUNCTION $IWindows_Item($OBJECT, Index, Item)
				!DEC$ ATTRIBUTES DLLEXPORT	:: $IWindows_Item
				IMPLICIT NONE
	
				INTEGER(INT_PTR_KIND()), INTENT(IN)	:: $OBJECT	 ! Object Pointer
				!DEC$ ATTRIBUTES VALUE	:: $OBJECT
				TYPE (VARIANT), INTENT(IN)	:: Index	
				!DEC$ ATTRIBUTES REFERENCE	:: Index
				INTEGER(INT_PTR_KIND()), INTENT(OUT)	:: Item	! IDispatch
				!DEC$ ATTRIBUTES REFERENCE	:: Item
				INTEGER*4 $RETURN
				INTEGER(INT_PTR_KIND()) $VTBL			! Interface Function Table
				POINTER($VPTR, $VTBL)
				$VPTR = $OBJECT			! Interface Function Table
				$VPTR = $VTBL + 44	! Add routine table offset
				IWindows_Item_PTR = $VTBL
				$RETURN = IWindows_Item($OBJECT, Index, Item)
				$IWindows_Item = $RETURN
			END FUNCTION $IWindows_Item
	END MODULE
