Реализация сдвоенного интерфейса
Вы можете реализовать двойной интерфейс с помощью класса IDispatchImpl , который обеспечивает реализацию IDispatch
методов по умолчанию в двойном интерфейсе. Дополнительные сведения см. в разделе Implementing the IDispatch Interface.
Чтобы использовать этот класс, выполните указанные ниже действия.
Определите двойной интерфейс в библиотеке типов.
Наследуйте класс из специализации
IDispatchImpl
(передайте сведения об интерфейсе и библиотеке типов в качестве аргументов шаблона).Добавьте запись (или записи) на карту COM, чтобы предоставить двойной интерфейс через
QueryInterface
.Реализуйте виртуальную часть интерфейса в классе.
Убедитесь, что библиотека типов, содержащая определение интерфейса, доступна для объектов во время выполнения.
Мастер простых объектов ATL
Если вы хотите создать интерфейс и новый класс для его реализации, можно использовать диалоговое окно добавления класса ATL, а затем мастер простого объекта ATL.
Мастер реализации интерфейсов
Если у вас есть существующий интерфейс, вы можете использовать мастер реализации интерфейса для добавления необходимых базовых классов, записей карты COM и реализации методов скелета в существующий класс.
Примечание.
Возможно, потребуется настроить созданный базовый класс, чтобы основной и дополнительный номера версий библиотеки типов передаются в качестве аргументов шаблона в IDispatchImpl
базовый класс. Мастер реализации интерфейса не проверяет номер версии библиотеки типов.
Реализация IDispatch
Базовый класс можно использовать IDispatchImpl
для предоставления реализации dispinterface только путем указания соответствующей записи на карте COM (с помощью макроса COM_INTERFACE_ENTRY2 или COM_INTERFACE_ENTRY_IID), если у вас есть библиотека типов, описывающая соответствующий двойной интерфейс. Это довольно распространено для реализации IDispatch
интерфейса таким образом, например. Мастер простых объектов ATL и мастер реализации интерфейса предполагает, что планируется реализовать IDispatch
таким образом, поэтому они будут добавлять соответствующую запись в карту.
Примечание.
ATL предлагает классы IDispEventImpl и IDispEventSimpleImpl , которые помогут вам реализовать дисплеи, не требуя библиотеки типов, содержащей определение совместимого двойного интерфейса.