/***************************************************************************************
*****                        INTERFACE IMRTINTERFACE                               *****
****************************************************************************************
** Author: Peter Stuart
** Date:   8/1/98
** Description: All interfaces for Mare Tracer inherit from IMRTInterface. This provides
**   functionality common to all components.
**
** Interface Functions:
**
**   GetComponentName - Each component has a name which distinguishes it from the other 
**                      components of the same type. The maximum number of characters 
**                      for the name is 15, and the space is allocated in the calling 
**                      program.
**
**   The following functions are used to create a data buffer containing the 
**   addresses of the component's member variables. This allows the calling
**   program to access the variables directly if necessary.
**
**   NumTypes  - Returns the number of variables that the calling program can access.
**   GetTypes  - Fills an array of type information for defining the variables. This
**               information is necessary for proper type-casting.
**   GetBuffer - This is the actual data buffer.
**   Update    - After the calling program changes any variables, it calls this function
**               Any variables which are dependent on the variables changed can be
**               updated when this is called.
**
**   Clone         - Creates an exact copy of the component and returns the interface 
**                   to it.
**   CreateDlgBox  - This is called when the calling program wishes the component to 
**                   create a dialog box for the user to interact with it. This allows
**                   the component to modify its own variables.
**   HandleCommand - This is called in the DLGPROC of the calling program. 
**                   Any interaction with the user can be dealt with here.
***************************************************************************************/



#include 
#include "TYPE.hpp"
#include "codes.hpp"

#ifndef __IMRTINTERFACE__
#define __IMRTINTERFACE__

interface IMRTInterface : public IUnknown
{
	virtual HRESULT pascal NumTypes (UINT*) = 0;
	virtual HRESULT pascal GetTypes (TYPE*) = 0;
   	virtual HRESULT pascal GetBuffer (void**) = 0;
	virtual HRESULT pascal Update (void) = 0;
	virtual HRESULT pascal Clone (IMRTInterface**)  = 0;
	virtual HRESULT pascal CreateDlgBox (HINSTANCE, HWND, DLGPROC) = 0;
	virtual HRESULT pascal HandleCommand (HWND, UINT, WPARAM, LPARAM) = 0;
};

#endif

    Source: geocities.com/collegepark/4206

               ( geocities.com/collegepark)