0

私はCOMテクノロジーを使用してコールバックインターフェイスを実装しようとし、次のようなIDLを使用しています。

library LogstreamScannerLib
{
    importlib("stdole2.tlb");
    [
        uuid(8CACF064-EF0E-4496-92D5-F26C64A5858A)      
    ]
    dispinterface _IMyClassEvents
    {
        properties:
        methods:    
            [id(1)] void SomeMethod([in] int data); 
    };

    [
        uuid(AFC03FCD-01A9-4F38-994F-BA98E57FF64E)      
    ]   
    coclass MyComClass
    {
        [default] interface IMyClass;
        [default, source] dispinterface _IMyClassEvents;
    };


};

IMyClassにはSomeMethod宣言がありますが、プロジェクトを再コンパイル/再構築したときに、自動生成されたクラスに表示されない理由がわかりません。

常に空として宣言されます:

   MIDL_INTERFACE("8CACF064-EF0E-4496-92D5-F26C64A5858A")
    _IMyClassEvents : public IDispatch
    {
    };

私がここで間違っていることは何ですか?

4

2 に答える 2

2

COM接続ポイントを使用するという意味ですか?これは、MSDNのATL接続ポイントのドキュメント へのリンクです。

イベントプロキシクラスを生成する方法を理解しようとしている場合は、オブジェクトへの接続ポイントの追加のポイント4を参照してください。これは、イベントを追加するためのMSDNチュートリアルです。イベントプロキシクラスは何度でも再生成できます。

私が見つけたのは、プロキシクラスを生成する場所を常に探しに行かなければならないということです...

于 2011-07-04T10:30:43.813 に答える
0

最後に、私は問題を見つけました。

「接続ポイントの実装ウィザード」を使用する場合は、(「IDL」ではなく)「タイプライブラリ」から接続ポイントを生成することを選択する必要があります。この選択はコンボボックスに表示され、デフォルトのオプションIDL->TypeLibを変更する必要があります。

于 2011-07-11T17:57:14.233 に答える