/// <summary>
        /// HWNDs the hook.
        /// </summary>
        /// <param name="hWnd">The h WND.</param>
        /// <param name="message">The message.</param>
        /// <param name="wParam">The w param.</param>
        /// <param name="lParam">The l param.</param>
        /// <param name="handled">if set to <c>true</c> [handled].</param>
        /// <returns></returns>
        private IntPtr HwndHook(IntPtr hWnd, int message, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            IntPtr returnval = IntPtr.Zero;

            switch (message)
            {
            case WmNccalcsize:
                // Hides the border
                handled = true;
                break;

            case WmNcpaint:
                // Works for Windows Vista and higher
                if (isHardwareRenderingEnabled)
                {
                    var m = new MARGINS {
                        bottomHeight = 1, leftWidth = 1, rightWidth = 1, topHeight = 1
                    };
                    UNSAFENATIVEMETHODS.DwmExtendFrameIntoClientArea(mHwnd, ref m);
                }
                handled = true;
                break;

            case WmNcactivate:
                /* As per http://msdn.microsoft.com/en-us/library/ms632633(VS.85).aspx , "-1" lParam does not
                 * repaint the nonclient area to reflect the state change. */
                returnval = UNSAFENATIVEMETHODS.DefWindowProc(hWnd, message, wParam, new IntPtr(-1));
                handled   = true;
                break;

            case WmGetminmaxinfo:
                /* From Lester's Blog (thanks @aeoth):
                 * http://blogs.msdn.com/b/llobo/archive/2006/08/01/maximizing-window-_2800_with-windowstyle_3d00_none_2900_-considering-taskbar.aspx */
                UNSAFENATIVEMETHODS.WmGetMinMaxInfo(hWnd, lParam, minimumSize);
                handled = true;
                break;
            }

            return(returnval);
        }