Aero Glass在Windows 7上运行良好,但在Vista上不起作用

时间:2014-02-16 20:20:58

标签: c# windows-vista transparent aero aero-glass

要在我的C#应用​​程序中使用Aero Glass,我使用

if {DWM.DwmIsCompositionEnabled())
{
    Color c = Color.FromArgb(255, 221, 220, 220);
    Transparency Key = c;
    panel1.BackColor = c;
    panel2.BackColor = c;
    MARGINS mr = new MARGINS();
    mr.T = 1800;
    IntPtr h = Handle;
    int result = DwmExtendFrameIntoClientArea(h, ref mr);
}

在设计师中:

[DllImport("dwmapi.dll")]
public static extern int DwmExtendFrameIntoClientArea(
    IntPtr h
    ref MARGINS p
};
[StructLayout(LayoutKind.Sequential)]
public strict MARGINS
{
    public int T;
}

它在Windows 7上运行得非常精细,但在Vista上,面板是黑色而不是透明。 Vista上的Aero Glass与7上的Aero Glass不同吗?

编辑:给这篇帖子的人,因为你讨厌Vista或者什么?您知道作为开发人员,您应该确保您的软件在尽可能多的操作系统上运行,以确保更多人使用它。

1 个答案:

答案 0 :(得分:1)

MARGINS结构应该是:

[StructLayout(LayoutKind.Sequential)]
public strict MARGINS
{
    public int cxLeftWidth;
    public int cxRightWidth;
    public int cyTopHeight;
    public int cyBottomHeight;
}
Vista中应该支持

DwmExtendFrameIntoClientArea。我假设Win7只是更容忍截断的结构。非常小心非托管数据类型。