Возможный дубликат:
встраивание HWND во внешний процесс с помощью SetParent
Я пытаюсь встроить окно из моего процесса в окно внешнего процесса с помощью функции SetParent
и столкнулся с несколькими проблемами, с которыми я надеюсь, что кто-то может мне помочь. Во-первых, вот схема того, что я сейчас делаю, чтобы встроить свое окно в приложение:
WND myWindow; //Handle to my application window
HWND externalWindow; //Handle to external application window
SetParent(myWindow,externalWindow);
//Remove WS_POPUP style and add WS_CHILD style
DWORD style = GetWindowLong(myWindow,GWL_STYLE);
style = style & ~(WS_POPUP);
style = style | WS_CHILD;
SetWindowLong(myWindow,GWL_STYLE,style);
Этот код работает, и мое окно появляется в другом приложении, но вызывает следующие проблемы:
- Когда мое окно получает фокус ввода, главное окно приложения внешнего процесса теряет фокус (т. е. строка заголовка меняет цвет).
- Команды быстрого доступа основного приложения не работают, пока мое окно находится в фокусе.
Кто-нибудь знает обходные пути для этих проблем? Я хотел бы, чтобы мое окно рассматривалось как еще одно дочернее окно основного приложения.
Спасибо.