1

MFC を使用して、サード パーティの COM コンポーネント用のコネクション ポイント シンクを実装しようとしています。以前にいくつかの COM コンポーネントを開発したことがありますが、コネクション ポイント シンクについてはあまり詳しくありません。

https://support.microsoft.com/en-us/kb/183599

それは私がやろうとしていることと最も似ているように見えました。説明どおりに例を再現しようとしました。私の MS Word のバージョンは 2010 ですが、参照されているインターフェイスはまだ有効であるように見えます。私は忠実に指示に従い、文字通りコードを自分のプロジェクトにカット アンド ペーストし、幅広の文字列を調整するだけで済みました。コンパイル後、単語アプリを起動して終了することはできますが、接続ポイント イベントを受信しません。おそらく問題は関数 dispid にあると考えたので、DISP_FUNCTION_ID エントリを Dispatch Map に追加しようとしました。しかし、これは oledisp1.ccp の 549 行目のアサーションにつながり、CCmdTarget::GetStackSize 関数にあることがわかります。

これはばかげていると確信していますが、うまく動作させることができません。誰かが例に欠けているものを理解するのを手伝ってもらえますか? ありがとう。

4

1 に答える 1

1

理解した。Dispatch マップに DISP_FUNCTION_ID マクロを追加して正しい軌道に乗っていましたが、実行時アサーションの原因となった VT_EMPTY の代わりに愚かにも VT_VOID を使用していました。

于 2015-06-22T03:05:09.540 に答える