代码之家  ›  专栏  ›  技术社区  ›  Gaurav Mantri

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

  •  2
  • Gaurav Mantri  · 技术社区  · 6 年前

    有没有办法把电子应用程序的主窗口恢复到一定的大小?为了解释我的目标,让我举个例子:

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

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

    我所做的是当我的应用程序关闭时,我使用( win.getBounds() )并使用 electron-config 是的。这就是我的代码:

      const Config = require('electron-config')
      const config = new Config();
    
      mainWindow.on('close', () => {
        config.set('winBounds', mainWindow.getBounds())
      });
    

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

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

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

    例如,假设用户使用1024x768px维度启动应用程序。然后,用户最大化应用程序窗口,然后关闭它。当用户重新启动应用程序时,它会打开它关闭的大小,而我所看到的唯一选项就是使窗口最大化。我要找的是一个选项,以恢复窗口大小为1024x768px。

    我在这里查阅了文件: https://github.com/electron/electron/blob/master/docs/api/browser-window.md 但不幸的是在那里什么也找不到。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Marc    5 年前

    我用了 solution here 其中包括将窗口大小和位置保持在 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;
    }