using System;
using System.Drawing;
public static class DisplayFusionFunction
{
public static void Run(IntPtr windowHandle)
{
if (windowHandle == IntPtr.Zero)
return;
int[] WindowSplit = new int[] { 3, 1, 1, 3 };
int WindowSplitPosition = 0;
int windowX = 0, windowY = 0, windowW = 0, windowH = 0;
Rectangle[] monitors = BFS.Monitor.GetMonitorWorkAreas();
Rectangle window = BFS.Window.GetBounds(windowHandle);
Rectangle monitor = new Rectangle();
switch (WindowSplitPosition)
{
case 0:
monitor = monitors[0];
windowX = monitor.X;
windowW = (monitor.Width / (WindowSplit[0] + WindowSplit[1])) * WindowSplit[0];
break;
case 1:
monitor = monitors[0];
windowX = monitor.X + ((monitor.Width / (WindowSplit[0] + WindowSplit[1])) * WindowSplit[0]);
windowW = (monitor.Width / (WindowSplit[0] + WindowSplit[1])) * WindowSplit[1];
break;
case 2:
monitor = monitors[monitors.Length - 1];
windowX = monitor.X;
windowW = (monitor.Width / (WindowSplit[2] + WindowSplit[3])) * WindowSplit[2];
break;
case 3:
monitor = monitors[monitors.Length - 1];
windowX = monitor.X + ((monitor.Width / (WindowSplit[2] + WindowSplit[3])) * WindowSplit[2]);
windowW = (monitor.Width / (WindowSplit[2] + WindowSplit[3])) * WindowSplit[3];
break;
}
windowY = monitor.Y;
windowH = monitor.Height;
if (windowX == window.X &&
windowY == window.Y &&
windowW == window.Width &&
windowH == window.Height)
return;
BFS.Window.SetSizeAndLocation(windowHandle, windowX, windowY, windowW, windowH);
BFS.Window.Focus(windowHandle);
}
}