使子窗口在无框电子窗口中与父窗口一起移动



我目前正在使用 ElectronJS 开发一个无框架应用程序,我试图让父窗口处理拖动、最小化、最大化和退出,以及一个用于子窗口的控制器来处理所有内容。但是,当我在 main.js 中将父窗口设置为主窗口时,当我移动父窗口时,内容窗口将保持不变。

以下是我的主要.js:

const electron = require('electron');
const url = require('url');
const path = require('path');
const {app, BrowserWindow, Menu} = electron;
let mainWindow;
let contentWindow;
app.on('ready', function createWindow(){
//Create window
mainWindow = new BrowserWindow({
width: 1280,
height: 720,
frame: false
})
contentWindow = new BrowserWindow({
width: 1280,
height: 720,
frame: false,
parent: mainWindow
})
//load html for window
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, 'assets/html/mainWindow.html'),
protocol:'file:',
slashes: true
}));
contentWindow.loadURL(url.format({
pathname: path.join(__dirname, 'assets/html/contentWindow.html'),
protocol:'file:',
slashes: true
}));
});

我的主窗口中的一个div.html-webkit-app-region: drag;允许它像普通窗口一样充当顶部栏。基本上我希望它移动两个窗口。

就像@Dennis L所说的,使用文档中提供的move事件。我虽然它只支持Mac,但我使用的是Windows。有一次我尝试过它的工作。

就我而言,我正在使用getPosition方法来跟踪移动或拖动过程中mainWindow位置。然后setPositionsecondWindow的价值来自mainWindow本身。

mainWindow.on('move', function() {
let position = mainWindow.getPosition();
secondWindow.setPosition(position[0], position[1]);
});

据我所知,您的目标基本上是,仅在具有父窗口和子窗口文档的macOS下支持的内容,我达到的孩子与父级一起移动的方式是,我侦听来自父项的移动事件并重新计算子项的位置。不是最好的方法,但它有效。

mainWindow.on("move", function () {"calculate and set new position here"}

相关内容

  • 没有找到相关文章

最新更新