2015-06-21 55 views
1

我一直在試圖爲使用MFC的第三方COM組件實現連接點接收器。我之前開發了一些COM組件,雖然連接點匯並不是我所熟悉的。在將我的頭撞到牆上一段時間之後,我決定回到基礎並發現這個微軟示例:Microsoft Word連接點接收器故障示例/ MFC

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

這似乎與我想要做的最相似。我試圖完全按照所述重現該示例。雖然我的MS Word版本是2010,但引用的界面仍然有效。我盡職盡責地遵循指示,從字面上將代碼粘貼到自己的項目中,只需對寬字符串進行調整即可。編譯完成後,我可以啓動app這個詞並退出,但我沒有收到連接點事件,畢竟這是一個重點。我認爲問題可能是dispid函數,所以我試圖將DISP_FUNCTION_ID條目添加到Dispatch Map中;但是這隻會導致在oledisp1.ccp第549行的斷言,這會導致在CCmdTarget :: GetStackSize函數中。

我敢肯定,這是愚蠢的簡單,但我不能得到它的工作。有人可以幫我弄清楚這個例子中缺少的東西嗎?謝謝。

+0

如果您很難理解COM連接點,請閱讀[COM連接點簡介](http://blogs.msdn.com/b/oldnewthing/archive/2013/06/12/10424940。 ASPX)。這裏也可能與[Dispatch interfaces as connection point interfaces]有關[http://blogs.msdn.com/b/oldnewthing/archive/2013/06/12/10425215.aspx]。 – IInspectable

+0

理解連接點概念並不困難。我無法使用推薦的MFC方法使用CCmdTarget派生類來實現接收器接口。這看起來很直接,這個例子對我來說非常有意義,它不起作用。 – forother

回答

1

想通了。我在正確的軌道上添加DISP_FUNCTION_ID宏到我的Dispatch map,但是我愚蠢地使用了VT_VOID而不是VT_EMPTY,這導致了運行時斷言。