Я пытаюсь встроить окно из моего процесса в окно внешнего процесса, используя функцию SetParent , и столкнулся с несколькими проблемами, с которыми, я надеюсь, кто-то может мне помочь. Прежде всего, вот схема того, что я сейчас делаю, чтобы встроить свое окно в приложение:
HWND 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);
Этот код работает, и мое окно появляется в другом приложении, но вызывает следующие проблемы:
- Когда мое окно получает фокус ввода, основное окно приложения внешнего процесса теряет фокус (то есть строка заголовка меняет цвет)
- Команды сочетания клавиш основного приложения не работают, когда мое окно имеет фокус
Кто-нибудь знает обходной путь для этого? Я хотел бы, чтобы мое окно рассматривалось как еще одно дочернее окно основного приложения.