Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > Реализация чужого интерфейса


Автор: RastaDja 2.12.2010, 16:20
Здраствуйте!

Возникла задача такого типа:

В некой dll есть класс с 3-мя пользовательскими интерфейсами, среди которых есть интерфейс например IMyInterf. (dll создана VS2008)

Есть старый проект на VS6 который должен поддерживать IMyInterf.

Вопрос: как мне реализовать IMyInterf в старом проекте? Какие шаги мне надо сделать?

Спассибо

Автор: RastaDja 3.12.2010, 11:39
ладно я уже разобрался.

Автор: RastaDja 3.12.2010, 12:01
Может кто знает как реализовать IPersist в своём классе? а именно метод GetClassID?

Автор: xvr 3.12.2010, 13:34
Цитата(RastaDja @  3.12.2010,  12:01 Найти цитируемый пост)
Может кто знает как реализовать IPersist в своём классе?
Унаследоваться от IPersist, и не забыть добавить соотвествующий код в QueryInterface

Цитата(RastaDja @  3.12.2010,  12:01 Найти цитируемый пост)
а именно метод GetClassID? 
Вернуть CLSID своего класса, вопрос то в чем?


Автор: RastaDja 3.12.2010, 13:38
Цитата

Вернуть CLSID своего класса, вопрос то в чем?

как это сделать

Автор: RastaDja 3.12.2010, 14:14
Код

STDMETHOD(GetClassID)(struct _GUID * retGuid){
    *retGuid =                           // где лежит GUID, в каком файле, и что сюда писать
    return S_OK;
};


Коментарий в коде, ХЕЛП, спассибо

Автор: xvr 3.12.2010, 14:37
CLSID задается в *.idl файле (генерится wizard'ом автоматически). После midl оно лежит в файле *_i.c в виде CLSID_<You class name> завернутое в макрос
В качестве *.h файла подойдет *.h файл от midl

NB. Это все в проекте от VS6 (не от VS2008!)

Автор: RastaDja 3.12.2010, 14:44
тоесть я смогу сделать так?:
Код

STDMETHOD(GetClassID)(struct _GUID * retGuid){
    *retGuid =    CLSID_MyClass;
    return S_OK;
};


Добавлено через 1 минуту и 46 секунд
Да смог, код работает. Спассибо. Но я пока не закрываю тему

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)