![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с DispInterface [D5, WinME]
Gari © (2002-07-02 13:45:00)Уважаемые господа, вопрос такой :
Каким образом можно создать тип родительским интерфейсом которого будет являтся DispInterface?
Gari (2002-07-02 15:50:00) [1]Сам себе постораюсь и ответить, а Вы посмотрите прав я или не прав, так что любую критику вомприму с благодарностью.
Хочу сделатьтак: так как нельзя создать прямого потомка DIspInterface то создадим свой интерфейс (MyInterface = interface(IDispatch)), с тем же GUID что и наш интерфейс, в него скопируем все методы, и уже от него будем создавать потомки.
Прав я или не прав?
Gari (2002-07-02 14:56:00) [2]Раз возник вопрос, опишу подробнее проблему. Есть библиотека в которой описан интерфейс типа DispInterface, в котором реализованы события происходящие с классами реализованными в данной библиотеке. Так вот мне надо реализовать обработку этих самых событий.
Shaman_Naydak (2002-07-02 14:52:00) [3]А ты можешь уточнить, что тебе надо:
Реализовать этот диспинтерфейс
или вызывать метод диспинтерфейса?
Это 2 абсолютно разные задачи
Gari (2002-07-02 14:49:00) [4]то то и оно что, второго интерфейса, не описпно, но каким то образом с этими методами можно работаь. Нутром чую.
vuk (2002-07-02 14:45:00) [5]Если У Вас есть automation object, то его методы можно вызывать и так, имея ссылку на него в переменной типа variant. Можно также достучаться до методов и не через dispinterface. Обычно при создании com-классов в Delphi генерируется два интерфейса:
ISomeInterface = interface(IDispatch)
...
и
ISomeInterfaceDisp = dispinterface
У них один и тот же GUID, то есть это два варианта работы с одним и тем же интерфейсом. Поэтому запросив интерфейс Вы можете работать с ним любым способом.
Gari (2002-07-02 14:31:00) [6]Я частично понял для чего нужен DispInterface, но хотел бы еще понять каким мне макаром можно достучатся до методов описанных в данном интерфейсе.
vuk (2002-07-02 14:28:00) [7]dispinterface содержит прототипы методов для вызова их через IDispatch.Invoke. Нужен же dispinterface для работы с Automation интерфейсами в runtime.
Gari (2002-07-02 14:13:00) [8]Тогда объясните мне каким образом можно использовать методы описанного интерфейса? И если нет то за каким чертом, этот интерфейс объявили?
vuk (2002-07-02 14:10:00) [9]Цитирую Help:
"... a class cannot implement a dispatch interface."