代码之家  ›  专栏  ›  技术社区  ›  Rikker Serg

在标题区域(如Office2007/2010)上创建扩展的WPF窗口时出现问题

  •  1
  • Rikker Serg  · 技术社区  · 16 年前

    我想在标题区域(如Office2007/2010)扩展WPF窗口。我实现了dwmWindow(参见 DwmTest.zip )我把需要的东西放在哪里。一般来说,除了一件恶心的事情外,它工作得很好:窗口显示为白色矩形(参见 DwmIssue.png )几秒钟后,这个矩形消失,窗口的内容显示出来(参见 DwmIssueCorrect.png )这个bug只对我的窗口是必需的。如果我删除这行,它可以正常工作(没有它,Aero将不会显示在标题上):

    HwndSource mainWindowSrc = HwndSource.FromHwnd(handle);
    if (mainWindowSrc != null) mainWindowSrc.CompositionTarget.BackgroundColor = Colors.Transparent; 
    NativeMethods.MARGINS margins = new NativeMethods.MARGINS(0, 50, 0, 0);
    NativeMethods.DwmExtendFrameIntoClientArea(handle, margins);
    

    如何消除这个白色矩形?

    (运行样本 邮政编码 需要启用dwm和.NET 4.0的WinVista/7。要编译示例,您需要Visual Studio 2010)

    1 回复  |  直到 16 年前
        1
  •  1
  •   gehho    16 年前

    我对你的问题没有直接的解决办法,但你可能想看看 this blog post 我昨天读过。据我所知,它是关于所需功能的WPF包装框架,以便您可以在XAML中指定所有内容。我还没试过,但似乎是微软的人干的,所以他们可能知道怎么做…