Merge pull request #899 from ghost1372/BlurWindow
Disable Acrylic while Moving or Resizing BlurWindow
This commit is contained in:
2 files changed
+46
-14
No files matched your search
@@ -1,4 +1,5 @@
|
|||||||
using System.Runtime.InteropServices;
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using HandyControl.Data;
|
using HandyControl.Data;
|
||||||
using HandyControl.Tools;
|
using HandyControl.Tools;
|
||||||
using HandyControl.Tools.Helper;
|
using HandyControl.Tools.Helper;
|
||||||
@@ -8,13 +9,39 @@ namespace HandyControl.Controls
|
|||||||
{
|
{
|
||||||
public class BlurWindow : Window
|
public class BlurWindow : Window
|
||||||
{
|
{
|
||||||
|
protected override void OnSourceInitialized(EventArgs e)
|
||||||
|
{
|
||||||
|
var versionInfo = SystemHelper.GetSystemVersionInfo();
|
||||||
|
if (versionInfo >= SystemVersionInfo.Windows10_1903)
|
||||||
|
{
|
||||||
|
this.GetHwndSource()?.AddHook(HwndSourceHook);
|
||||||
|
}
|
||||||
|
|
||||||
|
base.OnSourceInitialized(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
private IntPtr HwndSourceHook(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam, ref bool handled)
|
||||||
|
{
|
||||||
|
switch (msg)
|
||||||
|
{
|
||||||
|
case InteropValues.WM_ENTERSIZEMOVE:
|
||||||
|
EnableBlur(this, false);
|
||||||
|
break;
|
||||||
|
case InteropValues.WM_EXITSIZEMOVE:
|
||||||
|
EnableBlur(this, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return IntPtr.Zero;
|
||||||
|
}
|
||||||
|
|
||||||
public override void OnApplyTemplate()
|
public override void OnApplyTemplate()
|
||||||
{
|
{
|
||||||
base.OnApplyTemplate();
|
base.OnApplyTemplate();
|
||||||
EnableBlur(this);
|
EnableBlur(this, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void EnableBlur(Window window)
|
private static void EnableBlur(Window window, bool isEnabled)
|
||||||
{
|
{
|
||||||
var versionInfo = SystemHelper.GetSystemVersionInfo();
|
var versionInfo = SystemHelper.GetSystemVersionInfo();
|
||||||
|
|
||||||
@@ -23,21 +50,24 @@ namespace HandyControl.Controls
|
|||||||
|
|
||||||
accentPolicy.AccentFlags = 2;
|
accentPolicy.AccentFlags = 2;
|
||||||
|
|
||||||
if (versionInfo >= SystemVersionInfo.Windows10_1903)
|
if (isEnabled)
|
||||||
{
|
{
|
||||||
accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND;
|
if (versionInfo >= SystemVersionInfo.Windows10_1809)
|
||||||
}
|
{
|
||||||
else if (versionInfo >= SystemVersionInfo.Windows10_1809)
|
accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_ACRYLICBLURBEHIND;
|
||||||
{
|
}
|
||||||
accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_ACRYLICBLURBEHIND;
|
else if (versionInfo >= SystemVersionInfo.Windows10)
|
||||||
}
|
{
|
||||||
else if (versionInfo >= SystemVersionInfo.Windows10)
|
accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND;
|
||||||
{
|
}
|
||||||
accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND;
|
else
|
||||||
|
{
|
||||||
|
accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_TRANSPARENTGRADIENT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_TRANSPARENTGRADIENT;
|
accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND;
|
||||||
}
|
}
|
||||||
|
|
||||||
accentPolicy.GradientColor = ResourceHelper.GetResource<uint>(ResourceToken.BlurGradientValue);
|
accentPolicy.GradientColor = ResourceHelper.GetResource<uint>(ResourceToken.BlurGradientValue);
|
||||||
|
|||||||
@@ -72,6 +72,8 @@ namespace HandyControl.Tools.Interop
|
|||||||
WM_LBUTTONUP = 0x0202,
|
WM_LBUTTONUP = 0x0202,
|
||||||
WM_LBUTTONDBLCLK = 0x0203,
|
WM_LBUTTONDBLCLK = 0x0203,
|
||||||
WM_RBUTTONUP = 0x0205,
|
WM_RBUTTONUP = 0x0205,
|
||||||
|
WM_ENTERSIZEMOVE = 0x0231,
|
||||||
|
WM_EXITSIZEMOVE = 0x0232,
|
||||||
WM_CLIPBOARDUPDATE = 0x031D,
|
WM_CLIPBOARDUPDATE = 0x031D,
|
||||||
WM_USER = 0x0400,
|
WM_USER = 0x0400,
|
||||||
WS_VISIBLE = 0x10000000,
|
WS_VISIBLE = 0x10000000,
|
||||||
|
|||||||
Reference in new issue
Block a user