1

CMainClass オブジェクトの ATL COM コレクションを公開して、C#、VB、または C++ クライアントからアクセスできるようにしたいと考えています。

コレクション自体の設定に問題はありませんが、COM クライアントがクラス A、B、および C にアクセスできるようにする方法がわかりません。 std::list<> 各 ATL コレクションを独自の権利で?

これを行う簡単な方法はありますか?!?!

ありがとう、ポールH

class C
{
public:
    // get/set functions...

protected:
    std::string str1_;
    std::list< std::string > list1_;
};

class A
{
public:
    // get/set functions...

protected:
    std::list< C > list1_;
};

class B
{
public:
    // get/set functions...

protected:
    std::string str1_;
    std::string str2_;
};

class CMainClass
{
public:
    void GetA( A* a ) const;
    void SetA( const A& a );
    void GetB( B* b ) const;
    void SetB( const B& b );

protected:
    A a_;
    B b_;
};
4

1 に答える 1

2

ATL に IEnumVARIANT を実装した Google。

ここにいくつかの有望なリンクがあります。

http://msdn.microsoft.com/en-us/library/3stwxh95.aspx

http://www.codeguru.com/cpp/com-tech/atl/misc/article.php/c29

お役に立てれば。

コメントへの返信: はい。Automation Compatible インターフェイス、つまり VB、C#、およびスクリプト言語で使用できるインターフェイスを公開する場合は、各オブジェクトを COM インターフェイスとして公開する必要があります。また、CComPtr<> を stl リストに格納する場合は、必ず CAdapt<> ラッパーを使用してください。

于 2009-02-24T18:57:45.077 に答える