Проблема с примером приемника точки подключения Microsoft Word / MFC

Я пытался реализовать приемник точки подключения для стороннего компонента COM, используя MFC. Я уже разрабатывал некоторые COM-компоненты, хотя я не очень хорошо разбираюсь в приемниках точек подключения. После того, как я некоторое время ударился головой о стену, я решил вернуться к основам и нашел пример Microsoft:

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

Это казалось наиболее похожим на то, что я пытаюсь сделать. Я попытался воспроизвести пример точно так, как описано. Хотя моя версия MS Word — 2010, упомянутые интерфейсы все еще кажутся действительными. Я покорно следовал инструкциям, буквально вырезая и вставляя код в свой собственный проект, и мне нужно было только внести изменения в строки широких символов. После компиляции я могу запустить приложение word и выйти из него, но я не получаю события точки подключения, которые, в конце концов, и составляли весь смысл. Я подумал, что, возможно, проблема была в показе функции, поэтому я попытался добавить записи DISP_FUNCTION_ID в карту отгрузки; но это просто приводит к утверждению в строке 549 oledisp1.ccp, которая оказывается в функции CCmdTarget :: GetStackSize.

Я уверен, что это глупо просто, но я просто не могу заставить его работать. Может кто-нибудь помочь мне разобраться, чего не хватает в примере? Благодарю.

1

Решение

Догадаться. Я был на правильном пути, добавляя макросы DISP_FUNCTION_ID в свою карту Dispatch, однако я тупо использовал VT_VOID вместо VT_EMPTY, что вызвало утверждение во время выполнения.

1

Другие решения