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

戻る