using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace Sashulin
{
class WinApi
{
[DllImport("user32.dll", SetLastError = true)]
public static extern bool MoveWindow(IntPtr hwnd, int x, int y, int cx, int cy, bool repaint);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, SetWindowPosFlags uFlags);
}
[Flags]
internal enum SetWindowPosFlags : uint
{
///
/// If the calling thread and the thread that owns the window are attached to different input queues,
/// the system posts the request to the thread that owns the window. This prevents the calling thread from
/// blocking its execution while other threads process the request.
///
/// SWP_ASYNCWINDOWPOS
AsyncWindowPosition = 0x4000,
///
/// Prevents generation of the WM_SYNCPAINT message.
///
/// SWP_DEFERERASE
DeferErase = 0x2000,
///
/// Draws a frame (defined in the window's class description) around the window.
///
/// SWP_DRAWFRAME
DrawFrame = 0x0020,
///
/// Applies new frame styles set using the SetWindowLong function. Sends a WM_NCCALCSIZE message to
/// the window, even if the window's size is not being changed. If this flag is not specified, WM_NCCALCSIZE
/// is sent only when the window's size is being changed.
///
/// SWP_FRAMECHANGED
FrameChanged = 0x0020,
///
/// Hides the window.
///
/// SWP_HIDEWINDOW
HideWindow = 0x0080,
///
/// Does not activate the window. If this flag is not set, the window is activated and moved to the
/// top of either the topmost or non-topmost group (depending on the setting of the hWndInsertAfter parameter).
///
/// SWP_NOACTIVATE
NoActivate = 0x0010,
///
/// Discards the entire contents of the client area. If this flag is not specified, the valid contents
/// of the client area are saved and copied back into the client area after the window is sized or repositioned.
///
/// SWP_NOCOPYBITS
NoCopyBits = 0x0100,
///
/// Retains the current position (ignores X and Y parameters).
///
/// SWP_NOMOVE
NoMove = 0x0002,
///
/// Does not change the owner window's position in the Z order.
///
/// SWP_NOOWNERZORDER
NoOwnerZOrder = 0x0200,
///
/// Does not redraw changes. If this flag is set, no repainting of any kind occurs. This applies to
/// the client area, the nonclient area (including the title bar and scroll bars), and any part of the parent
/// window uncovered as a result of the window being moved. When this flag is set, the application must
/// explicitly invalidate or redraw any parts of the window and parent window that need redrawing.
///
/// SWP_NOREDRAW
NoRedraw = 0x0008,
///
/// Same as the SWP_NOOWNERZORDER flag.
///
/// SWP_NOREPOSITION
NoReposition = 0x0200,
///
/// Prevents the window from receiving the WM_WINDOWPOSCHANGING message.
///
/// SWP_NOSENDCHANGING
NoSendChanging = 0x0400,
///
/// Retains the current size (ignores the cx and cy parameters).
///
/// SWP_NOSIZE
NoSize = 0x0001,
///
/// Retains the current Z order (ignores the hWndInsertAfter parameter).
///
/// SWP_NOZORDER
NoZOrder = 0x0004,
///
/// Displays the window.
///
/// SWP_SHOWWINDOW
ShowWindow = 0x0040,
}
}