Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > получение ссылки на интерфейс обьекта |
Автор: RastaDja 3.11.2010, 11:50 |
Здраствуйте. есть такая задача: у нас есть COM интерфейс TreeLib.TreeMap, который реализует сохранение данных в карте map<CComBSTR, CComVariant> m_varMap; в качестве данных можэт быть любая Варыант переменная. предполагается, что в данные можно добавить и другой TreeLib.TreeMap обьект. Таким образом будет строится дерево. Вопрос: Как получить ссылку на Парент обект, и как эту ссылку хранить. Спасибо |
Автор: xvr 3.11.2010, 12:02 |
В COM'е нет встроенного понятия parent'а (есть агрегация, но это не то). Так что parent'а придется приделывать руками (как и любую другую проперть в AcitveX или метод в голом COM'е), и устанавливать так же вручную. В принципе, если объект именно ActiveX (т.е. унаследован от IDispatch), ему можно принудительно прописать проперть Parent (если таковая у него найдется). Делать это при вставке объекта в m_varMap |
Автор: RastaDja 3.11.2010, 12:14 | ||||
в качестве _parent использую IDispatch* но ничего не получается. как вытенуть ссылку на и IDispatch* из map<CComBSTR, CComVariant> m_varMaр или правельнее CTreeClassMap* _parent; но тогда как получить CTreeClassMap? Добавлено через 2 минуты и 21 секунду
такой код не работает ![]() |
Автор: RastaDja 3.11.2010, 12:51 | ||
GetDispID("Paren"); у меня нет такой ф-ии ![]() Добавлено через 1 минуту и 42 секунды извеняюс GetIDsOfMames |
Автор: RastaDja 3.11.2010, 13:09 | ||||
получаю ошибку error C2594: 'type cast' : ambiguous conversions from 'class CTreeClassMap *const ' to 'struct IDispatch *' у меня VS6 Добавлено через 12 минут и 11 секунд
так ошибок не выдаёт ![]() ща буду пробовать как работает |
Автор: xvr 3.11.2010, 13:34 | ||||||
2й вариант немного перебор, достаточно сделать
PS. Не забудьте добавить в свой класс реализацию проперти 'ParentFF' PPS. Тут тоже ошибка:
|
Автор: RastaDja 3.11.2010, 14:00 | ||||
я так делал, но тут ошибка преобразования Добавлено через 4 минуты и 53 секунды
делаю так, но программа вылетает |
Автор: xvr 3.11.2010, 16:16 | ||||||||||||
Не должно. Букву 'L' перед строкой не забыли?
Кроме того, пригляделся к коду, там еще ошибка:
|
Автор: RastaDja 3.11.2010, 17:05 | ||||||
спасибо за помощь, я нашол решение. Клас
Add функция
Property
ещё раз большое спасибо ![]() но я ещё на 100% не уверен в правельной работе кода Добавлено через 1 минуту и 25 секунд З.Ы поэтому тему не закрываю |
Автор: xvr 3.11.2010, 19:38 |
Вроде все правильно |