c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

electron如何创建新窗口模态框并实现主进程传值给子进程

陈文婷 2023-09-15编程经验
创建新窗口模态框首先,我们需要先安装electron,然后在代码中引入相关模块。//引入electron模块constelectron=require('electron')//引入BrowserWi

创建新窗口模态框

首先,我们需要先安装 electron,然后在代码中引入相关模块。

// 引入 electron 模块
const electron = require('electron')
// 引入 BrowserWindow 模块
const BrowserWindow = electron.BrowserWindow

然后,我们可以使用以下代码创建一个新窗口:

// 创建一个新窗口
let newWindow = new BrowserWindow({
    width: 800,
    height: 600,
    // 设置父窗口为当前窗口
    modal: true,
    parent: electron.remote.getCurrentWindow()
});

// 加载新窗口的 HTML 文件
newWindow.loadFile('new-window.html');

这里设置了新窗口的大小,并将其设为了模态框。同时,使用 parent 属性将父窗口指定为当前窗口。

实现主进程传值给子进程

在新窗口中,我们可以使用 node.js 的模块来获取主进程发送的消息。例如,在新窗口的渲染进程中可以使用以下代码获取传递的值:

const { ipcRenderer } = require('electron')

ipcRenderer.on('message-from-main', (event, message) => {
    console.log(message) // 打印主进程传递的消息
})

这里使用了 ipcRenderer 模块来监听事件,当主进程发送一个名为 message-from-main 的事件时,渲染进程就能接收到并执行对应的回调函数,从而获取传递的值。

完整代码示例

以下是一个完整的示例,用于演示如何创建一个新窗口模态框,并在其中实现主进程传值给子进程:

// 引入 electron 模块
const electron = require('electron')
// 引入 BrowserWindow 模块
const BrowserWindow = electron.BrowserWindow
// 引入 ipcMain 模块
const ipcMain = electron.ipcMain

// 监听主进程发送的 'open-new-window' 事件
ipcMain.on('open-new-window', (event, arg) => {
  // 创建一个新窗口
  let newWindow = new BrowserWindow({
      width: 800,
      height: 600,
      // 设置父窗口为当前窗口
      modal: true,
      parent: electron.remote.getCurrentWindow()
  });

  // 加载新窗口的 HTML 文件
  newWindow.loadFile('new-window.html');

  // 在新窗口中打开开发者工具
  newWindow.webContents.openDevTools()

  // 发送消息给新窗口
  newWindow.webContents.send('message-from-main', 'Hello from main window!');
})

// 在新窗口的渲染进程中获取主进程发送的消息
const { ipcRenderer } = require('electron')
ipcRenderer.on('message-from-main', (event, message) => {
  console.log(message)
})

// 点击按钮时触发事件,向主进程发送消息
document.getElementById('btn-send-message').addEventListener('click', () => {
  electron.ipcRenderer.send('message-from-new-window', 'Hello from new window!');
})

总结

通过以上代码示例,我们可以看到如何在 electron 中创建新窗口模态框,并且实现主进程与子进程之间的通信。在实现过程中,需要先引入相关模块,接着使用 ipcMain 和 ipcRenderer 模块监听和发送事件,以及使用 BrowserWindow 模块创建新窗口并设置其相关属性。同时需要注意,子进程并不能直接获取主进程的变量,需要通过事件的方式传递数据。

文章评论