Как создать анонимные функции IDispatch с ATL?

Есть ли простой способ создать класс, производный от IDispatch, и который можно передать в API следующим образом (это C++):

pDOM2->attachEvent(CComBSTR("event"), new DispatchFunction);

Я знаю, как создать объект C++, который обрабатывает вызов со значением 0, но всегда немного сложно реализовать все IDispatch вручную. Мне было интересно, если ATL имеет какой-то стандартный способ сделать это, как это довольно распространено.

1 ответ

Решение

По умолчанию ATL создает "двойные" COM-классы. Они поддерживают как раннее связывание, так и IDispatch. Вы увидите IDispatchImpl<> в их списке наследования. Вы объявляете показ в IDL. Никакой дополнительной работы не требуется.

Другие вопросы по тегам