0

我正在使用 HwndHost 将另一个应用程序的窗口停靠在我的 WPF 窗口中。为此,我必须设置我正在停靠的窗口的 WS_CHILD 样式属性,并且我丢失了该窗口的系统菜单,这是不可接受的。使用 HwndHost 无法解决此问题,因为如果未设置该属性,它将引发异常。

我的问题是;

由于我的应用程序不使用系统菜单,有没有办法直接将停靠的应用程序的系统菜单复制到我的应用程序窗口?我知道的 WinAPI 菜单功能都需要我从头开始构建菜单,我不知道如何将这些菜单连接到托管应用程序中。

我不确定这是否重要,但两个窗口在同一个进程中。我的应用程序是我正在对接的应用程序窗口的插件。

4

1 回答 1

0

用于GetSystemMenu获取HMENU给定窗口的系统菜单。您应该能够交叉引用您自己窗口的系统菜单与停靠应用程序的系统菜单,复制您自己的窗口没有的任何内容,并通过处理和转发相关WM_SYSCOMMAND消息来转发它们。或者也许只是复制整个系统菜单并将它们全部转发。

这可能需要一些试验和错误才能使其全部工作(特别是如果停靠的应用程序不希望以这种方式使用......)但以上可能有助于开始。

于 2013-08-04T01:04:08.370 回答