예제 #1
0
        public FormShadowDecorator(Form window, bool enable = true)
        {
            _window           = window;
            _parentWindowHwnd = window.Handle;

            _topFormShadow    = new FormShadowElement(FormShadowDockPositon.Top, _parentWindowHwnd, this);
            _leftFormShadow   = new FormShadowElement(FormShadowDockPositon.Left, _parentWindowHwnd, this);
            _bottomFormShadow = new FormShadowElement(FormShadowDockPositon.Bottom, _parentWindowHwnd, this);
            _rightFormShadow  = new FormShadowElement(FormShadowDockPositon.Right, _parentWindowHwnd, this);

            _shadows.Add(_topFormShadow);
            _shadows.Add(_leftFormShadow);
            _shadows.Add(_bottomFormShadow);
            _shadows.Add(_rightFormShadow);

            AssignHandle(_parentWindowHwnd);


            User32.ShowWindow(_topFormShadow.Handle, ShowWindowStyles.SW_SHOWNOACTIVATE);
            User32.ShowWindow(_leftFormShadow.Handle, ShowWindowStyles.SW_SHOWNOACTIVATE);
            User32.ShowWindow(_bottomFormShadow.Handle, ShowWindowStyles.SW_SHOWNOACTIVATE);
            User32.ShowWindow(_rightFormShadow.Handle, ShowWindowStyles.SW_SHOWNOACTIVATE);

            _isEnabled = false;
            AlignSideShadowToTopMost();
            Enable(true);
        }
예제 #2
0
        private void CloseShadows()
        {
            foreach (var sideShadow in _shadows)
            {
                sideShadow.Close();
            }

            _shadows.Clear();

            _topFormShadow    = null;
            _bottomFormShadow = null;
            _leftFormShadow   = null;
            _rightFormShadow  = null;
        }