2010-04-06 3 views
0

Есть ли способ каким-то образом внедрить приложение для удаления WTL в ATL ActiveX (т.е. расширение)?Вставить приложение WTL в элемент управления ATL ActiveX

Я пытаюсь создать элемент управления ActiveX с помощью средства просмотра файлов Office. В качестве базы у меня есть настольное приложение WTL (написанное некоторое время назад), которое использует OOo v3 API для отображения документов.

  • Я создал проект ActiveX, связал необходимые библиотеки и включил.
  • Я могу назвать методы WTL и OO Api.
  • Некоторые свойства и методы были добавлены в соответствии с требованиями приложения-хозяина.
  • Мои ActiveX правильно показано то есть и хост-приложения

И вот мое счастье (и знания?) Закончилась.

У меня есть свойство m_hwnd, но оно всегда равно 0; Я Googled немного, и обнаружил, что я могу получить родительский HWND с

this->m_spInPlaceSite->GetWindow() 

, но это не работает, либо. Каждый раз, когда я хочу создать оконную рабочую среду, заканчивается методом IsWindow() (вызванным из ATL lib) с родителем == null

Чтобы создать и показать OOo :: DocWindow, мне нужно HWND родительского окна.

И здесь идет вопрос:

Могу ли я как-то встроить приложение WTL окна на основе в ActiveX, т.е. расширение?
Можно ли без повторной записи всего OOo Api обертка?

ответ

1

Да, вы можете.

шаги с мастером VS:

  1. Создание ATL проекта
  2. Добавить Control АТЛ, основываясь на некоторых управления (кнопки, например). В этом случае у вас будет карта сообщений с некоторыми обработчиками.

Затем замените элемент CContainedWindow на свое собственное окно, и это все.

ATL Samples page, я не проверял его, но надеюсь, что это поможет.

+0

Он по-прежнему показывает некоторую ошибку при преобразовании карт сообщений во время компиляции, но теперь я хочу посмотреть, что искать. Благодаря! – beermann

Смежные вопросы