//$$---- En-tête du contrôle ActiveX ---- (stActiveXControlHeader)
//---------------------------------------------------------------------------

#ifndef DLPortIOCImpl1H
#define DLPortIOCImpl1H
//---------------------------------------------------------------------------


#include "DLPortIOCX_TLB.h"
#include "DLPortIOX.h"

class ATL_NO_VTABLE TDLPortIOCXImpl:
  VCLCONTROL_IMPL(TDLPortIOCXImpl, DLPortIOCX, TDLPortIOX, IDLPortIOCX, DIID_IDLPortIOCXEvents)
{
public:

  void InitializeControl()
  {
  }


// Les entrées COM MAP déclarent les interfaces que votre objet expose (au travers de
// QueryInterface). CComRootObjectEx::InternalQueryInterface ne retourne que des
// pointeurs sur des interfaces dans l'affectation COM. Les contrôles VCL exposés comme OCX
// ont un ensemble minimum d'interfaces définies par la macro
// VCL_CONTROL_COM_INTERFACE_ENTRIES. Ajoutez les autres interfaces supportées
// par votre objet avec d'autres macros COM_INTERFACE_ENTRY[_xxx].
//
BEGIN_COM_MAP(TDLPortIOCXImpl)
  VCL_CONTROL_COM_INTERFACE_ENTRIES(IDLPortIOCX)
END_COM_MAP()



// La carte PROPERTY contient les descriptions de propriétés, les DISPIDs de propriétés,
// les CLSIDs de pages de propriétés et les IID IDispatch. Vous pouvez utiliser
// IPerPropertyBrowsingImpl, IPersistPropertyBagImpl, IPersistStreamInitImpl,
// et ISpecifyPropertyPageImpl pour utiliser les informations de votre carte
// de propriétés.
//
// REMARQUE : L'Expert BCB ne *MAINTIENT PAS* votre table PROPERTY_MAP. Vous
//       devez ajouter et supprimer les entrées manuellement.
//
BEGIN_PROPERTY_MAP(TDLPortIOCXImpl)
  // PROP_PAGE(CLSID_DLPortIOCXPage)
END_PROPERTY_MAP()

/* DECLARE_VCL_CONTROL_PERSISTENCE(CppClass, VclClass) est nécessaire pour que
 * les contrôles VCL persistent via le système de flux CVL et non le mécanisme ATL.
 * La macro ajoute les méthodes statiques IPersistStreamInit_Load et IPersistStreamInit_Save
 * à votre classe d'implémentation, remplaçant les méthodes de IPersistStreamImpl. 
 * Cette macro doit être indéfinie ou retirée manuellement si vous portez en C++Builder 4.0. */

DECLARE_VCL_CONTROL_PERSISTENCE(TDLPortIOCXImpl, TDLPortIOX);

// La macro DECLARE_ACTIVEXCONTROL_REGISTRY déclare une routine 'UpdateRegistry' 
// statique qui recense les infos de base de votre contrôle. Les
// paramètres attendus par la macro sont le ProgId & le ToolboxBitmap ID de
// votre contrôle.
//
DECLARE_ACTIVEXCONTROL_REGISTRY("DLPortIOCX.DLPortIOCX", 1);

protected: 
  STDMETHOD(AboutBox());
  STDMETHOD(CloseDriver());
  STDMETHOD(DrawTextBiDiModeFlagsReadingOnly(long* Value));
  STDMETHOD(get_ActiveHW(TOLEBOOL* Value));
  STDMETHOD(get_Cursor(short* Value));
  STDMETHOD(get_DLLPath(BSTR* Value));
  STDMETHOD(get_DoubleBuffered(TOLEBOOL* Value));
  STDMETHOD(get_DriverPath(BSTR* Value));
  STDMETHOD(get_Enabled(TOLEBOOL* Value));
  STDMETHOD(get_HardAccess(TOLEBOOL* Value));
  STDMETHOD(get_LastError(BSTR* Value));
  STDMETHOD(get_LPTNumPorts(unsigned_char* Value));
  STDMETHOD(get_Visible(TOLEBOOL* Value));
  STDMETHOD(get_VisibleDockClientCount(long* Value));
  STDMETHOD(GetLPTBasePort(short PortNr, long* Value));
  STDMETHOD(InitiateAction());
  STDMETHOD(IsRightToLeft(TOLEBOOL* Value));
  STDMETHOD(OpenDriver());
  STDMETHOD(ReadPort(long Address, short* Value));
  STDMETHOD(ReadPortFIFO(long PortAddr, long NumPorts, long Buffer));
  STDMETHOD(set_Cursor(short Value));
  STDMETHOD(set_DLLPath(BSTR Value));
  STDMETHOD(set_DoubleBuffered(TOLEBOOL Value));
  STDMETHOD(set_DriverPath(BSTR Value));
  STDMETHOD(set_Enabled(TOLEBOOL Value));
  STDMETHOD(set_HardAccess(TOLEBOOL Value));
  STDMETHOD(set_Visible(TOLEBOOL Value));
  STDMETHOD(UseRightToLeftReading(TOLEBOOL* Value));
  STDMETHOD(UseRightToLeftScrollBar(TOLEBOOL* Value));
  STDMETHOD(WritePort(long Address, short Data));
  STDMETHOD(WritePortFIFO(long PortAddr, long NumPorts, long Buffer));
};
//---------------------------------------------------------------------------


#endif
