|
|
@ -33,6 +33,7 @@ namespace Perspex.Win32 |
|
|
private bool _isActive; |
|
|
private bool _isActive; |
|
|
private bool _decorated = true; |
|
|
private bool _decorated = true; |
|
|
private double _scaling = 1; |
|
|
private double _scaling = 1; |
|
|
|
|
|
private WindowState _showWindowState; |
|
|
|
|
|
|
|
|
public WindowImpl() |
|
|
public WindowImpl() |
|
|
{ |
|
|
{ |
|
|
@ -145,24 +146,14 @@ namespace Perspex.Win32 |
|
|
|
|
|
|
|
|
set |
|
|
set |
|
|
{ |
|
|
{ |
|
|
UnmanagedMethods.ShowWindowCommand command; |
|
|
if (UnmanagedMethods.IsWindowVisible(_hwnd)) |
|
|
|
|
|
|
|
|
switch (value) |
|
|
|
|
|
{ |
|
|
{ |
|
|
case WindowState.Minimized: |
|
|
ShowWindow(value); |
|
|
command = UnmanagedMethods.ShowWindowCommand.Minimize; |
|
|
} |
|
|
break; |
|
|
else |
|
|
case WindowState.Maximized: |
|
|
{ |
|
|
command = UnmanagedMethods.ShowWindowCommand.Maximize; |
|
|
_showWindowState = value; |
|
|
break; |
|
|
|
|
|
case WindowState.Normal: |
|
|
|
|
|
command = UnmanagedMethods.ShowWindowCommand.Restore; |
|
|
|
|
|
break; |
|
|
|
|
|
default: |
|
|
|
|
|
throw new ArgumentException("Invalid WindowState."); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
UnmanagedMethods.ShowWindow(_hwnd, command); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -267,7 +258,7 @@ namespace Perspex.Win32 |
|
|
|
|
|
|
|
|
public virtual void Show() |
|
|
public virtual void Show() |
|
|
{ |
|
|
{ |
|
|
UnmanagedMethods.ShowWindow(_hwnd, UnmanagedMethods.ShowWindowCommand.Normal); |
|
|
ShowWindow(_showWindowState); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public void BeginMoveDrag() |
|
|
public void BeginMoveDrag() |
|
|
@ -640,5 +631,28 @@ namespace Perspex.Win32 |
|
|
UnmanagedMethods.ScreenToClient(_hwnd, ref p); |
|
|
UnmanagedMethods.ScreenToClient(_hwnd, ref p); |
|
|
return new Point(p.X, p.Y); |
|
|
return new Point(p.X, p.Y); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void ShowWindow(WindowState state) |
|
|
|
|
|
{ |
|
|
|
|
|
UnmanagedMethods.ShowWindowCommand command; |
|
|
|
|
|
|
|
|
|
|
|
switch (state) |
|
|
|
|
|
{ |
|
|
|
|
|
case WindowState.Minimized: |
|
|
|
|
|
command = UnmanagedMethods.ShowWindowCommand.Minimize; |
|
|
|
|
|
break; |
|
|
|
|
|
case WindowState.Maximized: |
|
|
|
|
|
command = UnmanagedMethods.ShowWindowCommand.Maximize; |
|
|
|
|
|
break; |
|
|
|
|
|
case WindowState.Normal: |
|
|
|
|
|
command = UnmanagedMethods.ShowWindowCommand.Restore; |
|
|
|
|
|
break; |
|
|
|
|
|
default: |
|
|
|
|
|
throw new ArgumentException("Invalid WindowState."); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
UnmanagedMethods.ShowWindow(_hwnd, command); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|