Помогите плз... по ATL, а может просто ООП
От: He3HauKa Россия  
Дата: 29.04.06 16:06
Оценка:
Добрый день.

Такая проблема:
Есть класс(имплементация COM интерфеиса на ATL)в котором используется некая структура .
Мне нужно для нормальной работы получить доступ к этой структуре из другого класса(также являющегося реализацией другого интерфейса этого же COM объекта).
Описатть эту структуру в IDL не могу тк не знаю что там вообще такое — она из библиотеки стороннего разработчика, да и не желательно её "выставлять на показ".
PS.Я совсем уже запарился под конец рабочего дня — ничего в голову не лезет... помогите плз чем сможете...
Re: Помогите плз... по ATL, а может просто ООП
От: He3HauKa Россия  
Дата: 29.04.06 16:11
Оценка:
Здравствуйте, He3HauKa, Вы писали:

Да, и еще одно — у второго класса есть только указатель на интерфейс первого(так необходимо, тк связи меняются динамически в клиентском приложении).

Буду очень благодарен.
Re[2]: Помогите плз... по ATL, а может просто ООП
От: shurik.  
Дата: 05.05.06 06:34
Оценка:
Здравствуйте, He3HauKa, Вы писали:

HHK>Здравствуйте, He3HauKa, Вы писали:


HHK>Да, и еще одно — у второго класса есть только указатель на интерфейс первого(так необходимо, тк связи меняются динамически в клиентском приложении).


HHK>Буду очень благодарен.


а почему бы не сделать указатель не на интерфейс а на имплементацию класса1?
Re[3]: Помогите плз... по ATL, а может просто ООП
От: Незнайчище Россия  
Дата: 15.05.06 16:05
Оценка:
Здравствуйте, shurik., Вы писали:

S>а почему бы не сделать указатель не на интерфейс а на имплементацию класса1?


Ну задумка была такая — несколько ActiveX объектов. Для полной функциональности им необходимо было иметь указатели друг на друга, причем связи эти можно было б изменять к примеру и в Java Script, вот в этом и была проблема т.к. там только и можно было присвоить указатель на интерфейс(наверно непонятно разъясняю). Вот. А классы уже сами должны были обращаться к свойствам и методам не описанным в IDL(т.е. не входящими в интерфейс — такая себе защита от дурака).

Вот такая каша.

На данном этапе от этой концепции отказались, хотя найти решение такой задачки я был бы не против .

P.S. Ну если не зацикливаться на ООП то можно создать глобальный SAFEARRAY или STL массив указателей, но как-то некрасиво . Вот я и отписался на этот форум для поиска более красивого решения .

Спасибо.
Андрей.
Re[4]: Помогите плз... по ATL, а может просто ООП
От: George Seryakov Россия  
Дата: 15.05.06 19:17
Оценка:
Здравствуйте, Незнайчище, Вы писали:

Н>Ну задумка была такая — несколько ActiveX объектов. Для полной функциональности им необходимо было иметь указатели друг на друга, причем связи эти можно было б изменять к примеру и в Java Script, вот в этом и была проблема т.к. там только и можно было присвоить указатель на интерфейс(наверно непонятно разъясняю). Вот. А классы уже сами должны были обращаться к свойствам и методам не описанным в IDL(т.е. не входящими в интерфейс — такая себе защита от дурака).


Если твои связанные объекты не находятся в одном процессе, то между процессами ты можешь передать только то, что описал в IDL. Это если ты хочешь использовать автоматизационный маршаллинг через библиотеку типов (что по дефолту) и не хочешь писать сам маршаллящий код. Если разговор идет о JavaScript то typelib-маршаллинг это единственный вариант.

Если твои объекты в одном процессе (заметь, я не сказал в одном пространстве имен С++), то можно использовать что-то вроде http://rsdn.ru/Forum/Message.aspx?mid=1656765&pg=1
Автор: George Seryakov
Дата: 02.02.06
.

Н>Вот такая каша.


Это нормально.

Н>Андрей.
GS
Re: Помогите плз... по ATL, а может просто ООП
От: TarasKo Голландия  
Дата: 17.05.06 02:06
Оценка:
Здравствуйте, He3HauKa, Вы писали:

HHK>Добрый день.


HHK>Такая проблема:

HHK>Есть класс(имплементация COM интерфеиса на ATL)в котором используется некая структура .
HHK>Мне нужно для нормальной работы получить доступ к этой структуре из другого класса(также являющегося реализацией другого интерфейса этого же COM объекта).
HHK>Описатть эту структуру в IDL не могу тк не знаю что там вообще такое — она из библиотеки стороннего разработчика, да и не желательно её "выставлять на показ".
HHK>PS.Я совсем уже запарился под конец рабочего дня — ничего в голову не лезет... помогите плз чем сможете...

То есть тебе надо передавать эту структуру между интерфейсами, но ты не знаешь что в ней. А вся твоя система функционирует в едином процессе? Если да то проще всего в IDL методе написать, что он принимает допустим void* и передавать там указатель на эту структуру. Если у тебя внепроцессный COM-сервер, то тогда не знаю всё зависит от того что в этой структуре.

Кстати еслим хочешь описывать в IDL структуры, интерфейсы и прочее невидимые при импорте tlb используй атрибуты hidden и restricted.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.