0

.ocx にコンパイルされる MSVC++10 の ActiveX コントロールがあります。このコントロールに別の "ATL Simple Object" を追加しました。そこからいくつかの関数をエクスポートしたいと考えています。

このライブラリが呼び出された場合OcxTest、次の手順を実行して関数をエクスポートする必要があります。

  1. ファイルOcxTestCtrl.hCOcxTestCtrlで、関数を(プロジェクト ウィザードによって生成された)クラスの保護されたメンバーとして宣言します。

  2. OcxTestCtrl.cpp で関数を定義します。

  3. OcxTestCtrl.cppのディスパッチ マップに追加します。

    BEGIN_DISPATCH_MAP(COcxTestCtrl, COleControl)
         DISP_FUNCTION_ID(COcxTestCtrl, "Test", 1, Test, VT_I4, VTS_I4 VTS_I4)
    END_DISPATCH_MAP()

  4. 次の時点で、OcxTest.idlの IDL に追加します。

    [ uuid(...), version(1.0),  control ]
        library OcxTestLib {
        importlib(STDOLE_TLB);
        [ uuid(...) ]
        dispinterface _DOcxTest {
            properties:
            methods:
                [id(1)] int Test(int x, int y);
    };

ここで、プロジェクトに追加した他の "ATL シンプル オブジェクト" のエクスポートをどこで定義するかについて、少し迷っています。最初の 2 つのステップは、私が書いたものと似ていると思います。残りの 2 つの手順についてはどうでしょうか。

  1. Dispatch Map の定義は、メイン オブジェクトの定義と完全に類似していますか?

  2. エクスポートされた関数を IDL のどこに置く必要がありますか?

4

0 に答える 0