有没有办法将电子应用中的主窗口恢复到一定的大小?为了解释我想要完成的任务,让我举个例子:
当我打开Windows资源管理器时,它会打开一定大小并处于某个位置。然后我最大化该窗口并关闭资源管理器。下次当我重新启动资源管理器时,它会以与关闭它时相同的状态打开,即处于最大化状态。但是,当我单击恢复按钮时,资源管理器会在最大化之前恢复到宽度/高度和位置。
我也想在我的电子应用程序中完成相同的工作。然而,这没有发生。
我正在做的是当我的应用程序关闭时,我使用(win.getBounds()
)捕获应用程序窗口的尺寸(宽度,高度)和位置(x,y坐标),并使用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);
这也很有效。然而,我现在唯一的选择是最大化窗口。我无法找到任何选项,可以在窗口最大化之前将其恢复到一个大小。
例如,假设用户以1024x768像素尺寸启动应用程序。然后,用户最大化应用程序窗口,然后关闭它。当用户重新启动应用程序时,它会以关闭的大小打开,我看到的唯一选项是最大化窗口。我正在寻找的是一个将窗口大小恢复到1024x768px的选项。
我在这里查看了文档:https://github.com/electron/electron/blob/master/docs/api/browser-window.md,但遗憾的是在那里找不到任何东西。
我使用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;
}