Delphiのインターフェイスを利用する
C++Builderでも、Delphiのインターフェイスを実装したクラスを作成できます。例えば、次のようにします。
//---------------------------------------------------------------------------
// Example.h
//---------------------------------------------------------------------------
// ...
//---------------------------------------------------------------------------
__interface IGreetable;
typedef System::DelphiInterface<IGreetable> _di_IGreetable;
__interface INTERFACE_UUID("{3C4B7A43-198C-16CE-976D-29EAABDEC1C7}") IGreetable : public IInterface
{
public:
virtual void __fastcall Greet() = 0;
};
//---------------------------------------------------------------------------
class TPerson : public TInterfacedObject, IGreetable
{
private:
protected:
virtual HRESULT __stdcall QueryInterface(const GUID& AId, void** AObject);
virtual ULONG __stdcall AddRef();
virtual ULONG __stdcall Release();
public:
__fastcall TPerson();
virtual void __fastcall Greet();
};
//---------------------------------------------------------------------------
// ...
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Example.cpp
//---------------------------------------------------------------------------
// ...
//---------------------------------------------------------------------------
HRESULT __stdcall TPerson::QueryInterface(const GUID& AId, void** AObject)
{
return TInterfacedObject::QueryInterface(AId, static_cast<void*>(AObject));
}
//---------------------------------------------------------------------------
ULONG __stdcall TPerson::AddRef()
{
return TInterfacedObject::_AddRef();
}
//---------------------------------------------------------------------------
ULONG __stdcall TPerson::Release()
{
return TInterfacedObject::_Release();
}
//---------------------------------------------------------------------------
__fastcall TPerson::TPerson() :
TInterfacedObject()
{
// Do nothing
}
//---------------------------------------------------------------------------
void __fastcall TPerson::Greet()
{
ShowMessage("Hi.");
}
//---------------------------------------------------------------------------
// ...
//---------------------------------------------------------------------------
"INTERFACE_UUID"のところで指定するGUIDは、C++BuilderのIDEのテキストエディタ上で"Shift+Ctrl+G"キーを押すことにより生成できます。
最終更新: 2009-12-06
戻る