Пример #1
0
        /// <summary>WindowのStyleを変更します。</summary>
        /// <param name="hWnd">ウィンドウハンドルを表すIntPtr。</param>
        /// <param name="styleFlag">Windowに設定するStyleを表すMetroWindowStyle列挙型フラグ。</param>
        public static void ChangeWindowStyle(IntPtr hWnd, MetroWindowStyle styleFlag)
        {
            var style = WindowApis.GetWindowLong(hWnd, ApiConstants.GWL_STYLE);

            if ((styleFlag & MetroWindowStyle.CanMaxmize) == MetroWindowStyle.CanMaxmize)
            {
                style |= ApiConstants.WS_MAXIMIZEBOX;
            }
            else
            {
                style &= ~ApiConstants.WS_MAXIMIZEBOX;
            }

            if ((styleFlag & MetroWindowStyle.CanMinimize) == MetroWindowStyle.CanMinimize)
            {
                style |= ApiConstants.WS_MINIMIZEBOX;
            }
            else
            {
                style &= ~ApiConstants.WS_MINIMIZEBOX;
            }

            if ((styleFlag & MetroWindowStyle.ShowSystemMenu) == MetroWindowStyle.ShowSystemMenu)
            {
                style |= ApiConstants.WS_SYSMENU;
            }
            else
            {
                style &= ~ApiConstants.WS_SYSMENU;
            }

            WindowApis.SetWindowLong(hWnd, ApiConstants.GWL_STYLE, style);
        }
        /// <summary>プロパティを適用します。</summary>
        private void applyProperties()
        {
            if (this.AssociatedObject == null)
            {
                return;
            }

            var hWnd = new WindowInteropHelper(this.AssociatedObject).Handle;
            MetroWindowStyle styleFlag = 0;

            if (this.SystemMenuVisible)
            {
                styleFlag |= MetroWindowStyle.ShowSystemMenu;
            }
            if (this.CanMaxmize)
            {
                styleFlag |= MetroWindowStyle.CanMaxmize;
            }
            if (this.CanMinimize)
            {
                styleFlag |= MetroWindowStyle.CanMinimize;
            }

            WindowApis.ChangeWindowStyle(hWnd, styleFlag);
        }