WinAPI Копировать системное меню в новое окно
Я закрепляю окно другого приложения внутри моего окна WPF, используя HwndHost. Чтобы сделать это, я должен установить атрибут стиля WS_CHILD окна, которое я закрепляю, и я теряю системное меню этого окна, что недопустимо. Использование HwndHost не позволяет обойти это, так как он выдаст исключения, если этот атрибут не установлен.
Мой вопрос
Поскольку мое приложение не использует системное меню, есть ли способ напрямую скопировать системное меню закрепленного приложения в окно моего приложения? Все функции меню WinAPI, о которых я знаю, потребуют от меня создания меню с нуля, и я не знаю, как подключить это меню к размещенному приложению.
Я не уверен, имеет ли это значение, но два окна находятся в одном процессе. Мое приложение является плагином окна приложения, которое я закрепляю.
1 ответ
Использование GetSystemMenu
чтобы получить HMENU
для системного меню для данного окна. Вы должны иметь возможность сопоставить системное меню вашего собственного окна с системным меню закрепленного приложения, скопировать любое, чего нет в вашем собственном окне, и переслать их, обрабатывая и пересылая соответствующие WM_SYSCOMMAND
Сообщения. Или, может быть, просто скопируйте все системное меню и перешлите их все.
Это, вероятно, потребует небольшого количества проб и ошибок, чтобы заставить все это работать (особенно если закрепленное приложение не ожидает, что будет использоваться таким образом...), но вышеприведенное может помочь начать работу.