Aero Glass отлично работает в Windows 7, но не работает в Vista.

Чтобы использовать Aero Glass в моем приложении C #, я использую

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 панели черные, а не прозрачные. Aero Glass на Vista отличается от такового на 7?

Изменить: человеку, который -1 этот пост, потому что вы ненавидите Vista или что? Вы, как разработчик, должны убедиться, что ваше программное обеспечение работает на как можно большем количестве операционных систем, чтобы им пользовалось больше людей.


person CCCP    schedule 16.02.2014    source источник
comment
Другие окна в Vista (например, Блокнот или Проводник) отображаются нормально? Еще один момент: могу ли я предположить, что вы используете Windows Forms?   -  person Ming Slogar    schedule 17.02.2014
comment
Да, они появляются нормально. Я использую Windows Forms, правильно.   -  person CCCP    schedule 17.02.2014
comment
Кто-нибудь знает решение?   -  person CCCP    schedule 20.02.2014


Ответы (1)


Структура MARGINS должна быть:

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

DwmExtendFrameIntoClientArea должен поддерживаться в Vista. Я предполагаю, что Win7 просто более терпимо относится к усеченной структуре. Будьте очень осторожны с неуправляемыми типами данных.

person Iain Ballard    schedule 16.02.2014
comment
Не могли бы вы дать больше контекста? Что вы пробовали и как настраивали рассматриваемое окно? - person Iain Ballard; 17.02.2014
comment
Я добавил код, который вы мне дали, и отладил свое приложение в Vista. У него по-прежнему черные панели вместо прозрачных. - person CCCP; 17.02.2014