static Rectangle GetVisibleRectangle(WindowInfo wi, Screen s)
{
Rectangle resultWindowRect = new Rectangle(
wi.rcWindow.left,
wi.rcWindow.top,
wi.rcWindow.right - wi.rcWindow.left,
wi.rcWindow.bottom - wi.rcWindow.top
);
WindowBorderOnScreenFlags flags = new WindowBorderOnScreenFlags(wi, s);
if (!flags.leftBorderOnScreen)
resultWindowRect.X = s.WorkingArea.X;
else {
resultWindowRect.X = !flags.rightBorderOnScreen ?
s.WorkingArea.Right - wi.rcWindow.right + wi.rcWindow.left :
wi.rcWindow.left;
}
if (!flags.topBorderOnScreen)
resultWindowRect.Y = s.WorkingArea.Y;
else {
resultWindowRect.Y = !flags.bottomBorderOnScreen ?
s.WorkingArea.Bottom - wi.rcWindow.bottom + wi.rcWindow.top :
wi.rcWindow.top;
}
return resultWindowRect;
}