Отправлять события COM без привязки спидов вручную к методам - PullRequest
3 голосов
/ 09 августа 2011

У меня есть IConnectionPointContainer и я знаю точку подключения, события которой я хочу потопить. Теперь мне нужно написать класс, содержащий методы обратного вызова для этих событий.

Так что в основном я делаю это:

OleCheck((ExtIntf as IConnectionPointContainer).FindConnectionPoint(IID_IEvents, cp));
OleCheck(cp.Advise(MySink {<--this one I need}, Cookie));

Мне нужно предоставить MySink, и я знаю, как это сделать, чтобы вызвать MyIntf.Invoke. Но я не хочу вручную отображать показы в методах событий.

Это означает, что я не хочу делать это в моем Invoke:

// Handle the event
case DispID of
  102   :  OnStatusTextChange(pdpParams^.rgvarg^[lpDispIds[0]].bstrval);
  104   :  OnDownloadComplete;
  105   :  OnCommandStateChange(pdpParams^.rgvarg^[lpDispIds[0]].lval,
                                pdpParams^.rgvarg^[lpDispIds[1]].vbool);
  106   :  OnDownloadBegin;
  108   :  OnProgressChange(pdpParams^.rgvarg^[lpDispIds[0]].lval,
                            pdpParams^.rgvarg^[lpDispIds[1]].lval);
  112   :  OnPropertyChange(pdpParams^.rgvarg^[lpDispIds[0]].bstrval);
  {... doh}

Для точки подключения IID_IEvents У меня есть и интерфейс IEvents, и объявление dispinterface (из импорта библиотеки типов Delphi). Разве я не могу просто реализовать IEvents? Мне нужен чистый класс, содержащий методы, каждый из которых является обратным вызовом для одного из событий, предлагаемых точкой соединения IID_IEvents.

Я очень надеюсь, что кто-то знает, может быть

  • базовый класс, от которого я могу наследовать, который требует вызова методов моего события
  • мастер Delphi, который создает для меня подходящий класс
  • дерево, из которого мне нужно сделать свою волшебную палочку, чтобы в конце концов освоить COM

Какие-нибудь советы?

1 Ответ

1 голос
/ 15 августа 2011

TechVanguards имеет инструмент, который генерирует код для вас: Генератор событий COM Sink .

Вы можете также посмотреть мой вопрос ; где я стонал от необходимости писать то, с чем сталкиваешься.

...