SetParent导致我的WPF窗口变得不可见

时间:2015-07-20 06:46:22

标签: wpf windows hwnd

我正在WPF中编写一个程序,它会使Window显示在另一个进程中的特定Win32窗口之上。

到目前为止,这通常有效:

  1. 获取我想要叠加的窗口hWnd(目标)。
  2. 实例化我的叠加窗口(class Overlay : Window)并显示它(overlay.Show())。
  3. 致电SetWinEventHook了解LocationChangeDestroy事件的目标。
  4. SetWinEventHook LocationChange的回调中,我重新定位了我的Overlay实例以匹配目标窗口的矩形。
  5. 问题是我的Overlay实例出现在z轴的目标窗口后面。我可以通过设置Topmost = true来解决这个问题,但是我的窗口位于所有窗口的顶部,而不仅仅是目标。

    我尝试调用SetParent( new WindowInteropHelper( overlay ).Handle, targetWindowHandle )但是当发生这种情况时,我的覆盖窗口会消失。调用overlay.Show()无效。我也尝试使用SetWindowLongPtr(虽然MSDN说不要用GWL_HWNDPARENT来调用它)但无济于事。

    为什么SetParent使我的窗口不可见,以及确保我的窗口保持在另一个特定窗口之上的最佳方式(如果不是这样)是什么?

0 个答案:

没有答案