【问题标题】:Attaching a WPF window to the Desktop将 WPF 窗口附加到桌面
【发布时间】:2011-05-29 23:31:39
【问题描述】:

我创建了一个没有 chrome 和透明背景的 WPF 应用程序

WindowStyle="None" AllowsTransparency="True"

IntPtr windowHandle = new WindowInteropHelper(window).Handle;
IntPtr oldParent = SetParent(windowHandle, desktopHandle);

但每当我尝试将此窗口设置为桌面进程的子进程(这样它就不会受到“显示桌面”命令的影响),它会停止绘图。如果我将 AllowsTransparency 改回 False,它会按预期工作,但是我确实希望它是透明的并且没有边框。

任何人都可以就如何使这项工作正常工作给我任何建议吗?我可以通过在 Winforms 应用程序中使用相同的方法来实现它。

【问题讨论】:

    标签: wpf windows-desktop-gadgets


    【解决方案1】:

    我怀疑它适用于 Winforms 而不是 WPF 的原因是 Winforms 使用 GDI 进行渲染,而 WPF 使用 DirectX。这些技术存在互操作性问题,此处更详细地介绍了这些技术,特别是在名为“透明度和顶级 Windows”的部分中。

    http://msdn.microsoft.com/en-us/library/aa970688.aspx

    您可以通过在 Win32 窗口中托管 WPF 视觉对象来解决此问题,如下所述:

    http://msdn.microsoft.com/en-us/library/ms742522.aspx#hosting_a_wpf_page

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多