Tag: hwndhost

在WPF窗口中托pipe外部应用程序

我们正在WPF中开发一个布局pipe理器,该布局pipe理器具有可由用户移动/resize等的视口。 视图通常由布局pipe理器中的我们控制的提供者填充数据(图片/电影/等)。 我的工作是检查是否也有可能在视口中托pipe任何外部Windows应用程序(即记事本,计算器,Adobe阅读器等)。 我遇到了一些问题。 大多数资源指向使用HwndHost类。 我正在尝试从Microsoft本身的演练: http : //msdn.microsoft.com/en-us/library/ms752055.aspx 我已经适应了这个,所以列表框被外部应用程序的窗口句柄所取代。 有谁能帮我解决这些问题: 演练添加了一个额外的静态子窗口,其中放置了ListBox 。 我不认为我需要外部应用程序。 如果我省略了,我必须将外部应用程序设置为子窗口(使用user32.dll中的Get / SetWindowLong将GWL_STYLE设置为WS_CHILD )。 但是,如果我这样做,该应用程序的菜单栏消失(因为WS_CHILD风格),它不再接收input。 如果我使用子窗口,并使外部应用程序的一个孩子的东西合理的工作,但有时外部应用程序不画好。 另外,我需要子窗口调整到视口。 这可能吗? 当外部的应用程序产生一个子窗口(即记事本 – >帮助 – >关于),这个窗口不是由HwndHost托pipe(因此可以移动到视口外)。 有什么办法可以预防吗? 由于我不需要外部应用程序和布局pipe理器之间的进一步交互,我是否认为我不需要捕获和转发消息? (演练将HwndSourceHook添加到子窗口中,以捕获列表框中的select更改)。 当你运行(未修改的)例子VS2010并closures窗口时,VS2010没有看到程序结束。 如果你打破了一切,你最终会在没有源代码的情况下进行汇编。 有些臭味正在发生,但我找不到。 演练本身似乎是非常草率的编码,但我还没有find关于这个问题的更好的文档。 任何其他的例子? 另一种方法是不要使用HwndHost而是像这里讨论的WindowsFormHost 。 它工作(而且更简单!),但我不能控制应用程序的大小? 另外,WinFormHost是不是真的是这个意思? 感谢任何正确的方向指针。