Как мой элемент управления ActiveX может управлять печатью, сохранять как, находить и т. Д. В Internet Explorer? - PullRequest
4 голосов
/ 15 сентября 2009

У меня есть элемент управления ActiveX, который отображает документы определенного формата файлов в IE, так же, как у Adobe есть элемент управления ActiveX, который отображает PDF-файлы.

Мой элемент управления является полностраничным элементом управления, как и средство просмотра PDF - он охватывает всю клиентскую область IE, используя собственный механизм IE EnableFullPage .

Я бы хотел взять под контроль различные команды меню и панели инструментов, относящиеся к документу: «Печать», «Просмотр печати», «Настройка страницы», «Сохранить как», «Выбрать все», «Копировать», «Найти» и т. Д. Я предполагаю, что для этого должен быть официальный API, потому что это делает программа просмотра PDF. (Обратите внимание, что стандартные механизмы, например, для печати встроенных элементов управления ActiveX не применяются - мне нужно показать свой собственный диалог печати и контролировать весь процесс, как это делает программа просмотра PDF.)

(До IE8 я мог сделать это, используя подклассы Win32 для взлома самого IE, что неприятно, но работает. Но IE8 сохраняет содержимое вкладки в другом процессе, чем на панели инструментов, так что это не вариант без DLL и я вижу, что в Adobe PDF veiwer этого не происходит. Поэтому я считаю, что существует официальный механизм.)

Ответы [ 2 ]

2 голосов
/ 16 сентября 2009

Возможно, какой-то интерфейс связан с DocObjects , возможно, IOleInPlaceFrame + IOleCommandTarget

1 голос
/ 12 октября 2009

Вы можете использовать образец ActiveDoc в качестве основы для реализации активного сервера документов, как предложил Андерс. Добавление IOleCommandTarget, как он также отметил, дает вам контроль над пунктами меню.

...