Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисование Ole объектов 
:(
    Опции темы
Leksey
Дата 26.8.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 12.12.2004

Репутация: нет
Всего: 1



Есть сервер-объект OLE и контейнер клиент.
Как в контейнере нарисовать представление объекта?
Никак не могу понять откуда извлекается интерфейс IViewObject в переменную член класса COleClientItem m_lpViewObject.
Что нужно изменить в сервере чтобы перегрузить метод этого интефейса Draw?
Может это как-то по-другому делаетя?
Мне говорят надо юзать COleCotrol, но я не пойму как его привязать к серверу.

PM MAIL   Вверх
JoyEx
Дата 29.8.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 1
Всего: 12



Обычно перед созданием окна (например, ActiveX'a) клиент через IOleObject:: SetClientSite() передает свой IOleInPlaceSite серверу ( коклассу ), ну и тебе остается токо IOleInPlaceSite::GetWindow() и т.п..


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Leksey
Дата 29.8.2005, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 12.12.2004

Репутация: нет
Всего: 1



Спасибо за ответ , но я не очень понял..
У меня сейчас такая проблема Контейнер должен получить представление объекта, но у объекта метод COleServerItem::OnDraw вызывается только один раз , а у меня после его вызова появляются диалоги настройки отображения объекта.(Насколько я понял в него передается контекст метафайла )
То есть можно ли как нибудь обновить этот метафайл?
Может я что-то не так понимаю?
И где вызывается COleServerItem::OnDraw?
Уже несколько дней не могу решить эту проблему... smile
PM MAIL   Вверх
JoyEx
Дата 30.8.2005, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 1
Всего: 12



Получи интерфейс IViewObject и обновляй окно:
Код

pViewObject->Draw (DVASPECT_CONTENT, -1,  NULL, NULL, NULL, pDC->m_hDC ,  (LPRECTL)&rect, NULL, NULL, NULL);




--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Leksey
Дата 30.8.2005, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 12.12.2004

Репутация: нет
Всего: 1



Этого мало.
Я посылаю серверу OLECMDID_PRINTPREVIEW в обработчике делаю NotifyChanged() lz СServerItem, вроде бы все заработало но...
Короче теперь другие проблемы.
PM MAIL   Вверх
JoyEx
Дата 31.8.2005, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 1
Всего: 12



Цитата(Leksey @ 26.8.2005, 14:04)
Никак не могу понять откуда извлекается интерфейс IViewObject в переменную член класса COleClientItem m_lpViewObject.


Обычно интерфейсы получают через IUnknown::QueryInterface()

Код

LPUNKNOWN pUnk;

...
...
IViewObject * pViewObject = NULL; 
pUnk->QueryInterface (IID_IViewObject, (void**) &pViewObject )



--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.