/// <inheritdoc />
        /// <summary>
        ///     Initializes a new instance of the <see cref="T:GameOverlay.Windows.StickyOverlayWindow" /> class.
        /// </summary>
        /// <param name="parentWindowHandle">The parent window handle.</param>
        /// <param name="options">The options.</param>
        public StickyOverlayWindow(IntPtr parentWindowHandle, OverlayOptions options) : base(options)
        {
            if (parentWindowHandle == IntPtr.Zero)
            {
                throw new ArgumentNullException(nameof(parentWindowHandle));
            }

            while (!IsInitialized)
            {
                Thread.Sleep(10);
            }

            ParentWindowHandle = parentWindowHandle;
            Install();
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="OverlayWindow" /> class.
        /// </summary>
        /// <param name="options">The options.</param>
        public OverlayWindow(OverlayOptions options)
        {
            WindowTitle   = options.WindowTitle;
            BypassTopmost = options.BypassTopmost;

            _windowThread = new Thread(() => WindowThreadProcedure(options.X, options.Y, options.Width, options.Height))
            {
                IsBackground = true,
                Priority     = ThreadPriority.BelowNormal
            };
            _windowThread.Start();

            while (!IsInitialized)
            {
                Thread.Sleep(10);
            }
        }