2011-02-10 8 views
1

明日私はIDispatch関連の作業を行う予定であり、このインターフェイスをサポートするクラスを作成する必要があります。IDispatch派生クラスのATLテンプレート

私はCOMオブジェクトを作成してCOMポインタを管理するためにしばらくの間、ATLクラスを使用していましたので、私もクラスに使用したいと思います。しかし、これまでの研究や同僚との議論では、1つのプロパティやメソッドで簡単なクラスを作成したいとしても、私は重量級のIDLをすべて必要としていると私は信じました。

これが当てはまる場合は、最初からすべてを書くことに頼っていますが、まだ何か不足していると思います。私が見逃したテンプレートはありますか?

+0

[IDispatchImpl](http://msdn.microsoft.com/en-us/library/494h01te.aspx)があります。私はどれくらい助けてくれるのか分かりません。 –

+0

タスクに必要としない、または必要としないIIDとLIBIDが必要です。しかし、ありがとう。 – Coder

+0

すべてのインタフェースで常に 'IID'を使用する必要がありますが、必要がない場合は' LIBID'を指定する必要はありません。 'IDispatchImpl'は内部でデフォルトを使います。 –

答えて

1

ATLは、IDispatchImplクラスを有する。

+0

+1ですが、このクラスではタイプライブラリを使用しています。 OPはそれに反対する可能性が高いですが、IMOはちょうどIDLを使用しており、タイプライブラリを埋め込むことで人生が楽になります。 – sharptooth

+0

'IDispatchImpl'のデフォルトの動作はTypeLibを使用することですが、TypeLibには直接アクセスしません。 'tihclass'パラメータを使って、その振る舞いをバイパスするダミークラスを提供することができます。それ以外の場合は、 'IDispatch'から直接派生し、そのメソッドを手動で実装します。それらの多くは単に 'E_NOTIMPL'を返すことができます。 –