У меня есть 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
Какие-нибудь советы?