![]() |
|
![]() ![]() ![]() |
|
NightWishMaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 14.4.2006 Репутация: нет Всего: нет |
Доброе время суток!
Когда то давно помню читал где-то, как можно встроить приложение Word в свое приложение таким образом, чтобы Word открывался не отдельным окном-приложением, а загружался бы в заданном объекте (только какой это объект?) своего приложения. Но сейчас уже все забыл ![]() Заранее благодарен за советы. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Word может быть загружен как ActiveX control. Соотвественно твое приложение должно быть ActiveX контейнером. |
|||
|
||||
NightWishMaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 14.4.2006 Репутация: нет Всего: нет |
А поподробнее можно? ![]() |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Поподробнее будет книга, страниц так на 1000 ![]() Вот, нашел еще статью: Notes on Implementing an OLE Control Container Это сообщение отредактировал(а) xvr - 26.6.2008, 20:48 |
||||
|
|||||
NightWishMaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 14.4.2006 Репутация: нет Всего: нет |
OLEContainer’ом пока не доволен по следующим причинам:
1) меню Ворда интегрируется в меню приложения. Я хотел бы, чтобы меню Ворда оставалось «при нем» и не создавало лишний «ажиотаж» в меню приложения 2) при щелчке мышью на другом компоненте не могу вернуть фокус назад в Ворд; 3) не знаю, как получить указатель на созданный в ОЛЕ контейнере ворд, чтобы управлять им (например, создать там какой-либо текст). Я создал простенький проект, на котором можно при желании ознакомиться с объектом моего недовольства Есть главная форма MainForm, в которой можно создавать дочерние формы ChildForm с ОЛЕ контейнером. В конструкторе дочерней формы в ОЛЕ контейнер загружается Ворд. В главной форме есть меню, в которое сразу «залазит» непрошенное меню Ворда При нажатии на Button1 в дочерней форме вернуть фокус клацаньем на Ворд мне не удается. Так же не знаю, как получить указатель на Ворд в конкретном дочернем окне. Кто-нибудь знает, как бороться с такими «недостатками»? Или может быть есть какой-нибудь другой, более продвинутый способ интеграции Ворда? В таком случае буду благодарен за пример. Присоединённый файл ( Кол-во скачиваний: 28 ) ![]() |
|||
|
||||
xvr |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Это фича OLE2. Как отключить не помню - надо изучать MSDN
Это сообщение отредактировал(а) xvr - 22.7.2008, 11:06 |
||||||||
|
|||||||||
NightWishMaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 14.4.2006 Репутация: нет Всего: нет |
Мышью назад не возвращается, TabStop у TOleContainer стоит в true. После потери фокуса Ворд становиться неактивным и потом сколько я в него не тыкаю, фокус назад не возвращается. Единственный вариант - расширить ОЛЕ контейнер и ткнуть не на ворд, а непосредственно на сам контейнер - тогда фокус возвращается. Тыканье же на ворд не удается отследить ни в каком обработчике :-\ Можно в этом при желании убедиться в прикрепленном мной тренировочном проекте (C++ Builder 6). Спасибо, как получить указатель уже разобрался. На сколько я знаю, они позволяют запускать и работать с Вордом как с отдельным приложением, а не встраивать его в свою прогу. Или я ошибаюсь? Я вот тут подумал - может мне Оле Контейнер и не нужен то вовсе. ОЛЕ это что? Внедрение и связывание. А мне то ничего такого и не надо ведь - ничего внедрять и тем более связывать. Все что мне надо - это открыть в заданной панельке формы окно МС Ворда, которое должно себя вести один в один, как и обычный ворд, просто быть развернутым в пределах другого окна, а не быть отдельным окном. На сколько понимаю, это не то внедрение, в каком его обычно понимают (когда отдельный объект одного приложения содержится в объекте другого приложения). Может можна как-нить присвоить запущеному Ворду родительское окно через SetParent, развернув его там по максимуму? Или может быть можно как нибудь задать дескриптор окна для Ворда? Чтобы указать, что его окно - это окно соответсвтующей панельки? Надеюсь, я тут не слишком много нафантазировал? ![]() |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Там несколько вариантов, один из них (WordDocument) именн то, что нужно
|
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |