/***************************************************************************************
***** 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
               (
geocities.com/collegepark)