/*************************************************************************************** ***** 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