我一直在尝试使用MFC为第三方COM组件实现连接点接收器。我以前已经开发了一些COM组件,尽管我不熟悉连接点接收器。将头撞在墙上一会儿之后,我决定回到基础知识,并找到以下Microsoft示例:

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

这似乎与我要尝试的最相似。我试图完全按照描述重现该示例。尽管我的MS Word版本是2010,但引用的接口(interface)仍然有效。我严格按照说明进行操作,从字面上将代码剪切并粘贴到我自己的项目中,而只需要对宽字符串进行调整。编译后,我可以启动单词app并退出它,但是我没有收到连接点事件,毕竟这是整个事件。我以为问题可能出在函数dispid上,所以我试图将DISP_FUNCTION_ID条目添加到Dispatch Map中。但这只会导致oledisp1.ccp第549行断言,该断言实际上是在CCmdTarget::GetStackSize函数中。

我敢肯定这很简单,但我无法使其正常工作。有人可以帮我找出示例中缺少的内容吗?谢谢。

最佳答案

弄清楚了。我在正确的轨道上添加了DISP_FUNCTION_ID宏到我的Dispatch映射中,但是我愚蠢地使用了VT_VOID而不是VT_EMPTY,这导致了运行时断言。

关于c++ - Microsoft Word连接点接收器示例/MFC出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30966739/

10-13 03:00