private void OnRibbonMdiChildActivate(object sender, EventArgs e) { // Cast to correct type Form topForm = sender as Form; // Unhook from watching any previous mdi child if (_activeMdiChild != null) { _activeMdiChild.SizeChanged -= OnRibbonMdiChildSizeChanged; } _activeMdiChild = topForm.ActiveMdiChild; // Start watching any new mdi child if (_activeMdiChild != null) { _activeMdiChild.SizeChanged += OnRibbonMdiChildSizeChanged; } // Update the pendant buttons with reference to new child _buttonSpecClose.MdiChild = _activeMdiChild; _buttonSpecRestore.MdiChild = _activeMdiChild; _buttonSpecMin.MdiChild = _activeMdiChild; ButtonSpecManager.RecreateButtons(); PerformNeedPaint(true); // We never want the mdi child window to have a system menu, we provide the // pendant buttons as part of the ribbon and so replace the need for it. PI.SetMenu(new HandleRef(_ribbon, topForm.Handle), NullHandleRef); if (_activeMdiChild != null) { uint windowStyle = PI.GetWindowLong(_activeMdiChild.Handle, PI.GWL_.STYLE); windowStyle |= PI.WS_.SYSMENU; PI.SetWindowLong(_activeMdiChild.Handle, PI.GWL_.STYLE, windowStyle); } }
public WindowStylesHelper(IntPtr handle) { WinStyle = PI.GetWindowLong(handle, PI.GWL_.STYLE); WinExStyle = PI.GetWindowLong(handle, PI.GWL_.EXSTYLE); }