Показать сообщение отдельно
Старый 02.12.2004, 05:58   #17  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
Цитата:
Изначально опубликовано mazzy

Разве только IDispatch?
Пример - форма smmEncyclopedia.
Разве здесь не происходит раннее связывание?
[fig1]
Ну как сказать... В COM есть 2 вида раннего связывания, но я не думаю что какой нибудь из них используется в Аксапте...
С помощью утилиты OleView посмотрим что из себя представляет COM-объект smmDropWin.
Видно что у этого объекта 2 интерфейса, оба наследующих от IDispatch - один интерфейс - это собственно сами методы и свойства объекта, которые будут доступны из кода X++, а второй - это его события, на которые Аксапта может вешать свои обработчики. Интерфейс событий наз-ся так же как и основной интерфейс объекта с префиксом _.
И хотя в рассматриваемой нами библиотеке типов COM не показано что объект имеет еще какие то интерфейсы, но на самом деле он реализует еще несколько "низкоуровневых" (имеются ввиду не пронаследованные от IDispatch) интерфейсов типа IConnectionPointContainer, через которые собственно Аксапта и узнаёт какой из интерфейсов является интерфейсом событий, коннектится к нему в рантайме и вешает на него свои обработчики. К "раннему связыванию" в привычном для программирования COM-объектов смысле этот процесс отношения имеет мало.