Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: аналог theApp в ActiveX  (Прочитано 38464 раз)
0 Пользователей и 1 Гость смотрят эту тему.
yudjin
Помогающий

ua
Offline Offline
Пол: Мужской

« : 28-05-2010 07:50 » 

Как получить доступ к главному объекту ActiveX (или как он завется?) из других классов? В оконных приложениях было че-то вроде глобальной переменной theApp. Есть мысля - создать статический метод, возвращающий указатель на уже рабочий "себя", но она не очень нравиться
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 29-05-2010 10:15 » 

yudjin, что ыт называешь "главным объектом"?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
yudjin
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #2 : 31-05-2010 06:52 » 

Эмм... Как бы так объяснить. В общем, сначала я писал и тестил "проект" на MFC (мне так было проще - параллельно знакомился с С++), и в ряде случаев я использовал глобальную переменную theApp, так как в этом классе были нити на другие классы. Если кароче - из какого-то класса с помощью theApp я мог достучаться до любого другого объекта.
Сейчас переношу логику на ActiveX-компоненту, и возникли трудности. Возможно, мой подход не верен изначально, но как тогда из пользовательского класса получить доступ к, скажем, документу или вьюхе? Если такой подход приемлем - то как тогда из пользовательского класса получить доступ к ATL Control'у? Заводить в пользовательском классе поле для хранения в нем указателя на компоненту - мне кажется, это плохой вариант.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 31-05-2010 13:21 » 

Твоя COM-программа ничего не знает о программе, которая будет ее использовать. Как ты будешь ею управлять?
Нужно чтобы программа, создающая COM-объект, передала твоей программе указатель на некий искомый объект внутри себя. И при сборке твоя программ и та должны использовать одни и те же (той же версии) заголовочные файлы.

Не мешает знать, что COM-программы бывают внутри- и внепроцессными (отдельный процесс, который может даже быть на другом хосте). Во втором случае точно никак нельзя. В первом случае - основная программа должна как-то поделиться указателем на нужный тебе объект.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
yudjin
Помогающий

ua
Offline Offline
Пол: Мужской

« Ответ #4 : 01-06-2010 05:48 » 

не-не-не, немного не так... Моя COM-программа не будет управлять приложением, ее вызывающим.
Вот мой сценарий:
Создал АТЛ проект;
Добавил класс АТЛ-контрол (визуальная компонента, далее ВК);
Добавил еще кучу пользовательских классов;
ВК создает объекты независимых классов А,Б,Ц;
Как объекту А обратиться к объекту Б? В МФС проекте объект А обращался к theApp (там хранятся основные указатели), отдута обращался к документу, запрашивал нужную вьюху, хранящую объект Б, и уже потом работал с объектом Б... Как-то так. Т.е. в приведенном выше сценарии через глобальную переменную theApp можно было выйти на созданные объекты и с ними работать.
Что же происходит у меня при создании ActiveX:
в ВК я создаю объекты независимых классов А,Б,Ц;
Как объекту А выйти на объект Б?

Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines