func (fb *FormBase) SaveState() error { if err := fb.clientComposite.SaveState(); err != nil { return err } var wp win.WINDOWPLACEMENT wp.Length = uint32(unsafe.Sizeof(wp)) if !win.GetWindowPlacement(fb.hWnd, &wp) { return lastError("GetWindowPlacement") } state := fmt.Sprint( wp.Flags, wp.ShowCmd, wp.PtMinPosition.X, wp.PtMinPosition.Y, wp.PtMaxPosition.X, wp.PtMaxPosition.Y, wp.RcNormalPosition.Left, wp.RcNormalPosition.Top, wp.RcNormalPosition.Right, wp.RcNormalPosition.Bottom) if err := fb.putState(state); err != nil { return err } return nil }
func (mw *MainWindow) SetFullscreen(fullscreen bool) error { if fullscreen == mw.Fullscreen() { return nil } if fullscreen { var mi win.MONITORINFO mi.CbSize = uint32(unsafe.Sizeof(mi)) if mw.windowPlacement == nil { mw.windowPlacement = new(win.WINDOWPLACEMENT) } if !win.GetWindowPlacement(mw.hWnd, mw.windowPlacement) { return lastError("GetWindowPlacement") } if !win.GetMonitorInfo(win.MonitorFromWindow( mw.hWnd, win.MONITOR_DEFAULTTOPRIMARY), &mi) { return newError("GetMonitorInfo") } if err := mw.ensureStyleBits(win.WS_OVERLAPPEDWINDOW, false); err != nil { return err } if r := mi.RcMonitor; !win.SetWindowPos( mw.hWnd, win.HWND_TOP, r.Left, r.Top, r.Right-r.Left, r.Bottom-r.Top, win.SWP_FRAMECHANGED|win.SWP_NOOWNERZORDER) { return lastError("SetWindowPos") } } else { if err := mw.ensureStyleBits(win.WS_OVERLAPPEDWINDOW, true); err != nil { return err } if !win.SetWindowPlacement(mw.hWnd, mw.windowPlacement) { return lastError("SetWindowPlacement") } if !win.SetWindowPos(mw.hWnd, 0, 0, 0, 0, 0, win.SWP_FRAMECHANGED|win.SWP_NOMOVE| win.SWP_NOOWNERZORDER|win.SWP_NOSIZE|win.SWP_NOZORDER) { return lastError("SetWindowPos") } } return nil }