如何在电子应用程序中恢复默认窗口大小?

Gau*_*tri 6 electron

有没有办法将电子应用程序中的主窗口恢复到一定大小?为了解释我想要完成的工作,让我举个例子:

当我打开 Windows 资源管理器时,它会以特定大小和特定位置打开。然后我最大化该窗口并关闭资源管理器。下次当我重新启动资源管理器时,它以与我关闭时相同的状态打开,即处于最大化状态。但是,当我单击恢复按钮时,资源管理器会恢复到最大化之前的宽度/高度和位置。

我也想在我的电子应用程序中完成同样的工作。然而,这并没有发生。

我正在做的是当我的应用程序关闭时,我使用 ( win.getBounds())捕获应用程序窗口的尺寸(宽度、高度)和位置(x、y 坐标)并使用electron-config. 这是我的代码的样子:

  const Config = require('electron-config')
  const config = new Config();

  mainWindow.on('close', () => {
    config.set('winBounds', mainWindow.getBounds())
  });
Run Code Online (Sandbox Code Playgroud)

现在当我启动应用程序时,我从配置文件中读取设置(实际上电子配置为我做了)并使用它来设置窗口的初始尺寸/位置。我正在使用如下代码:

  let opts = {
    show: false,
    icon: path.join(__dirname, 'app-window-icon.png')
  };
  Object.assign(opts, config.get('winBounds'));
  mainWindow = new BrowserWindow(opts);
Run Code Online (Sandbox Code Playgroud)

这也很好用。然而,我现在唯一的选择是最大化窗口。我找不到任何选项来将窗口恢复到最大化之前的大小。

例如,假设用户以 1024x768 像素尺寸启动应用程序。用户然后最大化应用程序窗口,然后关闭它。当用户重新启动应用程序时,它会以关闭时的大小打开,我看到的唯一选项是最大化窗口。我正在寻找的是将窗口大小恢复为 1024x768px 的选项。

我在这里查找了文档:https : //github.com/electron/electron/blob/master/docs/api/browser-window.md但不幸的是在那里找不到任何东西。

Mar*_*arc 15

我在这里使用了解决方案,该解决方案涉及将您的窗口大小和位置保持在其中electron-settings,并且效果很好。

windowStateKeeper在您的代码中包含该函数,然后createMainWindow按如下方式调整您的函数:

function createMainWindow() {
    const mainWindowStateKeeper = windowStateKeeper('main');
    const win = new electron.BrowserWindow({
        title: 'main',
        x: mainWindowStateKeeper.x,
        y: mainWindowStateKeeper.y,
        width: mainWindowStateKeeper.width,
        height: mainWindowStateKeeper.height
    });
    mainWindowStateKeeper.track(win);

    win.loadURL(`file://${__dirname}/index.html`);
    win.on('closed', onClosed);

    return win;
}
Run Code Online (Sandbox Code Playgroud)