|
|
@@ -31,6 +31,7 @@ namespace Avalonia.Win32
|
|
|
private IInputRoot _owner;
|
|
|
private bool _trackingMouse;
|
|
|
private bool _decorated = true;
|
|
|
+ private bool _resizable = true;
|
|
|
private double _scaling = 1;
|
|
|
private WindowState _showWindowState;
|
|
|
private FramebufferManager _framebuffer;
|
|
|
@@ -237,11 +238,17 @@ namespace Avalonia.Win32
|
|
|
|
|
|
var style = (UnmanagedMethods.WindowStyles)UnmanagedMethods.GetWindowLong(_hwnd, -16);
|
|
|
|
|
|
- style |= UnmanagedMethods.WindowStyles.WS_OVERLAPPEDWINDOW;
|
|
|
+ var systemDecorationStyles = UnmanagedMethods.WindowStyles.WS_OVERLAPPED
|
|
|
+ | UnmanagedMethods.WindowStyles.WS_CAPTION
|
|
|
+ | UnmanagedMethods.WindowStyles.WS_SYSMENU
|
|
|
+ | UnmanagedMethods.WindowStyles.WS_MINIMIZEBOX
|
|
|
+ | UnmanagedMethods.WindowStyles.WS_MAXIMIZEBOX;
|
|
|
+
|
|
|
+ style |= systemDecorationStyles;
|
|
|
|
|
|
if (!value)
|
|
|
{
|
|
|
- style ^= UnmanagedMethods.WindowStyles.WS_OVERLAPPEDWINDOW;
|
|
|
+ style ^= systemDecorationStyles;
|
|
|
}
|
|
|
|
|
|
UnmanagedMethods.RECT windowRect;
|
|
|
@@ -799,10 +806,10 @@ namespace Avalonia.Win32
|
|
|
public void ShowTaskbarIcon(bool value)
|
|
|
{
|
|
|
var style = (UnmanagedMethods.WindowStyles)UnmanagedMethods.GetWindowLong(_hwnd, -20);
|
|
|
-
|
|
|
- style &= ~(UnmanagedMethods.WindowStyles.WS_VISIBLE);
|
|
|
|
|
|
- style |= UnmanagedMethods.WindowStyles.WS_EX_TOOLWINDOW;
|
|
|
+ style &= ~(UnmanagedMethods.WindowStyles.WS_VISIBLE);
|
|
|
+
|
|
|
+ style |= UnmanagedMethods.WindowStyles.WS_EX_TOOLWINDOW;
|
|
|
if (value)
|
|
|
style |= UnmanagedMethods.WindowStyles.WS_EX_APPWINDOW;
|
|
|
else
|
|
|
@@ -817,5 +824,23 @@ namespace Avalonia.Win32
|
|
|
UnmanagedMethods.ShowWindow(_hwnd, windowPlacement.ShowCmd);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public void CanResize(bool value)
|
|
|
+ {
|
|
|
+ if (value == _resizable)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var style = (UnmanagedMethods.WindowStyles)UnmanagedMethods.GetWindowLong(_hwnd, -16);
|
|
|
+
|
|
|
+ if (value)
|
|
|
+ style |= UnmanagedMethods.WindowStyles.WS_SIZEFRAME;
|
|
|
+ else
|
|
|
+ style &= ~(UnmanagedMethods.WindowStyles.WS_SIZEFRAME);
|
|
|
+
|
|
|
+ UnmanagedMethods.SetWindowLong(_hwnd, -16, (uint)style);
|
|
|
+ _resizable = value;
|
|
|
+ }
|
|
|
}
|
|
|
}
|