ATL підручник демонструє, як створити елемент керування з підтримкою для підключення точок, як додати події а потім як здійснювати підключення poi&nt.nbsp; IConnectionPointImpl обговорює, як ATL реалізує точка підключення.
Для здійснення точку з'єднання, ви маєте дві можливості:
Реалізувати свій власний out-going джерело події (точка підключення).
Повторне використання інтерфейсу точка підключення визначено в інший тип бібліотеки.
У будь-якому випадку майстер точки підключення використовує бібліотеку типів робити свою роботу.
Примітка Під час додавання метод до dispinterface, на яких ви вже реалізували точку з'єднання, ви повинні переконфігурувати .idl файл і виконайте процедуру, щоб додати точку підключення до елемента керування або об'єкта.
Щоб додати точку підключення до елемента керування або об'єкта
Визначити dispinterface в блок бібліотеки .idl файл. Якщо встановлено прапорець Підтримки точки з'єднання на вкладці атрибути об'єкта ATL майстра, на dispinterface буде вже створено. Якщо ви не перевірити прапорець Підтримки точки з'єднання , слід додавати вручну dispinterface до файлу .idl. Нижче наведено приклад з dispinterface. Вихідні інтерфейси не зобов'язаний бути відправлення інтерфейсів, але багато мови сценаріїв, таких як VBScript та JavaScript вимагають цього, так що цей приклад використовує дві dispinterfaces:
бібліотека DProjLib { importlib("stdole32.TLB"); importlib("stdole2.TLB");[uuid(57BC50F0-780B-11d1-8C44-0060083E866C),helpstring ("Buddy подій»)]dispinterface DBuddyEvents{Властивості:методи:};
Використовувати uuidgen.exe або guidgen.exe утиліти для генерації GUID.
Додати dispi&nterface як [за замовчуванням, джерело] інтерфейсу у coclass для object.nbsp; Знову ж таки, якщо встановити прапорець на Підтримку точки з'єднання на вкладці атрибути цього елемента керування майстра ATL об'єкт, майстер створить [за замовчуванням, джерело] запис. Щоб додати цей запис вручну, додайте рядок жирним шрифтом:
Перегляньте у файлі .idl в Circ ATL зразком для прикладу.
Додати методи і властивості події інтерфейсу за допомогою ClassView.
Після того, як на dispi&nterface повністю визначені, скомпілювати .idl файл правою кнопкою миші FileView , файл .idl та вибравши компіляції option.nbsp; Це дозволить виробляти бібліотеки типів.
Клацніть правою кнопкою миші класу у ClassView і виберіть Реалізувати точка підключення.... У діалоговому вікні буде відображено один або більше вкладок типу бібліотеки та кожній вкладці буде відображатися інтерфейсів для цього типу library. Якщо вибрати інтерфейс і натисніть кнопку OK, вам буде:
Створити файл з проксі клас подій, що реалізує коду, який буде дзвонити в out-going для події.
Додати запис до карти точки підключення.
Додати коментар і #error (кажу вам замінити параметром NULL адресу в dispID) в список параметрів IProvideClassInfo2Impl.
Якщо ви не побудували типу бібліотеки, ви побачите список всіх typelibs на ваш computer. Ви повинні використовувати тільки один з цих інших typelibs визначити вашу точку з'єднання, якщо потрібно реалізувати точне ж вихідних інтерфейс в іншому typelib. Якщо ви будуєте typelib з немає за замовчуванням джерелом інтерфейсу у на coclass, діалогове вікно буде відображено попередження повідомлення про ні підходить (джерело) інтерфейсу типу бібліотеки.
Для здійснення точка підключення з іншого об'єкта типу бібліотеки
У ClassViewклацніть правою кнопкою миші на клас, який реалізує BEGIN_COM_MAP макрос і виберіть точка підключення здійснювати з контекстне меню.
У діалоговому вікні Реалізувати точка підключення натисніть кнопку Додати Typelib....
Виберіть одну з доступних тип libraries. Після вибору типу бібліотеки, ви побачите список доступних інтерфейсів в бібліотеку типів.
Виберіть один або декілька доступних інтерфейсів та натисніть OK.
Редагування файлу .idl на будь-який:
Копіювати до dispinterface з idl файлів для об'єкта, що використовує якого джерело події.
Використання інструкцію, importlib типу бібліотеки.
Ось приклад з .idl файлу, що використовує точку з'єднання з керування Circ.