пользовательский интерфейс — c ++ win32 встраивает стороннее приложение

Я хочу открыть в своем главном окне стороннее приложение, например, офис или Adobe Reader.

Что-то вроде этого. Этот пример в окнах форм.
Встроенное приложение

Но я могу использовать только чистый с ++ с winapi. Является ли это возможным? Что я могу использовать для этого. Можете привести пример?

Спасибо

0

Решение

Вы можете сделать это, указав дескриптор окна (HWND) приложения, которое будет встроено. Затем вы можете переопределить это окно в окне хоста, используя SetParent Функция Window API. Описатели окна 32-битные, так что это будет работать даже между процессами 32/64 бит.

Однако следует обратить внимание на правильную отправку событий от хост-приложения во встроенное окно (например, при изменении размера или скрытии хоста, встроенное окно также должно быть изменено или скрыто). А также разместите встроенное окно внутри хоста.

Вот пример такого подхода

Это может нормально работать с блокнотом, но более сложные приложения могут проявлять странное поведение при повторном сопоставлении с другим окном процесса, но вы можете поэкспериментировать.

1

Другие решения