2011-07-04 15 views
0

は、私は、COM techonlogyとコールバックインターフェイスを実装しようとそのようIDLを持っている:MIDL。 idlにメソッドを追加した後にコールバックC++インターフェイスが更新されないのはなぜですか?

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 
    { 
    }; 

私がここで間違って何?

答えて

0

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

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

2

COM接続ポイントの使用をお考えですか? MSDNのATL Connection Pointsドキュメントへのリンクは次のとおりです。

イベントプロキシクラスの生成方法を調べる場合は、Adding Connection Points to an Objectのポイント4を参照してください。イベントを追加するにはMSDN tutorialがあります。イベントプロキシクラスは、何度でも再生成することができます。私は何を見つけることは、私は常にプロキシクラスを生成する場所を探して行かなければならないということです

...

+0

ありがとう、@シェーン!私はその記事を読んだが、私はすべてのことを正しくしたように見える。ウィザードで接続ポイントにメソッドを追加しようとすると、MIDLファイルに表示する必要があると言われました。 MIDLインターフェイスはそのままです –

+0

正直言って、VS IDEを使ってIDLファイルを変更することはありません。手動で編集するだけです...もっと簡単です。 –

関連する問題