.ocx にコンパイルされる MSVC++10 の ActiveX コントロールがあります。このコントロールに別の "ATL Simple Object" を追加しました。そこからいくつかの関数をエクスポートしたいと考えています。
このライブラリが呼び出された場合OcxTest
、次の手順を実行して関数をエクスポートする必要があります。
ファイルOcxTestCtrl.h
COcxTestCtrl
で、関数を(プロジェクト ウィザードによって生成された)クラスの保護されたメンバーとして宣言します。OcxTestCtrl.cpp で関数を定義します。
OcxTestCtrl.cppのディスパッチ マップに追加します。
BEGIN_DISPATCH_MAP(COcxTestCtrl, COleControl) DISP_FUNCTION_ID(COcxTestCtrl, "Test", 1, Test, VT_I4, VTS_I4 VTS_I4) END_DISPATCH_MAP()
次の時点で、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 つの手順についてはどうでしょうか。
Dispatch Map の定義は、メイン オブジェクトの定義と完全に類似していますか?
エクスポートされた関数を IDL のどこに置く必要がありますか?