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

#ifndef DLPortOCImpl1H
#define DLPortOCImpl1H
//---------------------------------------------------------------------------


#include "DLPortOCXControl1_TLB.h"
#include "DLPortIOX.h"

class ATL_NO_VTABLE TDLPortOCXImpl:
  VCLCONTROL_IMPL(TDLPortOCXImpl, DLPortOCX, TDLPortIOX, IDLPortOCX, DIID_IDLPortOCXEvents)
{
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(TDLPortOCXImpl)
  VCL_CONTROL_COM_INTERFACE_ENTRIES(IDLPortOCX)
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(TDLPortOCXImpl)
  // PROP_PAGE(CLSID_DLPortOCXPage)
END_PROPERTY_MAP()

/* DECLARE_VCL_CONTROL_PERSISTENCE(CppClass, VclClass) est requis pour les contrôles VCL
 * pour persister via le mécanisme de flux VCL et non le mécanisme ATL.
 * La macro ajoute les méthodes statiques IPersistStreamInit_Load et IPersistStreamInit_Save
 * à votre classe d'implémentation, surchargeant ainsi les méthodes dans IPersistStreamImpl. 
 * En cas de portage vers C++Builder 4.0, cette macro doit être manuellement indéfinie ou supprimée. */

DECLARE_VCL_CONTROL_PERSISTENCE(TDLPortOCXImpl, 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("DLPortOCXControl1.DLPortOCX", 1);

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


#endif
