Создать новую точку подключения в VC ++ 6?

У меня есть проект ATL / COM на VC ++ 6. Я хочу, чтобы существующий класс, который никогда раньше не определялся для срабатывания событий, для срабатывания событий. Для этого классу нужно будет реализовать «точку подключения».

Эти события относятся к типу, который ранее не создавался ни одним классом, поэтому мне придется создать новую точку подключения, а не повторно использовать существующую.

Я знаю, как заставить класс реализовать точку подключения - щелкните правой кнопкой мыши класс в представлении классов, выберите «реализовать точку подключения» и выберите соответствующую точку подключения из отображаемого списка.

Я знаю, как создать новую точку подключения, если она связана с новым классом ATL для ее реализации - отметьте «Поддержка точек подключения» при создании класса.

Но я не могу понять, как создать новую точку подключения без создания нового класса ATL, который ее реализует.

Я изменил IDL, включив в него что-то похожее на определения существующих точек подключения:

[
    uuid(*blah blah blah*),
    helpstring("_IBlahEvents Interface")
]
dispinterface _IBlahEvents
{
    properties:
    methods:
    [id(1), helpstring("method BlahChanged")] HRESULT BlahChanged();
};

(Очевидно, у меня настоящий uuid, а не «бла-бла-бла»).

После этого интерфейс _IBlahEvents отображается в представлении классов. Но когда я щелкаю правой кнопкой мыши класс ATL, который хочу реализовать _IBlahEvents, и выбираю «Реализовать точку подключения», _IBlahEvents не отображается в списке существующих точек подключения.

Перекомпилировал, включая чистку и пересборку всего.

Что мне не хватает?

Спасибо.


person Community    schedule 21.07.2009    source источник


Ответы (2)


Вы добавили этот базовый класс?

  public IConnectionPointContainerImpl<CYOUR_CLASS_HERE>

Если это не так, создайте новый проект с нуля, который соответствует этому, за исключением того, что установите флажок «Поддержка точек подключения».

Обязательно используйте одинаковые имена. Затем сравните это с исходным проектом, чтобы увидеть, чего не хватает.

person Lou Franco    schedule 21.07.2009

Если вы вручную изменили файл IDL - вам также следует сделать этот шаг вручную. То есть - в кокласс добавить следующее:

[default, source] dispinterface _IBlahEvents; 
person da_m_n    schedule 01.08.2009