2014-02-16 65 views
1
不起作用

要在我的C#應用​​程序中使用的Aero Glass我用Aero玻璃工作正常的Windows 7,但在Vista

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不同?

編輯:給誰-1這篇文章的人,因爲你討厭Vista還是什麼?作爲一名開發人員,您應該確保您的軟件在儘可能多的操作系統上運行,以確保更多人使用它。

+0

Vista上的其他窗口(例如記事本或資源管理器)顯示正常嗎?另一件事:我是否安全地假設你正在使用Windows窗體? –

+0

是的,它們顯示正常。我正在使用Windows窗體,請更正。 – CCCP

+0

有誰知道解決方案? – CCCP

回答

1

邊緣結構應該是:

[StructLayout(LayoutKind.Sequential)] 
public strict MARGINS 
{ 
    public int cxLeftWidth; 
    public int cxRightWidth; 
    public int cyTopHeight; 
    public int cyBottomHeight; 
} 

DwmExtendFrameIntoClientArea應該在Vista的支持。我假設Win7只是更容忍截斷的結構。對非託管數據類型非常小心。

+0

仍然不起作用。 – CCCP

+0

你能給更多的上下文嗎?你有什麼嘗試,你如何設置有問題的窗口? –

+0

我添加了你給我的代碼,並在Vista上調試我的應用程序。它仍然有黑色而不是透明面板。 – CCCP