using System; using System.Runtime.InteropServices; namespace TweetDuck.Video{ static class NativeMethods{ private const int GWL_HWNDPARENT = -8; [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); [DllImport("user32.dll")] private static extern int SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong); [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow(); [StructLayout(LayoutKind.Sequential)] public struct RECT{ public int Left; public int Top; public int Right; public int Bottom; } public static void SetWindowOwner(IntPtr child, IntPtr owner){ SetWindowLong(child, GWL_HWNDPARENT, owner); /* * "You must not call SetWindowLong with the GWL_HWNDPARENT index to change the parent of a child window" * * ...which I'm not sure they're saying because this is completely unsupported and causes demons to come out of sewers * ...or because GWL_HWNDPARENT actually changes the OWNER and is therefore NOT changing the parent of a child window * * ...so technically, this is following the documentation to the word. */ } } }