|
@@ -1,6 +1,10 @@
|
|
|
-using System;
|
|
|
+using Avalonia.Controls;
|
|
|
+using fis.Managers;
|
|
|
+using fis.Utilities;
|
|
|
+using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
+using System.Linq;
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
|
namespace fis.Win
|
|
@@ -623,6 +627,7 @@ namespace fis.Win
|
|
|
WH_MOUSE_LL = 14
|
|
|
}
|
|
|
|
|
|
+ private static WindowState _windowState = WindowState.Normal;
|
|
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
|
public struct POINT
|
|
@@ -652,6 +657,22 @@ namespace fis.Win
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public static WindowState WindowState
|
|
|
+ {
|
|
|
+ get {
|
|
|
+ return _windowState;
|
|
|
+ }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ if (_windowState != value)
|
|
|
+ {
|
|
|
+ _windowState = value;
|
|
|
+ string[] list = { ((int)_windowState).ToString() };
|
|
|
+ BrowserManager.ExecuteJS(TargetMethodName.OnWindowStateChange, list.ToList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 声明鼠标钩子的封送结构类型
|
|
|
/// </summary>
|
|
@@ -838,11 +859,15 @@ namespace fis.Win
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//Start drag the window.
|
|
|
public static void BeginWindowDrag(string windowName)
|
|
|
{
|
|
|
if (_windowHandles.TryGetValue(windowName, out var windowHandle))
|
|
|
{
|
|
|
+ if (WindowState == WindowState.Maximized) {
|
|
|
+ WindowState = WindowState.Normal;
|
|
|
+ }
|
|
|
if (GetCursorPos(out var dragPoint))
|
|
|
{
|
|
|
if (GetWindowRect(windowHandle, out var rect))
|
|
@@ -884,6 +909,7 @@ namespace fis.Win
|
|
|
{
|
|
|
if (_windowHandles.TryGetValue(windowName, out var windowHandle))
|
|
|
{
|
|
|
+ WindowState = WindowState.Minimized;
|
|
|
//SW_MINIMIZE = 6
|
|
|
//SW_SHOWMINIMIZED = 2
|
|
|
//SW_SHOWMINNOACTIVE = 7
|
|
@@ -898,6 +924,12 @@ namespace fis.Win
|
|
|
{
|
|
|
if (_windowHandles.TryGetValue(windowName, out var windowHandle))
|
|
|
{
|
|
|
+ if (WindowState == WindowState.Maximized)
|
|
|
+ {
|
|
|
+ RestoreWindow(windowName);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ WindowState = WindowState.Maximized;
|
|
|
//SW_MAXIMIZE = 3
|
|
|
ShowWindow(windowHandle, 3);
|
|
|
EndWindowDrag(windowName);
|
|
@@ -909,6 +941,7 @@ namespace fis.Win
|
|
|
{
|
|
|
if (_windowHandles.TryGetValue(windowName, out var windowHandle))
|
|
|
{
|
|
|
+ WindowState = WindowState.Normal;
|
|
|
//SW_RESTORE = 9
|
|
|
ShowWindow(windowHandle, 9);
|
|
|
EndWindowDrag(windowName);
|