/// <summary> /// Методы, реализующие эффект прозрачного стекла /// </summary> /// <param name="msg"></param> protected override void WndProc(ref Message msg) { base.WndProc(ref msg); // Вызываем базовый метод if (Environment.OSVersion.Version.Major >= 6.0) // Если версия видовс больше 6 (то есть виста и выше, то будем обрабатывать сообщения для прозрачности) { const int WM_DWMCOMPOSITIONCHANGED = 0x031E; switch (msg.Msg) { case WM_DWMCOMPOSITIONCHANGED: if (!DwmApi.DwmIsCompositionEnabled()) // если режим aero не включен, зануляем область стекла { m_glassMargins = null; } break; } } }
private void OnClientArea() { ResetDwmBlurBehind(); m_glassMargins = new DwmApi.MARGINS(0, 0, 0, 32); // устанавливаем отступы от края, которые будут прозрачными if (DwmApi.DwmIsCompositionEnabled()) DwmApi.DwmExtendFrameIntoClientArea(this.Handle, m_glassMargins); // если режим aero включён, задаём область где будет стекло this.Invalidate(); }