Создать новую точку подключения в VC ++ 6? - PullRequest
3 голосов
/ 21 июля 2009

У меня есть проект 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 не отображается в списке существующих точек подключения.

Я перекомпилировал, включая очистку и восстановление всех.

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 августа 2009

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

[default, source] dispinterface _IBlahEvents; 
0 голосов
/ 21 июля 2009

У вас есть этот базовый класс добавлен?

  public IConnectionPointContainerImpl<CYOUR_CLASS_HERE>

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

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

...